From 4a9471f8a4dece2fc26476e2f5bfa732832ce176 Mon Sep 17 00:00:00 2001 From: Jorge Sasiain <jorge.sasiain@ehu.eus> Date: Fri, 6 Oct 2023 06:53:08 +0000 Subject: [PATCH] NAT-244: make netbox operations a single workflow step --- gso/workflows/iptrunk/terminate_iptrunk.py | 45 +++++----------------- 1 file changed, 10 insertions(+), 35 deletions(-) diff --git a/gso/workflows/iptrunk/terminate_iptrunk.py b/gso/workflows/iptrunk/terminate_iptrunk.py index 16e6d7b0..f8522852 100644 --- a/gso/workflows/iptrunk/terminate_iptrunk.py +++ b/gso/workflows/iptrunk/terminate_iptrunk.py @@ -59,53 +59,27 @@ def deprovision_ip_trunk_real(subscription: Iptrunk, process_id: UUIDstr, tt_num } -@step("Unreserve involved physical interfaces") -def unreserve_physical_interfaces(subscription: Iptrunk) -> State: - router_sideA = NetBoxClient().get_device_by_name(subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node) - router_sideB = NetBoxClient().get_device_by_name(subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node) - sideA_members = subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_members - sideB_members = subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_members - for sideA_member in sideA_members: - NetBoxClient().unreserve_interface(router_sideA, sideA_member) - for sideB_member in sideB_members: - NetBoxClient().unreserve_interface(router_sideB, sideB_member) - return {"subscription": subscription} - - -@step("Deallocate involved physical interfaces") -def deallocate_physical_interfaces(subscription: Iptrunk) -> State: - router_sideA = NetBoxClient().get_device_by_name(subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node) - router_sideB = NetBoxClient().get_device_by_name(subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node) - sideA_members = subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_members - sideB_members = subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_members - for sideA_member in sideA_members: - NetBoxClient().deallocate_interface(router_sideA, sideA_member) - for sideB_member in sideB_members: - NetBoxClient().deallocate_interface(router_sideB, sideB_member) - return {"subscription": subscription} +@step("Remove IP Trunk from NetBox") +def remove_iptrunk_from_netbox(subscription: Iptrunk) -> State: - -@step("Unattach physical interfaces from respective LAG") -def unattach_physical_interfaces(subscription: Iptrunk) -> State: router_sideA = NetBoxClient().get_device_by_name(subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node) router_sideB = NetBoxClient().get_device_by_name(subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node) sideA_members = subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_members sideB_members = subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_members sideA_ae_iface = subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_iface sideB_ae_iface = subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_iface + for sideA_member in sideA_members: - NetBoxClient().unattach_interface_from_lag(router_sideA, sideA_ae_iface, sideA_member) - for sideB_member in sideB_members: - NetBoxClient().unattach_interface_from_lag(router_sideB, sideB_ae_iface, sideB_member) - return {"subscription": subscription} + NetBoxClient().unreserve_interface(router_sideA, sideA_member) + NetBoxClient().deallocate_interface(router_sideA, sideA_member) + for sideB_member in sideB_members: + NetBoxClient().unreserve_interface(router_sideB, sideB_member) + NetBoxClient().deallocate_interface(router_sideB, sideB_member) -@step("Delete involved LAGs") -def delete_lags(subscription: Iptrunk) -> State: - sideA_ae_iface = subscription.iptrunk.iptrunk_sides[0].iptrunk_side_ae_iface - sideB_ae_iface = subscription.iptrunk.iptrunk_sides[1].iptrunk_side_ae_iface NetBoxClient().delete_device(sideA_ae_iface) NetBoxClient().delete_device(sideB_ae_iface) + return {"subscription": subscription} @@ -145,6 +119,7 @@ def terminate_iptrunk() -> StepList: >> store_process_subscription(Target.TERMINATE) >> unsync >> run_config_steps(config_steps) + >> remove_iptrunk_from_netbox >> run_ipam_steps(ipam_steps) >> set_status(SubscriptionLifecycle.TERMINATED) >> resync -- GitLab