From 20dbf2e231f3c46a6b999f21f4a6f016454081e5 Mon Sep 17 00:00:00 2001
From: Ubuntu <ubuntu@ubuntu-2204.linuxvmimages.local>
Date: Fri, 15 Sep 2023 09:03:03 -0400
Subject: [PATCH] NAT-243: added custom fields filter to get interfaces

---
 gso/services/netbox_client.py | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/gso/services/netbox_client.py b/gso/services/netbox_client.py
index 601787e1..efbf9d10 100644
--- a/gso/services/netbox_client.py
+++ b/gso/services/netbox_client.py
@@ -74,19 +74,22 @@ def get_all_devices(nbclient):
 # We need sometimes a specific device
 # for creating devices
 def get_device_by_name(nbclient, device_name):
-    return nbclient.dcim.devices.get(name=device_name)
+    device = nbclient.dcim.devices.get(name=device_name)
+
+    if device is None:
+        raise ValueError(f"Device: {device_name} not found")
+    else:
+        return device
 
 
 # get all interfaces for a device
 def get_interfaces_by_device(nbclient, device_name):
     device = get_device_by_name(nbclient, device_name)
 
-    if device is None:
-        raise ValueError(f"Device: {device_name} not found")
-
     return list(nbclient.dcim.interfaces.filter(device_id=device.id,
-                                                enabled=False,
-                                                mark_connected=False,
+                                                # enabled=False,
+                                                # mark_connected=False,
+                                                custom_fields={"states": "UNUSED"}
                                                 ))
 
 
@@ -105,13 +108,11 @@ def create_interface(nbclient,
     """
     device = get_device_by_name(nbclient, device_name)
 
-    if device is None:
-        raise ValueError(f"Device: {device_name} not found")
-
     new_iface = nbclient.dcim.interfaces.create(name=iface_name,
                                                 type=type,
                                                 enabled=False,
                                                 mark_connected=False,
+                                                custom_fields={"states": "RESERVED"},
                                                 device=device.id)
 
     return dict(new_iface)
-- 
GitLab