Skip to content

Commit 509018b

Browse files
author
Thomas
committed
Fix for issue #39. Updated exceptions dcim methods.
1 parent 1980464 commit 509018b

File tree

3 files changed

+18
-15
lines changed

3 files changed

+18
-15
lines changed

netbox/connection.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import requests
2-
from netbox import exceptions
32
import json
3+
import urllib.parse
4+
from netbox import exceptions
45

56

67
class NetboxConnection(object):
@@ -67,6 +68,9 @@ def __request(self, method, params=None, key=None, body=None, url=None):
6768
if not 200 <= response.status_code < 300:
6869
self.__raise_error(response.status_code, response.content)
6970

71+
if response.status_code == 204:
72+
return response.content
73+
7074
try:
7175
response_data = response.json()
7276
except json.JSONDecodeError:
@@ -78,7 +82,7 @@ def get(self, param, key=None, limit=0, **kwargs):
7882

7983
if kwargs:
8084
url = '{}{}?{}&limit={}'.format(self.base_url, param,
81-
'&'.join('{}={}'.format(key, val) for key, val in kwargs.items()), limit)
85+
'&'.join('{}={}'.format(key, urllib.parse.quote(val)) for key, val in kwargs.items()), limit)
8286
elif key:
8387
if '_choices' in param:
8488
url = '{}{}{}/?limit={}'.format(self.base_url, param, key, limit)
@@ -108,7 +112,6 @@ def post(self, params, required_fields, **kwargs):
108112

109113
if kwargs:
110114
body_data.update({key: value for (key, value) in kwargs.items()})
111-
112115
resp_data = self.__request('POST', params=params, body=body_data)
113116

114117
return resp_data

netbox/dcim.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def delete_region(self, region_name):
3737
try:
3838
region_id = self.get_regions(name=region_name)[0]['id']
3939
except IndexError:
40-
raise exceptions.NotFoundException('region: {}'.format(region_name)) from None
40+
raise exceptions.NotFoundException({"detail": "region: {}".format(region_name)}) from None
4141
return self.netbox_con.delete('/dcim/regions/', region_id)
4242

4343
def delete_region_by_id(self, region_id):
@@ -58,7 +58,7 @@ def update_region(self, region_name, **kwargs):
5858
try:
5959
region_id = self.get_regions(name=region_name)[0]['id']
6060
except IndexError:
61-
raise exceptions.NotFoundException('region: {}'.format(region_name)) from None
61+
raise exceptions.NotFoundException({"detail": "region: {}".format(region_name)}) from None
6262
return self.netbox_con.patch('/dcim/regions/', region_id, **kwargs)
6363

6464
def update_region_id(self, region_id, **kwargs):
@@ -94,7 +94,7 @@ def delete_site(self, site_name):
9494
try:
9595
site_id = self.get_sites(name=site_name)[0]['id']
9696
except IndexError:
97-
raise exceptions.NotFoundException('site: {}'.format(site_name)) from None
97+
raise exceptions.NotFoundException({"detail": "site: {}".format(site_name)}) from None
9898
return self.netbox_con.delete('/dcim/sites/', site_id)
9999

100100
def delete_site_by_id(self, site_id):
@@ -115,7 +115,7 @@ def update_site(self, site_name, **kwargs):
115115
try:
116116
site_id = self.get_sites(name=site_name)[0]['id']
117117
except IndexError:
118-
raise exceptions.NotFoundException('site: {}'.format(site_name)) from None
118+
raise exceptions.NotFoundException({"detail": "site: {}".format(site_name)}) from None
119119
return self.netbox_con.patch('/dcim/sites/', site_id, **kwargs)
120120

121121
def update_site_by_id(self, site_id, **kwargs):
@@ -142,7 +142,7 @@ def create_rack(self, name, site_name, **kwargs):
142142
try:
143143
site_id = self.get_sites(name=site_name)[0]['id']
144144
except IndexError:
145-
raise exceptions.NotFoundException('site: {}'.format(site_name)) from None
145+
raise exceptions.NotFoundException({"detail": "site: {}".format(site_name)}) from None
146146
required_fields = {"name": name, "site": site_id}
147147
return self.netbox_con.post('/dcim/racks/', required_fields, **kwargs)
148148

