diff --git a/gso/workflows/router/create_router.py b/gso/workflows/router/create_router.py index 72f9dd9b82147d9fb555f146d50117c166be013d..8b37cd07c4065ab4e72a66782828bd36e32164a4 100644 --- a/gso/workflows/router/create_router.py +++ b/gso/workflows/router/create_router.py @@ -7,7 +7,7 @@ from orchestrator.forms import FormPage from orchestrator.forms.validators import Choice from orchestrator.targets import Target from orchestrator.types import FormGenerator, State, SubscriptionLifecycle, UUIDstr -from orchestrator.workflow import StepList, done, init, step, workflow +from orchestrator.workflow import StepList, done, init, step, workflow, conditional from orchestrator.workflows.steps import resync, set_status, store_process_subscription from orchestrator.workflows.utils import wrap_create_initial_input_form from pydantic import validator @@ -126,16 +126,11 @@ def ipam_allocate_loopback(subscription: RouterProvisioning) -> State: @step("Create NetBox Device") def create_netbox_device(subscription: RouterProvisioning) -> State: - """Create a new device in Netbox. - - HACK: use a conditional instead for execution of this step - """ - if subscription.router.vendor == RouterVendor.NOKIA: - NetboxClient().create_device( - subscription.router.router_fqdn, - str(subscription.router.router_site.site_tier), # type: ignore[union-attr] - ) - return {"subscription": subscription} + """Create a new NOKIA device in Netbox.""" + NetboxClient().create_device( + subscription.router.router_fqdn, + str(subscription.router.router_site.site_tier), # type: ignore[union-attr] + ) return {"subscription": subscription} @@ -163,6 +158,8 @@ def create_router() -> StepList: * Validate :term:`IPAM` resources * Create a new device in Netbox """ + router_is_nokia = conditional(lambda state: state["vendor"] == RouterVendor.NOKIA) + return ( init >> create_subscription @@ -172,7 +169,7 @@ def create_router() -> StepList: >> pp_interaction(deploy_base_config_dry) >> pp_interaction(deploy_base_config_real) >> verify_ipam_loopback - >> create_netbox_device + >> router_is_nokia(create_netbox_device) >> set_status(SubscriptionLifecycle.ACTIVE) >> resync >> done