diff --git a/gso/workflows/edge_port/validate_edge_port.py b/gso/workflows/edge_port/validate_edge_port.py index 1bbf60e3dd3b7368adf1a085aeaf333ee269fee9..33b882a6569a7e936c2f036c55e96850b2c0e222 100644 --- a/gso/workflows/edge_port/validate_edge_port.py +++ b/gso/workflows/edge_port/validate_edge_port.py @@ -4,7 +4,7 @@ from typing import Any from orchestrator.targets import Target from orchestrator.utils.errors import ProcessFailureError -from orchestrator.workflow import StepList, begin, done, step, workflow +from orchestrator.workflow import StepList, begin, conditional, done, step, workflow from orchestrator.workflows.steps import resync, store_process_subscription, unsync from orchestrator.workflows.utils import wrap_modify_initial_input_form from pydantic_forms.types import State, UUIDstr @@ -13,6 +13,7 @@ from gso.products.product_types.edge_port import EdgePort from gso.services.lso_client import LSOState, anonymous_lso_interaction from gso.services.netbox_client import NetboxClient from gso.services.partners import get_partner_by_id +from gso.utils.shared_enums import Vendor @step("Prepare required keys in state") @@ -79,15 +80,19 @@ def verify_base_config(subscription: dict[str, Any]) -> LSOState: def validate_edge_port() -> StepList: """Validate an existing, active Edge port subscription. - * Check correct configuration of interfaces in NetBox. + * Check correct configuration of interfaces in NetBox, only when the Edge Port is on a Nokia device. * Verify create Edge port configuration. """ + edge_port_is_on_nokia = conditional( + lambda state: state["subscription"]["edge_port"]["node"]["vendor"] == Vendor.NOKIA + ) + return ( begin >> store_process_subscription(Target.SYSTEM) >> unsync >> prepare_state - >> verify_netbox_entries + >> edge_port_is_on_nokia(verify_netbox_entries) >> anonymous_lso_interaction(verify_base_config) >> resync >> done