@@ -184,6 +184,10 @@ def get_icon_type(device_id):
184184 4. Default 'undefined'
185185 """
186186 nb_device = Device .objects .get (id = device_id )
187+ if NETBOX_CURRENT_VERSION >= version .parse ("4.0.0" ):
188+ device_role_obj = nb_device .role
189+ else :
190+ device_role_obj = nb_device .device_role
187191 if not nb_device :
188192 return 'unknown'
189193 for tag in nb_device .tags .names ():
@@ -194,7 +198,7 @@ def get_icon_type(device_id):
194198 if model_base in str (nb_device .device_type .model ):
195199 return icon_type
196200 for role_slug , icon_type in ICON_ROLE_MAP .items ():
197- if str (nb_device . device_role .slug ) == role_slug :
201+ if str (device_role_obj .slug ) == role_slug :
198202 return icon_type
199203 return 'unknown'
200204
@@ -268,6 +272,10 @@ def get_vlan_topology(nb_devices_qs, vlans):
268272 for device in devices :
269273 device_is_passive = False
270274 device_url = device .get_absolute_url ()
275+ if NETBOX_CURRENT_VERSION >= version .parse ("4.0.0" ):
276+ device_role_obj = device .role
277+ else :
278+ device_role_obj = device .device_role
271279 primary_ip = ''
272280 if device .primary_ip :
273281 primary_ip = str (device .primary_ip .address )
@@ -281,18 +289,18 @@ def get_vlan_topology(nb_devices_qs, vlans):
281289 'primaryIP' : primary_ip ,
282290 'serial_number' : device .serial ,
283291 'model' : device .device_type .model ,
284- 'deviceRole' : device . device_role .slug ,
292+ 'deviceRole' : device_role_obj .slug ,
285293 'layerSortPreference' : get_node_layer_sort_preference (
286- device . device_role .slug
294+ device_role_obj .slug
287295 ),
288296 'icon' : get_icon_type (
289297 device .id
290298 ),
291299 'isPassive' : device_is_passive ,
292300 'tags' : tags ,
293301 })
294- is_visible = not (device . device_role .slug in UNDISPLAYED_DEVICE_ROLE_SLUGS )
295- device_roles .add ((device . device_role . slug , device . device_role .name , is_visible ))
302+ is_visible = not (device_role_obj .slug in UNDISPLAYED_DEVICE_ROLE_SLUGS )
303+ device_roles .add ((device_role_obj . slug , device_role_obj .name , is_visible ))
296304
297305 mapped_links = []
298306 for interface in filtred_interfaces :
@@ -333,6 +341,10 @@ def get_topology(nb_devices_qs):
333341 device_is_passive = False
334342 device_url = nb_device .get_absolute_url ()
335343 primary_ip = ''
344+ if NETBOX_CURRENT_VERSION >= version .parse ("4.0.0" ):
345+ device_role_obj = nb_device .role
346+ else :
347+ device_role_obj = nb_device .device_role
336348 if nb_device .primary_ip :
337349 primary_ip = str (nb_device .primary_ip .address )
338350 tags = [str (tag ) for tag in nb_device .tags .names ()] or []
@@ -382,18 +394,18 @@ def get_topology(nb_devices_qs):
382394 'primaryIP' : primary_ip ,
383395 'serial_number' : nb_device .serial ,
384396 'model' : nb_device .device_type .model ,
385- 'deviceRole' : nb_device . device_role .slug ,
397+ 'deviceRole' : device_role_obj .slug ,
386398 'layerSortPreference' : get_node_layer_sort_preference (
387- nb_device . device_role .slug
399+ device_role_obj .slug
388400 ),
389401 'icon' : get_icon_type (
390402 nb_device .id
391403 ),
392404 'isPassive' : device_is_passive ,
393405 'tags' : tags ,
394406 })
395- is_visible = not (nb_device . device_role .slug in UNDISPLAYED_DEVICE_ROLE_SLUGS )
396- device_roles .add ((nb_device . device_role . slug , nb_device . device_role .name , is_visible ))
407+ is_visible = not (device_role_obj .slug in UNDISPLAYED_DEVICE_ROLE_SLUGS )
408+ device_roles .add ((device_role_obj . slug , device_role_obj .name , is_visible ))
397409 if not links_from_device :
398410 continue
399411 for link in links_from_device :
0 commit comments