From 3891b2a25f3325bfc6cebc4c6f342d950caf6116 Mon Sep 17 00:00:00 2001 From: Brian Tiemann Date: Thu, 22 Jan 2026 21:56:33 -0500 Subject: [PATCH] Richer display of MAC addresses in InterfaceTable when multiple MACs are present --- netbox/dcim/models/device_components.py | 19 +++++++++++++++++++ netbox/dcim/tables/devices.py | 1 + 2 files changed, 20 insertions(+) diff --git a/netbox/dcim/models/device_components.py b/netbox/dcim/models/device_components.py index a16daa1e5..b78927243 100644 --- a/netbox/dcim/models/device_components.py +++ b/netbox/dcim/models/device_components.py @@ -732,6 +732,25 @@ class BaseInterface(models.Model): if self.primary_mac_address: return self.primary_mac_address.mac_address + @property + def mac_address_display(self): + """ + Rich representation of MAC addresses for use in table columns (e.g. InterfaceTable). + Handles various configurations of MAC addresses for an interface: + 11:22:33:44:55:66 <-- Single MAC address, assigned as primary + 11:22:33:44:55:66 (2) <-- Multiple MAC addresses on interface, one assigned as primary + 2 available <-- Multiple MAC addresses on interface, none assigned as primary + - <-- No MAC addresses on interface + """ + available_mac_count = self.mac_addresses.count() + if self.primary_mac_address: + if available_mac_count > 1: + return f"{self.primary_mac_address} ({available_mac_count})" + return self.primary_mac_address + if available_mac_count: + return f"{available_mac_count} available" + return None + class Interface( InterfaceValidationMixin, diff --git a/netbox/dcim/tables/devices.py b/netbox/dcim/tables/devices.py index f01a3ed2f..81b3ace20 100644 --- a/netbox/dcim/tables/devices.py +++ b/netbox/dcim/tables/devices.py @@ -616,6 +616,7 @@ class BaseInterfaceTable(NetBoxTable): ) primary_mac_address = tables.Column( verbose_name=_('MAC Address'), + accessor=Accessor('mac_address_display'), linkify=True )