Skip to content
Snippets Groups Projects
Verified Commit f9c1f9c6 authored by Karel van Klink's avatar Karel van Klink :smiley_cat:
Browse files

Improve insync handling of prefix list validation workflow

Always run the workflow, even if out of sync. Only return subscription to in sync if it already was when before running this validation
parent b5ef4ae8
Branches
Tags
1 merge request!418Fix issues with validation workflow schedule
...@@ -7,7 +7,7 @@ from orchestrator.domain import SubscriptionModel ...@@ -7,7 +7,7 @@ from orchestrator.domain import SubscriptionModel
from orchestrator.forms import SubmitFormPage from orchestrator.forms import SubmitFormPage
from orchestrator.targets import Target from orchestrator.targets import Target
from orchestrator.workflow import StepList, begin, conditional, done, inputstep, step, workflow from orchestrator.workflow import StepList, begin, conditional, done, inputstep, step, workflow
from orchestrator.workflows.steps import resync, store_process_subscription, unsync from orchestrator.workflows.steps import resync, store_process_subscription, unsync_unchecked
from orchestrator.workflows.utils import wrap_modify_initial_input_form from orchestrator.workflows.utils import wrap_modify_initial_input_form
from pydantic import Field from pydantic import Field
from pydantic_forms.types import FormGenerator, State, UUIDstr from pydantic_forms.types import FormGenerator, State, UUIDstr
...@@ -26,7 +26,7 @@ def build_fqdn_list(subscription_id: UUIDstr) -> State: ...@@ -26,7 +26,7 @@ def build_fqdn_list(subscription_id: UUIDstr) -> State:
ap_fqdn_list = [ ap_fqdn_list = [
ap.sbp.edge_port.node.router_fqdn for ap in ap_list if ap.sbp.edge_port.node.vendor != Vendor.JUNIPER ap.sbp.edge_port.node.router_fqdn for ap in ap_list if ap.sbp.edge_port.node.vendor != Vendor.JUNIPER
] ]
return {"ap_fqdn_list": ap_fqdn_list, "subscription": subscription} return {"ap_fqdn_list": ap_fqdn_list, "subscription": subscription, "subscription_was_in_sync": subscription.insync}
@step("[DRY RUN] Validate Prefix-Lists") @step("[DRY RUN] Validate Prefix-Lists")
...@@ -115,14 +115,15 @@ def validate_geant_ip_prefix_list() -> StepList: ...@@ -115,14 +115,15 @@ def validate_geant_ip_prefix_list() -> StepList:
"""Validate prefix-lists for an existing GÉANT IP subscription.""" """Validate prefix-lists for an existing GÉANT IP subscription."""
fqdn_list_is_empty = conditional(lambda state: state["ap_fqdn_list"] == []) fqdn_list_is_empty = conditional(lambda state: state["ap_fqdn_list"] == [])
prefix_list_has_drifted = conditional(lambda state: bool(state["prefix_list_drift"])) prefix_list_has_drifted = conditional(lambda state: bool(state["prefix_list_drift"]))
subscription_was_in_sync = conditional(lambda state: bool(state["subscription_was_in_sync"]))
redeploy_prefix_list_steps = ( redeploy_prefix_list_steps = (
begin begin
>> unsync >> unsync_unchecked
>> await_operator >> await_operator
>> lso_interaction(deploy_prefix_lists_dry) >> lso_interaction(deploy_prefix_lists_dry)
>> lso_interaction(deploy_prefix_lists_real) >> lso_interaction(deploy_prefix_lists_real)
>> resync >> subscription_was_in_sync(resync)
) )
prefix_list_validation_steps = ( prefix_list_validation_steps = (
begin begin
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment