diff --git a/gso/services/netbox_client.py b/gso/services/netbox_client.py
index d73ba0ce57920c917674687fa15574fc8a9d751c..e227032be3b6c2d1fe824d6d8b539383ddf784d6 100644
--- a/gso/services/netbox_client.py
+++ b/gso/services/netbox_client.py
@@ -49,6 +49,12 @@ class Site(pydantic.BaseModel):
     slug: str
 
 
+# An exception for not found search
+class NotFoundError(Exception):
+    """Exception raised for not found search."""
+    pass
+
+
 def connect(api, token):
     """
     Creates a netbox client to communicate
@@ -77,7 +83,7 @@ def get_device_by_name(nbclient, device_name):
     device = nbclient.dcim.devices.get(name=device_name)
 
     if device is None:
-        raise ValueError(f"Device: {device_name} not found")
+        raise NotFoundError(f"Device: {device_name} not found")
     else:
         return device
 
@@ -207,5 +213,27 @@ def attach_interface_to_lag(nbclient, device_name: str, lag_name: str, iface_nam
     return dict(updated_iface)
 
 
+def reserve_interface(nbclient, device_name: str, iface_name: str) -> dict:
+    # First get interface from device
+    device = get_device_by_name(nbclient, device_name)
+    interface = nbclient.dcim.interfaces.get(device_id=device.id,
+                                             name=iface_name)
+
+    # Reserve interface by enabling it
+    if interface is None:
+        raise NotFoundError(f"Interface: {iface_name} on device: {device_name} not found.")
+    
+    # Check if interface is reserved
+    if interface.enabled:
+        print("Interface is reserved")
+
+    # Reserve interface by enabling it
+    interface.enabled = True
+    interface.save()
+
+    return dict(interface)
+
+
+
 if __name__ == "__main__":
     print(dict(create_device_manufacturer("Juniper", "juniper")))