@@ -155,7 +155,7 @@ def delete_rack(self, rack_name):
155155
try:
156156
rack_id = self.get_racks(name=rack_name)[0]['id']
157157
except IndexError:
158-
raise exceptions.NotFoundException('rack: {}'.format(rack_name)) from None
158+
raise exceptions.NotFoundException({"detail": "rack: {}".format(rack_name)}) from None
159159
return self.netbox_con.delete('/dcim/racks/', rack_id)
160160

161161
def delete_rack_by_id(self, rack_id):
@@ -176,7 +176,7 @@ def update_rack(self, rack_name, **kwargs):
176176
try:
177177
rack_id = self.get_racks(facility_id=rack_name)[0]['id']
178178
except IndexError:
179-
raise exceptions.NotFoundException('rack: {}'.format(rack_name)) from None
179+
raise exceptions.NotFoundException({"detail": "rack: {}".format(rack_name)}) from None
180180
return self.netbox_con.patch('/dcim/racks/', rack_id, **kwargs)
181181

182182
def update_rack_by_id(self, rack_id, **kwargs):
@@ -204,7 +204,7 @@ def create_rack_group(self, name, slug, site_name, **kwargs):
204204
try:
205205
site_id = self.get_sites(name=site_name)[0]['id']
206206
except IndexError:
207-
raise exceptions.NotFoundException('site: {}'.format(site_name)) from None
207+
raise exceptions.NotFoundException({"detail": "site: {}".format(site_name)}) from None
208208
required_fields = {"name": name, "slug": slug, "site": site_id}
209209
return self.netbox_con.post('/dcim/rack-groups/', required_fields, **kwargs)
210210

@@ -217,7 +217,7 @@ def delete_rack_group(self, name):
217217
try:
218218
rack_group_id = self.get_rack_groups(name=name)[0]['id']
219219
except IndexError:
220-
raise exceptions.NotFoundException('rack-group: {}'.format(name)) from None
220+
raise exceptions.NotFoundException({"detail": "rack-group: {}".format(name)}) from None
221221
return self.netbox_con.delete('/dcim/rack-groups/', rack_group_id)
222222

223223
def delete_rack_group_by_id(self, rack_group_id):
@@ -238,7 +238,7 @@ def update_rack_group(self, name, **kwargs):
238238
try:
239239
rack_group_id = self.get_rack_groups(name=name)[0]['id']
240240
except IndexError:
241-
raise exceptions.NotFoundException('rack group: {}'.format(name)) from None
241+
raise exceptions.NotFoundException({"detail": "rack group: {}".format(name)}) from None
242242
return self.netbox_con.patch('/dcim/rack-groups/', rack_group_id, **kwargs)
243243

244244
def update_rack_group_by_id(self, rack_group_id, **kwargs):
@@ -263,7 +263,7 @@ def get_devices_per_rack(self, rack_name, **kwargs):
263263
try:
264264
rack_id = self.get_racks(name=rack_name)[0]['id']
265265
except IndexError:
266-
raise exceptions.NotFoundException('rack: {}'.format(rack_name)) from None
266+
raise exceptions.NotFoundException({"detail": "rack: {}".format(rack_name)}) from None
267267
return self.netbox_con.get('/dcim/devices', rack_id=rack_id, **kwargs)
268268

269269
def create_device(self, name, device_role, site_name, device_type, **kwargs):

netbox/exceptions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ def __init__(self, resp_data):
44
if 'detail' in resp_data:
55
self.err = resp_data['detail']
66
else:
7-
self.err = ''.join('{} '.format(val) for key, val in resp_data.items())
7+
self.err = ''.join('{} '.format(val[0]) for key, val in resp_data.items())
88
else:
99
self.err = 'Unknown Error, please check the Netbox logs'
1010

0 commit comments

Comments
 (0)