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')