From f5d9f589bf23f855784e6ff835a2a2830c85ec3f Mon Sep 17 00:00:00 2001
From: mattieserver <3049868+mattieserver@users.noreply.github.com>
Date: Wed, 9 Mar 2022 21:00:55 +0100
Subject: [PATCH] Fix circuit error (#87)
* fix 'Interface' object has no attribute 'circuit'
---
netbox_topology_views/__init__.py | 4 +-
netbox_topology_views/views.py | 79 ++++++++++++++++---------------
package-lock.json | 2 +-
package.json | 2 +-
setup.py | 2 +-
5 files changed, 45 insertions(+), 44 deletions(-)
diff --git a/netbox_topology_views/__init__.py b/netbox_topology_views/__init__.py
index a84cbc6..7888f9d 100644
--- a/netbox_topology_views/__init__.py
+++ b/netbox_topology_views/__init__.py
@@ -4,7 +4,7 @@ class TopologyViewsConfig(PluginConfig):
name = 'netbox_topology_views'
verbose_name = 'Topology views'
description = 'An plugin to render topology maps'
- version = '1.0.0'
+ version = '1.0.1'
author = 'Mattijs Vanhaverbeke'
author_email = 'author@example.com'
base_url = 'netbox_topology_views'
@@ -15,7 +15,7 @@ class TopologyViewsConfig(PluginConfig):
'device_img': ['access-switch', 'core-switch', 'firewall', 'router', 'distribution-switch', 'backup', 'storage,wan-network', 'wireless-ap', 'server', 'internal-switch', 'isp-cpe-material', 'non-racked-devices', 'power-units'],
'allow_coordinates_saving': False,
'preselected_tags' : [],
- 'enable_circuit_terminations': True,
+ 'enable_circuit_terminations': False,
'draw_default_layout': False
}
diff --git a/netbox_topology_views/views.py b/netbox_topology_views/views.py
index ea75321..4e8c424 100644
--- a/netbox_topology_views/views.py
+++ b/netbox_topology_views/views.py
@@ -66,52 +66,53 @@ def get_topology_data(queryset, hide_unconnected):
device_has_connections = True
else:
if settings.PLUGINS_CONFIG["netbox_topology_views"]["enable_circuit_terminations"]:
- if link_from.termination_a.circuit.id not in circuit_ids:
- circuit_ids.append(link_from.termination_a.circuit.id)
- edge_ids += 1
+ if link_from.termination_a_type.name == "circuit termination":
+ if link_from.termination_a.circuit.id not in circuit_ids:
+ circuit_ids.append(link_from.termination_a.circuit.id)
+ edge_ids += 1
- cable_b_dev_name = link_from.termination_b.device.name
- if cable_b_dev_name is None:
- cable_b_dev_name = "device B name unknown"
- cable_b_name = link_from.termination_b.name
- if cable_b_name is None:
- cable_b_name = "cable B name unknown"
+ cable_b_dev_name = link_from.termination_b.device.name
+ if cable_b_dev_name is None:
+ cable_b_dev_name = "device B name unknown"
+ cable_b_name = link_from.termination_b.name
+ if cable_b_name is None:
+ cable_b_name = "cable B name unknown"
- edge = {}
- edge["id"] = edge_ids
- edge["to"] = link_from.termination_b.device.id
- edge["dashes"] = True
- title = ""
+ edge = {}
+ edge["id"] = edge_ids
+ edge["to"] = link_from.termination_b.device.id
+ edge["dashes"] = True
+ title = ""
- title += "Circuit provider: " + link_from.termination_a.circuit.provider.name + "
"
- title += "Termination between
"
- title += cable_b_dev_name + " [" + cable_b_name + "]
"
+ title += "Circuit provider: " + link_from.termination_a.circuit.provider.name + "
"
+ title += "Termination between
"
+ title += cable_b_dev_name + " [" + cable_b_name + "]
"
- if link_from.termination_a.circuit.termination_a is not None and link_from.termination_a.circuit.termination_a.cable is not None and link_from.termination_a.circuit.termination_a.cable.id != link_from.id and link_from.termination_a.circuit.termination_a.cable.termination_b is not None and link_from.termination_a.circuit.termination_a.cable.termination_b.device is not None:
- edge["from"] = link_from.termination_a.circuit.termination_a.cable.termination_b.device.id
+ if link_from.termination_a.circuit.termination_a is not None and link_from.termination_a.circuit.termination_a.cable is not None and link_from.termination_a.circuit.termination_a.cable.id != link_from.id and link_from.termination_a.circuit.termination_a.cable.termination_b is not None and link_from.termination_a.circuit.termination_a.cable.termination_b.device is not None:
+ edge["from"] = link_from.termination_a.circuit.termination_a.cable.termination_b.device.id
- cable_a_dev_name = link_from.termination_a.circuit.termination_a.cable.termination_b.device.name
- if cable_a_dev_name is None:
- cable_a_dev_name = "device B name unknown"
- cable_b_name = link_from.termination_a.circuit.termination_a.cable.termination_b.name
- if cable_a_name is None:
- cable_a_name = "cable B name unknown"
- title += cable_a_dev_name + " [" + cable_a_name + "]
"
- edge["title"] = title
- edges.append(edge)
+ cable_a_dev_name = link_from.termination_a.circuit.termination_a.cable.termination_b.device.name
+ if cable_a_dev_name is None:
+ cable_a_dev_name = "device B name unknown"
+ cable_b_name = link_from.termination_a.circuit.termination_a.cable.termination_b.name
+ if cable_a_name is None:
+ cable_a_name = "cable B name unknown"
+ title += cable_a_dev_name + " [" + cable_a_name + "]
"
+ edge["title"] = title
+ edges.append(edge)
- if link_from.termination_a.circuit.termination_z is not None and link_from.termination_a.circuit.termination_z.cable is not None and link_from.termination_a.circuit.termination_z.cable.id != link_from.id and link_from.termination_a.circuit.termination_z.cable.termination_b is not None and link_from.termination_a.circuit.termination_z.cable.termination_b.device is not None:
- edge["from"] = link_from.termination_a.circuit.termination_z.cable.termination_b.device.id
+ if link_from.termination_a.circuit.termination_z is not None and link_from.termination_a.circuit.termination_z.cable is not None and link_from.termination_a.circuit.termination_z.cable.id != link_from.id and link_from.termination_a.circuit.termination_z.cable.termination_b is not None and link_from.termination_a.circuit.termination_z.cable.termination_b.device is not None:
+ edge["from"] = link_from.termination_a.circuit.termination_z.cable.termination_b.device.id
- cable_a_dev_name = link_from.termination_a.circuit.termination_z.cable.termination_b.device.name
- if cable_a_dev_name is None:
- cable_a_dev_name = "device B name unknown"
- cable_a_name = link_from.termination_a.circuit.termination_z.cable.termination_b.name
- if cable_a_name is None:
- cable_a_name = "cable B name unknown"
- title += cable_a_dev_name + " [" + cable_a_name + "]
"
- edge["title"] = title
- edges.append(edge)
+ cable_a_dev_name = link_from.termination_a.circuit.termination_z.cable.termination_b.device.name
+ if cable_a_dev_name is None:
+ cable_a_dev_name = "device B name unknown"
+ cable_a_name = link_from.termination_a.circuit.termination_z.cable.termination_b.name
+ if cable_a_name is None:
+ cable_a_name = "cable B name unknown"
+ title += cable_a_dev_name + " [" + cable_a_name + "]
"
+ edge["title"] = title
+ edges.append(edge)
if qs_device.id not in nodes_ids:
if hide_unconnected == None or (hide_unconnected is True and device_has_connections is True):
diff --git a/package-lock.json b/package-lock.json
index 7fc0e1b..0ff1e48 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "netbox_topology_views",
- "version": "1.0.0",
+ "version": "1.0.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
diff --git a/package.json b/package.json
index 9d58c29..f13c22e 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"private": true,
"name": "netbox_topology_views",
- "version": "1.0.0",
+ "version": "1.0.1",
"scripts": {
"resources": "gulp build",
"resources_dev": "gulp build_dev"
diff --git a/setup.py b/setup.py
index 3ae1cae..e69f9ae 100644
--- a/setup.py
+++ b/setup.py
@@ -3,7 +3,7 @@ from setuptools import setup, find_packages
setup(
name='netbox-topology-views',
- version='1.0.0',
+ version='1.0.1',
description='An NetBox plugin to create Topology maps',
url='https://github.com/mattieserver/netbox-topology-views',
author='Mattijs Vanhaverbeke',