From b9cbf3fcdf329c4229aa2beda69ba7c6624591c4 Mon Sep 17 00:00:00 2001
From: Jorge Sasiain <jorge.sasiain@ehu.eus>
Date: Fri, 6 Oct 2023 08:09:46 +0000
Subject: [PATCH] NAT-244: optimize netbox queries in iptrunk termination

---
 gso/workflows/iptrunk/terminate_iptrunk.py | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/gso/workflows/iptrunk/terminate_iptrunk.py b/gso/workflows/iptrunk/terminate_iptrunk.py
index 29eec4c8..ae142ed1 100644
--- a/gso/workflows/iptrunk/terminate_iptrunk.py
+++ b/gso/workflows/iptrunk/terminate_iptrunk.py
@@ -62,25 +62,22 @@ def deprovision_ip_trunk_real(subscription: Iptrunk, process_id: UUIDstr, tt_num
 @step("Remove IP Trunk from NetBox")
 def remove_iptrunk_from_netbox(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)
+    router_sideA = subscription.iptrunk.iptrunk_sides[0].iptrunk_side_node.router_fqdn
+    router_sideB = subscription.iptrunk.iptrunk_sides[1].iptrunk_side_node.router_fqdn
     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
 
+    # Remove physical interfaces from LAGs
     for sideA_member in sideA_members:
-        NetBoxClient().unreserve_interface(router_sideA, sideA_member)
-        NetBoxClient().deallocate_interface(router_sideA, sideA_member)
-        NetBoxClient().update_interface_description(router_sideA, sideA_member, "")
-
+        NetBoxClient().clear_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)
-        NetBoxClient().update_interface_description(router_sideB, sideB_member, "")
+        NetBoxClient().clear_interface(router_sideB, sideB_member)
 
-    NetBoxClient().delete_device(sideA_ae_iface)
-    NetBoxClient().delete_device(sideB_ae_iface)
+    # Delete LAGs
+    NetBoxClient().delete_interface(router_sideA, sideA_ae_iface)
+    NetBoxClient().delete_interface(router_sideB, sideB_ae_iface)
 
     return {"subscription": subscription}
 
-- 
GitLab