Skip to content

Commit 417398f

Browse files
author
Thomas v.d. Jagt
committed
added update methods
1 parent 919332c commit 417398f

File tree

2 files changed

+103
-19
lines changed

2 files changed

+103
-19
lines changed

netbox/dcim.py

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,16 @@ def delete_site(self, site_name):
3535
site_id = self.get_site(name=site_name)[0]['id']
3636
return self.netbox_con.delete('/dcim/sites/', site_id)
3737

38+
def update_site(self, site_name, **kwargs):
39+
"""
40+
41+
:param site_name: device-type name to update
42+
:param kwargs: requests body dict
43+
:return: bool True if successful otherwise raise UpdateException
44+
"""
45+
site_id = self.get_site(name=site_name)[0]['id']
46+
return self.netbox_con.patch('/dcim/sites/', site_id, **kwargs)
47+
3848
def get_racks(self):
3949
"""Returns the available racks"""
4050
return self.netbox_con.get('/dcim/racks/')
@@ -68,6 +78,16 @@ def delete_rack(self, rack_name):
6878
rack_id = self.get_rack(facility_id=rack_name)[0]['id']
6979
return self.netbox_con.delete('/dcim/racks/', rack_id)
7080

81+
def update_rack(self, rack_name, **kwargs):
82+
"""
83+
84+
:param rack_name: rack_name name to update
85+
:param kwargs: requests body dict
86+
:return: bool True if successful otherwise raise UpdateException
87+
"""
88+
rack_id = self.get_rack(facility_id=rack_name)[0]['id']
89+
return self.netbox_con.patch('/dcim/racks/', rack_id, **kwargs)
90+
7191
def get_devices(self):
7292
"""Get all devices"""
7393
return self.netbox_con.get('/dcim/devices/')
@@ -80,14 +100,14 @@ def get_device(self, **kwargs):
80100
"""
81101
return self.netbox_con.get('/dcim/devices/', **kwargs)
82102

83-
def get_devices_per_rack(self, rack_name):
103+
def get_devices_per_rack(self, rack_name, **kwargs):
84104
"""Get devices which belongs to the given rack
85105
86106
:param rack_name: Name of the rack
87107
:return: list of devices otherwise an empty list
88108
"""
89109
rack_id = self.get_rack(facility_id=rack_name)[0]['id']
90-
return self.netbox_con.get('/dcim/devices', rack_id=rack_id)
110+
return self.netbox_con.get('/dcim/devices', rack_id=rack_id, **kwargs)
91111

92112
def create_device(self, name, device_role, site_name, device_type, **kwargs):
93113
"""Create a new device
@@ -168,7 +188,7 @@ def create_device_type(self, model, slug, manufacturer, **kwargs):
168188
return self.netbox_con.post('/dcim/device-types/', required_fields, **kwargs)
169189

170190
def update_device_type(self, device_type, **kwargs):
171-
"""
191+
"""Update device type
172192
173193
:param device_type: device-type name to update
174194
:param kwargs: requests body dict
@@ -211,7 +231,7 @@ def create_device_role(self, name, color, slug, **kwargs):
211231
return self.netbox_con.post('/dcim/device-roles/', required_fields, **kwargs)
212232

213233
def update_device_role(self, device_role, **kwargs):
214-
"""
234+
"""Update device role
215235
216236
:param device_type: device-type name to update
217237
:param kwargs: requests body dict
@@ -253,7 +273,7 @@ def create_manufacturer(self, name, slug, **kwargs):
253273
return self.netbox_con.post('/dcim/manufacturers/', required_fields, **kwargs)
254274

255275
def update_manufacturer(self, manufacturer, **kwargs):
256-
"""
276+
"""Update manufacturer
257277
258278
:param manufacturer: manufacturer name to update
259279
:param kwargs: requests body dict
@@ -295,7 +315,7 @@ def create_platform(self, name, slug, **kwargs):
295315
return self.netbox_con.post('/dcim/platforms/', required_fields, **kwargs)
296316

297317
def update_platform(self, platform, **kwargs):
298-
"""
318+
"""Update platform
299319
300320
:param platform: device name to update
301321
:param kwargs: requests body dict
@@ -347,7 +367,7 @@ def create_interface(self, name, form_facter, device, **kwargs):
347367
return self.netbox_con.post('/dcim/interfaces/', required_fields, **kwargs)
348368

349369
def update_interface(self, interface, **kwargs):
350-
"""
370+
"""Update interface
351371
352372
:param interface: interface to update
353373
:param kwargs: requests body dict

netbox/ipam.py

Lines changed: 76 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -33,26 +33,25 @@ def create_ip_address(self, address, **kwargs):
3333
required_fields = {"address": address}
3434
return self.netbox_con.post('/ipam/ip-addresses/', required_fields, **kwargs)
3535

36+
def update_ip(self, ip_address, **kwargs):
37+
"""Update ip address
38+
39+
:param ip_address: ip address with prefix. Format: 1.1.1.1/32
40+
:param kwargs: requests body dict
41+
:return: bool True if successful otherwise raise UpdateException
42+
"""
43+
ip_id = self.get_ip(q=ip_address)[0]['id']
44+
return self.netbox_con.patch('/ipam/ip-addresses/', ip_id, **kwargs)
45+
3646
def delete_ip_address(self, address):
3747
"""Delete IP address
3848
3949
:param address: IP address to delete
4050
:return: bool True if successful otherwise raise DeleteException
4151
"""
42-
ip_address_id = self.get_ip(address)
52+
ip_address_id = self.get_ip(q=address)[0]['id']
4353
return self.netbox_con.delete('/ipam/ip-addresses/', ip_address_id)
4454

