Skip to content
Snippets Groups Projects

Rework the proxy steps, such that they are retried up to three times if needed

Merged Karel van Klink requested to merge feature/rework-pp-steps into develop
4 files
+ 45
17
Compare changes
  • Side-by-side
  • Inline
Files
4
@@ -4,6 +4,7 @@ LSO is responsible for executing Ansible playbooks, that deploy subscriptions.
@@ -4,6 +4,7 @@ LSO is responsible for executing Ansible playbooks, that deploy subscriptions.
"""
"""
import json
import json
import logging
import logging
 
from typing import NoReturn
import requests
import requests
from orchestrator import inputstep
from orchestrator import inputstep
@@ -20,6 +21,7 @@ from gso.products.product_types.device import DeviceProvisioning
@@ -20,6 +21,7 @@ from gso.products.product_types.device import DeviceProvisioning
from gso.products.product_types.iptrunk import Iptrunk, IptrunkProvisioning
from gso.products.product_types.iptrunk import Iptrunk, IptrunkProvisioning
logger = logging.getLogger(__name__)
logger = logging.getLogger(__name__)
 
DEFAULT_LABEL = "Provisioning proxy is running. Please come back later for the results."
class CUDOperation(strEnum):
class CUDOperation(strEnum):
@@ -140,7 +142,7 @@ def deprovision_ip_trunk(subscription: Iptrunk, process_id: UUIDstr, dry_run: bo
@@ -140,7 +142,7 @@ def deprovision_ip_trunk(subscription: Iptrunk, process_id: UUIDstr, dry_run: bo
@inputstep("Await provisioning proxy results", assignee=Assignee("SYSTEM"))
@inputstep("Await provisioning proxy results", assignee=Assignee("SYSTEM"))
def await_pp_results(subscription: SubscriptionModel, label_text: str) -> FormGenerator:
def await_pp_results(subscription: SubscriptionModel, label_text: str = DEFAULT_LABEL) -> FormGenerator:
class ProvisioningResultPage(FormPage):
class ProvisioningResultPage(FormPage):
class Config:
class Config:
title = f"Deploying {subscription.product.name}..."
title = f"Deploying {subscription.product.name}..."
@@ -150,7 +152,7 @@ def await_pp_results(subscription: SubscriptionModel, label_text: str) -> FormGe
@@ -150,7 +152,7 @@ def await_pp_results(subscription: SubscriptionModel, label_text: str) -> FormGe
confirm: Accept = Accept("INCOMPLETE")
confirm: Accept = Accept("INCOMPLETE")
@validator("pp_run_results", allow_reuse=True, pre=True, always=True)
@validator("pp_run_results", allow_reuse=True, pre=True, always=True)
def run_results_must_be_given(cls, run_results: dict) -> dict | None:
def run_results_must_be_given(cls, run_results: dict) -> dict | NoReturn:
if run_results is None:
if run_results is None:
raise ValueError("Run results may not be empty. Wait for the provisioning proxy to finish.")
raise ValueError("Run results may not be empty. Wait for the provisioning proxy to finish.")
return run_results
return run_results
@@ -172,8 +174,9 @@ def confirm_pp_results(state: State) -> FormGenerator:
@@ -172,8 +174,9 @@ def confirm_pp_results(state: State) -> FormGenerator:
run_status: str = ReadOnlyField(state["pp_run_results"]["status"])
run_status: str = ReadOnlyField(state["pp_run_results"]["status"])
run_results: LongText = ReadOnlyField(f"{state['pp_run_results']['output']}")
run_results: LongText = ReadOnlyField(f"{state['pp_run_results']['output']}")
 
pp_result_good_enough: bool = state["pp_run_results"]["return_code"] == 0
confirm: Accept = Accept("INCOMPLETE")
confirm: Accept = Accept("INCOMPLETE")
yield ConfirmRunPage
confirmation = yield ConfirmRunPage
return state
return {"pp_did_succeed": confirmation.pp_result_good_enough}
Loading