@@ -24,10 +24,11 @@ def __init__(self, settings):
24
24
self .netbox = None
25
25
self .ignore_ssl = settings .IGNORE_SSL_ERRORS
26
26
self .modules = False
27
+ self .new_filters = False
27
28
self .connect_api ()
28
29
self .verify_compatibility ()
29
30
self .existing_manufacturers = self .get_manufacturers ()
30
- self .device_types = DeviceTypes (self .netbox , self .handle , self .counter , self .ignore_ssl )
31
+ self .device_types = DeviceTypes (self .netbox , self .handle , self .counter , self .ignore_ssl , self . new_filters )
31
32
32
33
def connect_api (self ):
33
34
try :
@@ -54,6 +55,11 @@ def verify_compatibility(self):
54
55
if version_split [0 ] > 3 or (version_split [0 ] == 3 and version_split [1 ] >= 2 ):
55
56
self .modules = True
56
57
58
+ # check if version >= 4.1 in order to use new filter names (https://github.com/netbox-community/netbox/issues/15410)
59
+ if version_split [0 ] >= 4 and version_split [1 ] >= 1 :
60
+ self .new_filters = True
61
+ self .handle .log (f'Netbox version { self .netbox .version } found. Using new filters.' )
62
+
57
63
def get_manufacturers (self ):
58
64
return {str (item ): item for item in self .netbox .dcim .manufacturers .all ()}
59
65
@@ -183,27 +189,28 @@ class DeviceTypes:
183
189
def __new__ (cls , * args , ** kwargs ):
184
190
return super ().__new__ (cls )
185
191
186
- def __init__ (self , netbox , handle , counter , ignore_ssl ):
192
+ def __init__ (self , netbox , handle , counter , ignore_ssl , new_filters ):
187
193
self .netbox = netbox
188
194
self .handle = handle
189
195
self .counter = counter
190
196
self .existing_device_types = self .get_device_types ()
191
197
self .ignore_ssl = ignore_ssl
198
+ self .new_filters = new_filters
192
199
193
200
def get_device_types (self ):
194
201
return {str (item ): item for item in self .netbox .dcim .device_types .all ()}
195
202
196
203
def get_power_ports (self , device_type ):
197
- return {str (item ): item for item in self .netbox .dcim .power_port_templates .filter (devicetype_id = device_type )}
198
-
204
+ return {str (item ): item for item in self .netbox .dcim .power_port_templates .filter (** { 'device_type_id' if self . new_filters else ' devicetype_id' : device_type } )}
205
+
199
206
def get_rear_ports (self , device_type ):
200
- return {str (item ): item for item in self .netbox .dcim .rear_port_templates .filter (devicetype_id = device_type )}
207
+ return {str (item ): item for item in self .netbox .dcim .rear_port_templates .filter (** { 'device_type_id' if self . new_filters else ' devicetype_id' : device_type } )}
201
208
202
209
def get_module_power_ports (self , module_type ):
203
- return {str (item ): item for item in self .netbox .dcim .power_port_templates .filter (moduletype_id = module_type )}
210
+ return {str (item ): item for item in self .netbox .dcim .power_port_templates .filter (** { 'module_type_id' if self . new_filters else ' moduletype_id' : module_type } )}
204
211
205
212
def get_module_rear_ports (self , module_type ):
206
- return {str (item ): item for item in self .netbox .dcim .rear_port_templates .filter (moduletype_id = module_type )}
213
+ return {str (item ): item for item in self .netbox .dcim .rear_port_templates .filter (** { 'module_type_id' if self . new_filters else ' moduletype_id' : module_type } )}
207
214
208
215
def get_device_type_ports_to_create (self , dcim_ports , device_type , existing_ports ):
209
216
to_create = [port for port in dcim_ports if port ['name' ] not in existing_ports ]
@@ -221,7 +228,7 @@ def get_module_type_ports_to_create(self, module_ports, module_type, existing_po
221
228
222
229
def create_interfaces (self , interfaces , device_type ):
223
230
existing_interfaces = {str (item ): item for item in self .netbox .dcim .interface_templates .filter (
224
- devicetype_id = device_type )}
231
+ ** { 'device_type_id' if self . new_filters else ' devicetype_id' : device_type } )}
225
232
to_create = self .get_device_type_ports_to_create (
226
233
interfaces , device_type , existing_interfaces )
227
234
@@ -248,7 +255,7 @@ def create_power_ports(self, power_ports, device_type):
248
255
self .handle .log (f"Error '{ excep .error } ' creating Power Port" )
249
256
250
257
def create_console_ports (self , console_ports , device_type ):
251
- existing_console_ports = {str (item ): item for item in self .netbox .dcim .console_port_templates .filter (devicetype_id = device_type )}
258
+ existing_console_ports = {str (item ): item for item in self .netbox .dcim .console_port_templates .filter (** { 'device_type_id' if self . new_filters else ' devicetype_id' : device_type } )}
252
259
to_create = self .get_device_type_ports_to_create (console_ports , device_type , existing_console_ports )
253
260
254
261
if to_create :
@@ -261,7 +268,7 @@ def create_console_ports(self, console_ports, device_type):
261
268
self .handle .log (f"Error '{ excep .error } ' creating Console Port" )
262
269
263
270
def create_power_outlets (self , power_outlets , device_type ):
264
- existing_power_outlets = {str (item ): item for item in self .netbox .dcim .power_outlet_templates .filter (devicetype_id = device_type )}
271
+ existing_power_outlets = {str (item ): item for item in self .netbox .dcim .power_outlet_templates .filter (** { 'device_type_id' if self . new_filters else ' devicetype_id' : device_type } )}
265
272
to_create = self .get_device_type_ports_to_create (power_outlets , device_type , existing_power_outlets )
266
273
267
274
if to_create :
@@ -282,7 +289,7 @@ def create_power_outlets(self, power_outlets, device_type):
282
289
self .handle .log (f"Error '{ excep .error } ' creating Power Outlet" )
283
290
284
291
def create_console_server_ports (self , console_server_ports , device_type ):
285
- existing_console_server_ports = {str (item ): item for item in self .netbox .dcim .console_server_port_templates .filter (devicetype_id = device_type )}
292
+ existing_console_server_ports = {str (item ): item for item in self .netbox .dcim .console_server_port_templates .filter (** { 'device_type_id' if self . new_filters else ' devicetype_id' : device_type } )}
286
293
to_create = self .get_device_type_ports_to_create (console_server_ports , device_type , existing_console_server_ports )
287
294
288
295
if to_create :
@@ -308,7 +315,7 @@ def create_rear_ports(self, rear_ports, device_type):
308
315
self .handle .log (f"Error '{ excep .error } ' creating Rear Port" )
309
316
310
317
def create_front_ports (self , front_ports , device_type ):
311
- existing_front_ports = {str (item ): item for item in self .netbox .dcim .front_port_templates .filter (devicetype_id = device_type )}
318
+ existing_front_ports = {str (item ): item for item in self .netbox .dcim .front_port_templates .filter (** { 'device_type_id' if self . new_filters else ' devicetype_id' : device_type } )}
312
319
to_create = self .get_device_type_ports_to_create (front_ports , device_type , existing_front_ports )
313
320
314
321
if to_create :
@@ -330,7 +337,7 @@ def create_front_ports(self, front_ports, device_type):
330
337
self .handle .log (f"Error '{ excep .error } ' creating Front Port" )
331
338
332
339
def create_device_bays (self , device_bays , device_type ):
333
- existing_device_bays = {str (item ): item for item in self .netbox .dcim .device_bay_templates .filter (devicetype_id = device_type )}
340
+ existing_device_bays = {str (item ): item for item in self .netbox .dcim .device_bay_templates .filter (** { 'device_type_id' if self . new_filters else ' devicetype_id' : device_type } )}
334
341
to_create = self .get_device_type_ports_to_create (device_bays , device_type , existing_device_bays )
335
342
336
343
if to_create :
@@ -343,7 +350,7 @@ def create_device_bays(self, device_bays, device_type):
343
350
self .handle .log (f"Error '{ excep .error } ' creating Device Bay" )
344
351
345
352
def create_module_bays (self , module_bays , device_type ):
346
- existing_module_bays = {str (item ): item for item in self .netbox .dcim .module_bay_templates .filter (devicetype_id = device_type )}
353
+ existing_module_bays = {str (item ): item for item in self .netbox .dcim .module_bay_templates .filter (** { 'device_type_id' if self . new_filters else ' devicetype_id' : device_type } )}
347
354
to_create = self .get_device_type_ports_to_create (module_bays , device_type , existing_module_bays )
348
355
349
356
if to_create :
@@ -356,7 +363,7 @@ def create_module_bays(self, module_bays, device_type):
356
363
self .handle .log (f"Error '{ excep .error } ' creating Module Bay" )
357
364
358
365
def create_module_interfaces (self , module_interfaces , module_type ):
359
- existing_interfaces = {str (item ): item for item in self .netbox .dcim .interface_templates .filter (moduletype_id = module_type )}
366
+ existing_interfaces = {str (item ): item for item in self .netbox .dcim .interface_templates .filter (** { 'module_type_id' if self . new_filters else ' moduletype_id' : module_type } )}
360
367
to_create = self .get_module_type_ports_to_create (module_interfaces , module_type , existing_interfaces )
361
368
362
369
if to_create :
@@ -382,7 +389,7 @@ def create_module_power_ports(self, power_ports, module_type):
382
389
self .handle .log (f"Error '{ excep .error } ' creating Module Power Port" )
383
390
384
391
def create_module_console_ports (self , console_ports , module_type ):
385
- existing_console_ports = {str (item ): item for item in self .netbox .dcim .console_port_templates .filter (moduletype_id = module_type )}
392
+ existing_console_ports = {str (item ): item for item in self .netbox .dcim .console_port_templates .filter (** { 'module_type_id' if self . new_filters else ' moduletype_id' : module_type } )}
386
393
to_create = self .get_module_type_ports_to_create (console_ports , module_type , existing_console_ports )
387
394
388
395
if to_create :
@@ -395,7 +402,7 @@ def create_module_console_ports(self, console_ports, module_type):
395
402
self .handle .log (f"Error '{ excep .error } ' creating Module Console Port" )
396
403
397
404
def create_module_power_outlets (self , power_outlets , module_type ):
398
- existing_power_outlets = {str (item ): item for item in self .netbox .dcim .power_outlet_templates .filter (moduletype_id = module_type )}
405
+ existing_power_outlets = {str (item ): item for item in self .netbox .dcim .power_outlet_templates .filter (** { 'module_type_id' if self . new_filters else ' moduletype_id' : module_type } )}
399
406
to_create = self .get_module_type_ports_to_create (power_outlets , module_type , existing_power_outlets )
400
407
401
408
if to_create :
@@ -416,7 +423,7 @@ def create_module_power_outlets(self, power_outlets, module_type):
416
423
self .handle .log (f"Error '{ excep .error } ' creating Module Power Outlet" )
417
424
418
425
def create_module_console_server_ports (self , console_server_ports , module_type ):
419
- existing_console_server_ports = {str (item ): item for item in self .netbox .dcim .console_server_port_templates .filter (moduletype_id = module_type )}
426
+ existing_console_server_ports = {str (item ): item for item in self .netbox .dcim .console_server_port_templates .filter (** { 'module_type_id' if self . new_filters else ' moduletype_id' : module_type } )}
420
427
to_create = self .get_module_type_ports_to_create (console_server_ports , module_type , existing_console_server_ports )
421
428
422
429
if to_create :
@@ -442,7 +449,7 @@ def create_module_rear_ports(self, rear_ports, module_type):
442
449
self .handle .log (f"Error '{ excep .error } ' creating Module Rear Port" )
443
450
444
451
def create_module_front_ports (self , front_ports , module_type ):
445
- existing_front_ports = {str (item ): item for item in self .netbox .dcim .front_port_templates .filter (moduletype_id = module_type )}
452
+ existing_front_ports = {str (item ): item for item in self .netbox .dcim .front_port_templates .filter (** { 'module_type_id' if self . new_filters else ' moduletype_id' : module_type } )}
446
453
to_create = self .get_module_type_ports_to_create (front_ports , module_type , existing_front_ports )
447
454
448
455
if to_create :
0 commit comments