From 8f468b4bbfcc54e2f37fb248433f5ed15f6954de Mon Sep 17 00:00:00 2001 From: Martin Hauser Date: Mon, 19 Jan 2026 14:27:38 +0100 Subject: [PATCH] feat(ipam): Add connection/link peer to VLANDeviceTable The VLAN Device Interfaces table now includes `connection` and `link_peer` columns, using the existing interface templates to render peer/connection context consistently. Fixes #15801 --- netbox/ipam/tables/vlans.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/netbox/ipam/tables/vlans.py b/netbox/ipam/tables/vlans.py index d125da901..eaaee9a80 100644 --- a/netbox/ipam/tables/vlans.py +++ b/netbox/ipam/tables/vlans.py @@ -4,6 +4,7 @@ from django.utils.translation import gettext_lazy as _ from django_tables2.utils import Accessor from dcim.models import Interface +from dcim.tables.template_code import INTERFACE_LINKTERMINATION, LINKTERMINATION from ipam.models import * from netbox.tables import NetBoxTable, OrganizationalModelTable, PrimaryModelTable, columns from tenancy.tables import TenancyColumnsMixin, TenantColumn @@ -159,11 +160,26 @@ class VLANDevicesTable(VLANMembersTable): actions = columns.ActionsColumn( actions=('edit',) ) + link_peer = columns.TemplateColumn( + accessor='link_peers', + template_code=LINKTERMINATION, + orderable=False, + verbose_name=_('Link Peers'), + ) + + # Override PathEndpointTable.connection to accommodate virtual circuits + connection = columns.TemplateColumn( + accessor='_path__destinations', + template_code=INTERFACE_LINKTERMINATION, + orderable=False, + verbose_name=_('Connection'), + ) class Meta(NetBoxTable.Meta): model = Interface - fields = ('device', 'name', 'tagged', 'actions') - exclude = ('id', ) + fields = ('device', 'name', 'link_peer', 'connection', 'tagged', 'actions') + default_columns = ('device', 'name', 'connection', 'tagged', 'actions') + exclude = ('id',) class VLANVirtualMachinesTable(VLANMembersTable):