45-
def __convert_ip_address(self, ip_address):
46-
"""Convert IP address to id
47-
48-
:param ip_address: The IP address
49-
:return: ip address id if found otherwise bool False
50-
"""
51-
for item in self.get_ip_addresses()['results']:
52-
if item['address'] == ip_address:
53-
return item['id']
54-
return False
55-
5655
def get_ip_prefixes(self):
5756
"""Return all ip prefixes"""
5857
return self.netbox_con.get('/ipam/prefixes/')
@@ -86,6 +85,16 @@ def delete_ip_prefix(self, **kwargs):
8685
ip_prefix_id = self.get_ip_prefix(**kwargs)[0]['id']
8786
return self.netbox_con.delete('/ipam/prefixes/', ip_prefix_id)
8887

88+
def update_ip_prefix(self, ip_prefix, **kwargs):
89+
"""Update ip address
90+
91+
:param ip_prefix: ip prefix to update
92+
:param kwargs: requests body dict
93+
:return: bool True if successful otherwise raise UpdateException
94+
"""
95+
ip_prefix_id = self.get_ip_prefix(q=ip_prefix)[0]['id']
96+
return self.netbox_con.patch('/ipam/prefixes/', ip_prefix_id, **kwargs)
97+
8998
def get_next_available_ip(self, **kwargs):
9099
"""Return next available ip in prefix
91100
@@ -128,10 +137,27 @@ def delete_vrf(self, vrf):
128137
vrf_id = self.get_vrf(name=vrf)[0]['id']
129138
return self.netbox_con.delete('/ipam/vrfs/', vrf_id)
130139

140+
def update_vrf(self, vrf_name, **kwargs):
141+
"""Update vrf
142+
143+
:param vrf_name: name of the vrf to update
144+
:param kwargs: requests body dict
145+
:return: bool True if successful otherwise raise UpdateException
146+
"""
147+
vrf_id = self.get_vrf(name=vrf_name)[0]['id']
148+
return self.netbox_con.patch('/ipam/vrfs/', vrf_id, **kwargs)
149+
131150
def get_aggregates(self):
132151
"""Return all aggregates"""
133152
return self.netbox_con.get('/ipam/aggregates/')
134153

154+
def get_aggregate(self, **kwargs):
155+
"""Return aggregate
156+
157+
:param kwargs: arguments
158+
:return: aggregate
159+
"""
160+
135161
def create_aggregate(self, prefix, rir, **kwargs):
136162
"""Creates a new aggregate
137163
@@ -146,6 +172,16 @@ def create_aggregate(self, prefix, rir, **kwargs):
146172
if ipaddress.ip_network(prefix, strict=True):
147173
return self.netbox_con.post('/ipam/aggregates/', required_fields, **kwargs)
148174

175+
def update_aggregate(self, prefix, **kwargs):
176+
"""Update aggregate
177+
178+
:param prefix: Prefix of the aggregate
179+
:param kwargs: requests body dict
180+
:return: bool True if successful otherwise raise UpdateException
181+
"""
182+
aggregate_id = self.get_aggregate(prefix=prefix)[0]['id']
183+
return self.netbox_con.patch('/ipam/aggregates/', aggregate_id, **kwargs)
184+
149185
def get_rirs(self):
150186
"""Return all rirs"""
151187
return self.netbox_con.get('/ipam/rirs/')
@@ -177,6 +213,16 @@ def delete_rir(self, rir_name):
177213
rir_id = self.get_rir(name=rir_name)[0]['id']
178214
return self.netbox_con.delete('/ipam/rirs/', rir_id)
179215

216+
def update_rir(self, name, **kwargs):
217+
"""Update rir
218+
219+
:param name: Name of the rir
220+
:param kwargs: requests body dict
221+
:return: bool True if successful otherwise raise UpdateException
222+
"""
223+
rir_id = self.get_rir(name=name)[0]['id']
224+
return self.netbox_con.patch('/ipam/rirs/', rir_id, **kwargs)
225+
180226
def get_prefix_roles(self):
181227
"""Return all roles"""
182228
return self.netbox_con.get('/ipam/roles/')
@@ -208,7 +254,15 @@ def delete_prefix_role(self, prefix_role):
208254
prefix_role_id = self.get_prefix_role(name=prefix_role)[0]['id']
209255
return self.netbox_con.delete('/ipam/role/', prefix_role_id)
210256

257+
def update_prefix_role(self, name, **kwargs):
258+
"""Update prefix role
211259
260+
:param name: Name of the prefix role
261+
:param kwargs: requests body dict
262+
:return: bool True if successful otherwise raise UpdateException
263+
"""
264+
prefix_role_id = self.get_prefix_role(name=name)[0]['id']
265+
return self.netbox_con.patch('/ipam/roles/', prefix_role_id, **kwargs)
212266

213267
def get_vlans(self):
214268
"""Return all vlans"""
@@ -241,4 +295,14 @@ def delete_vlan(self, vid):
241295
vid_id = self.get_vlan(vid=vid)[0]['id']
242296
return self.netbox_con.delete('/ipam/vlans/', vid_id)
243297

298+
def update_vlan(self, name, **kwargs):
299+
"""Update vlan
300+
301+
:param name: Name of the vlan
302+
:param kwargs: requests body dict
303+
:return: bool True if successful otherwise raise UpdateException
304+
"""
305+
vlan_id = self.get_vlan(name=name)[0]['id']
306+
return self.netbox_con.patch('/ipam/vlans/', vlan_id, **kwargs)
307+
244308

0 commit comments

Comments
 (0)