Skip to content

Commit 542f3d2

Browse files
author
thomas
committed
Added exception to update/delete methods.
1 parent 8293d79 commit 542f3d2

File tree

2 files changed

+155
-70
lines changed

2 files changed

+155
-70
lines changed

netbox/dcim.py

Lines changed: 89 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import netbox.exceptions as exceptions
12
class 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

Comments
 (0)