1+ import netbox .exceptions as exceptions
12class Dcim (object ):
23
34 def __init__ (self , netbox_con ):
@@ -32,7 +33,10 @@ def delete_site(self, site_name):
3233 :param site_name: Site to delete
3334 :return: bool True if succesful otherwase delete exception
3435 """
35- site_id = self .get_site (name = site_name )[0 ]['id' ]
36+ try :
37+ site_id = self .get_site (name = site_name )[0 ]['id' ]
38+ except IndexError :
39+ raise exceptions .NotFoundException ('site: {}' .format (site_name )) from None
3640 return self .netbox_con .delete ('/dcim/sites/' , site_id )
3741
3842 def update_site (self , site_name , ** kwargs ):
@@ -42,7 +46,10 @@ def update_site(self, site_name, **kwargs):
4246 :param kwargs: requests body dict
4347 :return: bool True if successful otherwise raise UpdateException
4448 """
45- site_id = self .get_site (name = site_name )[0 ]['id' ]
49+ try :
50+ site_id = self .get_site (name = site_name )[0 ]['id' ]
51+ except IndexError :
52+ raise exceptions .NotFoundException ('site: {}' .format (site_name )) from None
4653 return self .netbox_con .patch ('/dcim/sites/' , site_id , ** kwargs )
4754
4855 def get_racks (self , ** kwargs ):
@@ -65,7 +72,10 @@ def create_rack(self, name, site_name, **kwargs):
6572 :param kwargs: Optional arguments
6673 :return: bool True if successful otherwise create exception
6774 """
68- site_id = self .get_site (name = site_name )[0 ]['id' ]
75+ try :
76+ site_id = self .get_site (name = site_name )[0 ]['id' ]
77+ except IndexError :
78+ raise exceptions .NotFoundException ('site: {}' .format (site_name )) from None
6979 required_fields = {"name" : name , "site" : site_id }
7080 return self .netbox_con .post ('/dcim/racks/' , required_fields , ** kwargs )
7181
@@ -75,7 +85,10 @@ def delete_rack(self, rack_name):
7585 :param rack_name: Name of the rack to delete
7686 :return: bool True if successful otherwise raise DeleteException
7787 """
78- rack_id = self .get_rack (facility_id = rack_name )[0 ]['id' ]
88+ try :
89+ rack_id = self .get_rack (facility_id = rack_name )[0 ]['id' ]
90+ except IndexError :
91+ raise exceptions .NotFoundException ('rack: {}' .format (rack_name )) from None
7992 return self .netbox_con .delete ('/dcim/racks/' , rack_id )
8093
8194 def update_rack (self , rack_name , ** kwargs ):
@@ -85,7 +98,10 @@ def update_rack(self, rack_name, **kwargs):
8598 :param kwargs: requests body dict
8699 :return: bool True if successful otherwise raise UpdateException
87100 """
88- rack_id = self .get_rack (facility_id = rack_name )[0 ]['id' ]
101+ try :
102+ rack_id = self .get_rack (facility_id = rack_name )[0 ]['id' ]
103+ except IndexError :
104+ raise exceptions .NotFoundException ('rack: {}' .format (rack_name )) from None
89105 return self .netbox_con .patch ('/dcim/racks/' , rack_id , ** kwargs )
90106
91107 def get_devices (self , ** kwargs ):
@@ -106,7 +122,10 @@ def get_devices_per_rack(self, rack_name, **kwargs):
106122 :param rack_name: Name of the rack
107123 :return: list of devices otherwise an empty list
108124 """
109- rack_id = self .get_rack (facility_id = rack_name )[0 ]['id' ]
125+ try :
126+ rack_id = self .get_rack (facility_id = rack_name )[0 ]['id' ]
127+ except IndexError :
128+ raise exceptions .NotFoundException ('rack: {}' .format (rack_name )) from None
110129 return self .netbox_con .get ('/dcim/devices' , rack_id = rack_id , ** kwargs )
111130
112131 def create_device (self , name , device_role , site_name , device_type , ** kwargs ):
@@ -120,47 +139,46 @@ def create_device(self, name, device_role, site_name, device_type, **kwargs):
120139 :return: bool True if successful otherwise raise CreateException
121140 """
122141 required_fields = {"name" : name }
123- device_role_id = self .get_device_role (name = device_role )[0 ]['id' ]
124- site_id = self .get_site (name = site_name )[0 ]['id' ]
125- device_type_id = self .get_device_type (model = device_type )[0 ]['id' ]
126-
127- if device_role_id :
142+ try :
143+ device_role_id = self .get_device_role (name = device_role )[0 ]['id' ]
128144 required_fields .update ({"device_role" : device_role_id })
129- else :
130- err_msg = 'Unable to create device. device role {} not found' .format (device_role )
131- raise ValueError (err_msg )
145+ except IndexError :
146+ raise exceptions .NotFoundException ('device-role: {}' .format (device_role )) from None
132147
133- if site_id :
148+ try :
149+ site_id = self .get_site (name = site_name )[0 ]['id' ]
134150 required_fields .update ({"site" : site_id })
135- else :
136- err_msg = 'Unable to create device. site {} not found' .format (site_name )
137- raise ValueError (err_msg )
151+ except IndexError :
152+ raise exceptions .NotFoundException ('site: {}' .format (site_name )) from None
138153
139- if device_type_id :
154+ try :
155+ device_type_id = self .get_device_type (model = device_type )[0 ]['id' ]
140156 required_fields .update ({"device_type" : device_type_id })
141- else :
142- err_msg = 'Unable to create device. device_type {} not found' .format (device_type )
143- raise ValueError (err_msg )
157+ except IndexError :
158+ raise exceptions .NotFoundException ('device-type: {}' .format (device_type )) from None
144159
145160 return self .netbox_con .post ('/dcim/devices/' , required_fields , ** kwargs )
146161
147162 def delete_device (self , device_name ):
148- """
163+ """Delete device by name
149164
150165 :param device_name: Device to delete
151166 :return: bool True if successful otherwise raise DeleteException
152167 """
153- device_id = self .get_device (name = device_name )[0 ]['id' ]
168+ try :
169+ device_id = self .get_device (name = device_name )[0 ]['id' ]
170+ except IndexError :
171+ raise exceptions .NotFoundException ('device: {}' .format (device_name )) from None
154172 return self .netbox_con .delete ('/dcim/devices/' , device_id )
155173
156- def update_device (self , device , ** kwargs ):
157- """
174+ def update_device (self , device_name , ** kwargs ):
175+ """Update device by device name
158176
159- :param device : device name to update
177+ :param device_name : device name to update
160178 :param kwargs: requests body dict
161179 :return: bool True if successful otherwise raise UpdateException
162180 """
163- device_id = self .get_device (name = device )[0 ]['id' ]
181+ device_id = self .get_device (name = device_name )[0 ]['id' ]
164182 return self .netbox_con .patch ('/dcim/devices/' , device_id , ** kwargs )
165183
166184 def get_device_types (self , ** kwargs ):
@@ -194,16 +212,22 @@ def update_device_type(self, device_type, **kwargs):
194212 :param kwargs: requests body dict
195213 :return: bool True if successful otherwise raise UpdateException
196214 """
197- device_id = self .get_device_type (model = device_type )[0 ]['id' ]
198- return self .netbox_con .patch ('/dcim/device-types/' , device_id , ** kwargs )
215+ try :
216+ device_type_id = self .get_device_type (model = device_type )[0 ]['id' ]
217+ except IndexError :
218+ raise exceptions .NotFoundException ('device-type: {}' .format (device_type )) from None
219+ return self .netbox_con .patch ('/dcim/device-types/' , device_type_id , ** kwargs )
199220
200221 def delete_device_type (self , model_name ):
201222 """Delete device type
202223
203224 :param model_name: Name of the model
204225 :return: bool True if successful otherwise raise DeleteException
205226 """
206- device_type_id = self .get_device_type (model = model_name )[0 ]['id' ]
227+ try :
228+ device_type_id = self .get_device_type (model = model_name )[0 ]['id' ]
229+ except IndexError :
230+ raise exceptions .NotFoundException ('device-type: {}' .format (model_name )) from None
207231 return self .netbox_con .delete ('/dcim/device-types/' , device_type_id )
208232
209233 def get_device_roles (self , ** kwargs ):
@@ -237,7 +261,10 @@ def update_device_role(self, device_role, **kwargs):
237261 :param kwargs: requests body dict
238262 :return: bool True if successful otherwise raise UpdateException
239263 """
240- device_role_id = self .get_device_type (name = device_role )[0 ]['id' ]
264+ try :
265+ device_role_id = self .get_device_type (name = device_role )[0 ]['id' ]
266+ except IndexError :
267+ raise exceptions .NotFoundException ('device-role: {}' .format (device_role )) from None
241268 return self .netbox_con .patch ('/dcim/device-roles/' , device_role_id , ** kwargs )
242269
243270 def delete_device_role (self , device_role ):
@@ -246,7 +273,10 @@ def delete_device_role(self, device_role):
246273 :param device_role: name of the role
247274 :return: bool True if successful otherwise raise DeleteException
248275 """
249- device_role_id = self .get_device_role (name = device_role )[0 ]['id' ]
276+ try :
277+ device_role_id = self .get_device_type (name = device_role )[0 ]['id' ]
278+ except IndexError :
279+ raise exceptions .NotFoundException ('device-role: {}' .format (device_role )) from None
250280 return self .netbox_con .delete ('/dcim/device-roles/' , device_role_id )
251281
252282 def get_manufactures (self , ** kwargs ):
@@ -272,23 +302,29 @@ def create_manufacturer(self, name, slug, **kwargs):
272302 required_fields = {"name" : name , "slug" : slug }
273303 return self .netbox_con .post ('/dcim/manufacturers/' , required_fields , ** kwargs )
274304
275- def update_manufacturer (self , manufacturer , ** kwargs ):
305+ def update_manufacturer (self , manufacturer_name , ** kwargs ):
276306 """Update manufacturer
277307
278- :param manufacturer : manufacturer name to update
308+ :param manufacturer_name : manufacturer name to update
279309 :param kwargs: requests body dict
280310 :return: bool True if successful otherwise raise UpdateException
281311 """
282- device_role_id = self .get_manufacturer (name = manufacturer )[0 ]['id' ]
283- return self .netbox_con .patch ('/dcim/manufacturer/' , device_role_id , ** kwargs )
312+ try :
313+ manufacturer_id = self .get_manufacturer (name = manufacturer_name )[0 ]['id' ]
314+ except IndexError :
315+ raise exceptions .NotFoundException ('manufacturer: {}' .format (manufacturer_name )) from None
316+ return self .netbox_con .patch ('/dcim/manufacturer/' , manufacturer_id , ** kwargs )
284317
285318 def delete_manufacturer (self , manufacturer_name ):
286319 """Delete manufacturer
287320
288321 :param manufacturer_name: Name of manufacturer to delete
289322 :return: bool True if successful otherwise raise DeleteException
290323 """
291- manufacturer_id = self .get_manufacturer (name = manufacturer_name )[0 ]['id' ]
324+ try :
325+ manufacturer_id = self .get_manufacturer (name = manufacturer_name )[0 ]['id' ]
326+ except IndexError :
327+ raise exceptions .NotFoundException ('manufacturer: {}' .format (manufacturer_name )) from None
292328 return self .netbox_con .delete ('/dcim/manufacturers/' , manufacturer_id )
293329
294330 def get_platforms (self , ** kwargs ):
@@ -314,23 +350,29 @@ def create_platform(self, name, slug, **kwargs):
314350 required_fields = {"name" : name , "slug" : slug }
315351 return self .netbox_con .post ('/dcim/platforms/' , required_fields , ** kwargs )
316352
317- def update_platform (self , platform , ** kwargs ):
353+ def update_platform (self , platform_name , ** kwargs ):
318354 """Update platform
319355
320356 :param platform: device name to update
321357 :param kwargs: requests body dict
322358 :return: bool True if successful otherwise raise UpdateException
323359 """
324- device_role_id = self .get_manufacturer (name = platform )[0 ]['id' ]
325- return self .netbox_con .patch ('/dcim/platforms/' , device_role_id , ** kwargs )
360+ try :
361+ platform_id = self .get_manufacturer (name = platform_name )[0 ]['id' ]
362+ except IndexError :
363+ raise exceptions .NotFoundException ('platform: {}' .format (platform_name )) from None
364+ return self .netbox_con .patch ('/dcim/platforms/' , platform_id , ** kwargs )
326365
327366 def delete_platform (self , platform_name ):
328367 """Delete platform
329368
330369 :param platform_name: Name of platform to delete
331370 :return: bool True if successful otherwise raise DeleteException
332371 """
333- platform_id = self .get_platform (name = platform_name )[0 ]['id' ]
372+ try :
373+ platform_id = self .get_manufacturer (name = platform_name )[0 ]['id' ]
374+ except IndexError :
375+ raise exceptions .NotFoundException ('platform: {}' .format (platform_name )) from None
334376 return self .netbox_con .delete ('/dcim/platforms/' , platform_id )
335377
336378 def get_interfaces (self , ** kwargs ):
@@ -373,8 +415,11 @@ def update_interface(self, interface, **kwargs):
373415 :param kwargs: requests body dict
374416 :return: bool True if successful otherwise raise UpdateException
375417 """
376- device_role_id = self .get_manufacturer (name = interface )[0 ]['id' ]
377- return self .netbox_con .patch ('/dcim/platforms/' , device_role_id , ** kwargs )
418+ try :
419+ interface_id = self .get_manufacturer (name = interface )[0 ]['id' ]
420+ except IndexError :
421+ raise exceptions .NotFoundException ('interface: {}' .format (interface )) from None
422+ return self .netbox_con .patch ('/dcim/interfaces/' , interface_id , ** kwargs )
378423
379424 def delete_interface_by_id (self , interface_id ):
380425 """Delete interface by id
@@ -402,4 +447,3 @@ def create_interface_connection(self, interface_a, interface_b, **kwargs):
402447 """
403448 required_fields = {"interface_a" : interface_a , "interface_b" : interface_b }
404449 return self .netbox_con .post ('/dcim/interface-connections/' , required_fields , ** kwargs )
405-
0 commit comments