From 9f7ed25e740936d747e0dade2214516221dfe2cf Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 13 Jul 2020 16:18:17 -0400 Subject: [PATCH] Add assigned IP addresses and VLANs to interface tables --- netbox/dcim/tables.py | 29 ++++++++++++++++++++++++++++- netbox/virtualization/tables.py | 9 ++++++--- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/netbox/dcim/tables.py b/netbox/dcim/tables.py index 028c658f7..823788292 100644 --- a/netbox/dcim/tables.py +++ b/netbox/dcim/tables.py @@ -109,6 +109,18 @@ POWERPANEL_POWERFEED_COUNT = """ {{ value }} """ +INTERFACE_IPADDRESSES = """ +{% for ip in record.ip_addresses.unrestricted %} + {{ ip }}
+{% endfor %} +""" + +INTERFACE_TAGGED_VLANS = """ +{% for vlan in record.tagged_vlans.unrestricted %} + {{ vlan }}
+{% endfor %} +""" + # # Regions @@ -711,13 +723,28 @@ class PowerOutletTable(DeviceComponentTable): default_columns = ('pk', 'device', 'name', 'label', 'type', 'power_port', 'feed_leg', 'description') -class InterfaceTable(DeviceComponentTable): +class BaseInterfaceTable(BaseTable): enabled = BooleanColumn() + ip_addresses = tables.TemplateColumn( + template_code=INTERFACE_IPADDRESSES, + orderable=False, + verbose_name='IP Addresses' + ) + untagged_vlan = tables.Column(linkify=True) + tagged_vlans = tables.TemplateColumn( + template_code=INTERFACE_TAGGED_VLANS, + orderable=False, + verbose_name='Tagged VLANs' + ) + + +class InterfaceTable(DeviceComponentTable, BaseInterfaceTable): class Meta(DeviceComponentTable.Meta): model = Interface fields = ( 'pk', 'device', 'name', 'label', 'enabled', 'type', 'mgmt_only', 'mtu', 'mode', 'description', 'cable', + 'ip_addresses', 'untagged_vlan', 'tagged_vlans', ) default_columns = ('pk', 'device', 'name', 'label', 'enabled', 'type', 'description') diff --git a/netbox/virtualization/tables.py b/netbox/virtualization/tables.py index c1b927239..8289d9758 100644 --- a/netbox/virtualization/tables.py +++ b/netbox/virtualization/tables.py @@ -1,6 +1,7 @@ import django_tables2 as tables from django_tables2.utils import Accessor +from dcim.tables import BaseInterfaceTable from tenancy.tables import COL_TENANT from utilities.tables import BaseTable, BooleanColumn, ButtonsColumn, ColoredLabelColumn, TagColumn, ToggleColumn from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine, VMInterface @@ -146,9 +147,8 @@ class VirtualMachineDetailTable(VirtualMachineTable): # VM components # -class VMInterfaceTable(BaseTable): +class VMInterfaceTable(BaseInterfaceTable): pk = ToggleColumn() - enabled = BooleanColumn() virtual_machine = tables.LinkColumn() name = tables.Column( linkify=True @@ -156,5 +156,8 @@ class VMInterfaceTable(BaseTable): class Meta(BaseTable.Meta): model = VMInterface - fields = ('pk', 'virtual_machine', 'name', 'enabled', 'mac_address', 'mtu', 'description') + fields = ( + 'pk', 'virtual_machine', 'name', 'enabled', 'mac_address', 'mtu', 'description', 'ip_addresses', + 'untagged_vlan', 'tagged_vlans', + ) default_columns = ('pk', 'virtual_machine', 'name', 'enabled', 'description')