From 35273c7bfe3623d00ddfa27f7d74db055088394e Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Fri, 16 Oct 2020 11:41:24 -0400 Subject: [PATCH] Add connection column for path endpoints --- netbox/dcim/tables/devices.py | 31 +++++++++++++++++++++---------- netbox/dcim/tables/power.py | 2 ++ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index 334947263..21c2f4244 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -215,29 +215,40 @@ class CableTerminationTable(BaseTable): ) -class ConsolePortTable(DeviceComponentTable, CableTerminationTable): +class PathEndpointTable(CableTerminationTable): + connection = tables.TemplateColumn( + accessor='_path.destination', + template_code=CABLETERMINATION, + verbose_name='Connection', + orderable=False + ) + + +class ConsolePortTable(DeviceComponentTable, PathEndpointTable): tags = TagColumn( url_name='dcim:consoleport_list' ) class Meta(DeviceComponentTable.Meta): model = ConsolePort - fields = ('pk', 'device', 'name', 'label', 'type', 'description', 'cable', 'cable_peer', 'tags') + fields = ( + 'pk', 'device', 'name', 'label', 'type', 'description', 'cable', 'cable_peer', 'connection', 'tags', + ) default_columns = ('pk', 'device', 'name', 'label', 'type', 'description') -class ConsoleServerPortTable(DeviceComponentTable, CableTerminationTable): +class ConsoleServerPortTable(DeviceComponentTable, PathEndpointTable): tags = TagColumn( url_name='dcim:consoleserverport_list' ) class Meta(DeviceComponentTable.Meta): model = ConsoleServerPort - fields = ('pk', 'device', 'name', 'label', 'type', 'description', 'cable', 'cable_peer', 'tags') + fields = ('pk', 'device', 'name', 'label', 'type', 'description', 'cable', 'cable_peer', 'connection', 'tags') default_columns = ('pk', 'device', 'name', 'label', 'type', 'description') -class PowerPortTable(DeviceComponentTable, CableTerminationTable): +class PowerPortTable(DeviceComponentTable, PathEndpointTable): tags = TagColumn( url_name='dcim:powerport_list' ) @@ -246,12 +257,12 @@ class PowerPortTable(DeviceComponentTable, CableTerminationTable): model = PowerPort fields = ( 'pk', 'device', 'name', 'label', 'type', 'description', 'maximum_draw', 'allocated_draw', 'cable', - 'cable_peer', 'tags', + 'cable_peer', 'connection', 'tags', ) default_columns = ('pk', 'device', 'name', 'label', 'type', 'maximum_draw', 'allocated_draw', 'description') -class PowerOutletTable(DeviceComponentTable, CableTerminationTable): +class PowerOutletTable(DeviceComponentTable, PathEndpointTable): tags = TagColumn( url_name='dcim:poweroutlet_list' ) @@ -260,7 +271,7 @@ class PowerOutletTable(DeviceComponentTable, CableTerminationTable): model = PowerOutlet fields = ( 'pk', 'device', 'name', 'label', 'type', 'description', 'power_port', 'feed_leg', 'cable', 'cable_peer', - 'tags', + 'connection', 'tags', ) default_columns = ('pk', 'device', 'name', 'label', 'type', 'power_port', 'feed_leg', 'description') @@ -280,7 +291,7 @@ class BaseInterfaceTable(BaseTable): ) -class InterfaceTable(DeviceComponentTable, BaseInterfaceTable, CableTerminationTable): +class InterfaceTable(DeviceComponentTable, BaseInterfaceTable, PathEndpointTable): tags = TagColumn( url_name='dcim:interface_list' ) @@ -289,7 +300,7 @@ class InterfaceTable(DeviceComponentTable, BaseInterfaceTable, CableTerminationT model = Interface fields = ( 'pk', 'device', 'name', 'label', 'enabled', 'type', 'mgmt_only', 'mtu', 'mode', 'mac_address', - 'description', 'cable', 'cable_peer', 'tags', 'ip_addresses', 'untagged_vlan', 'tagged_vlans', + 'description', 'cable', 'cable_peer', 'connection', 'tags', 'ip_addresses', 'untagged_vlan', 'tagged_vlans', ) default_columns = ('pk', 'device', 'name', 'label', 'enabled', 'type', 'description') diff --git a/netbox/dcim/tables/power.py b/netbox/dcim/tables/power.py index 471b1bb3a..ae5c2a5c8 100644 --- a/netbox/dcim/tables/power.py +++ b/netbox/dcim/tables/power.py @@ -42,6 +42,8 @@ class PowerPanelTable(BaseTable): # Power feeds # +# We're not using PathEndpointTable for PowerFeed because power connections +# cannot traverse pass-through ports. class PowerFeedTable(CableTerminationTable): pk = ToggleColumn() name = tables.LinkColumn()