From 022c360964e345e8a825fccd860868293c74af1e Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 18 Dec 2017 16:44:44 -0500 Subject: [PATCH] Ignore VC member interfaces where mgmt_only=True --- netbox/dcim/models.py | 6 +++--- netbox/dcim/views.py | 8 ++------ 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/netbox/dcim/models.py b/netbox/dcim/models.py index 12fd2fe83..9a86cf8c3 100644 --- a/netbox/dcim/models.py +++ b/netbox/dcim/models.py @@ -1047,10 +1047,10 @@ class Device(CreatedUpdatedModel, CustomFieldModel): Return a QuerySet matching all Interfaces assigned to this Device or, if this Device is a VC master, to another Device belonging to the same virtual chassis. """ + filter = Q(device=self) if hasattr(self, 'vc_membership') and self.vc_membership.is_master: - return Interface.objects.filter(device__vc_membership__virtual_chassis=self.vc_membership.virtual_chassis) - else: - return self.interfaces.all() + filter |= Q(device__vc_membership__virtual_chassis=self.vc_membership.virtual_chassis, mgmt_only=False) + return Interface.objects.filter(filter) def get_children(self): """ diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index 7e635e979..4e9cdf521 100644 --- a/netbox/dcim/views.py +++ b/netbox/dcim/views.py @@ -812,7 +812,6 @@ class DeviceView(View): # Find virtual chassis memberships vc_memberships = VCMembership.objects.filter(virtual_chassis=device.virtual_chassis).select_related('device') - vc_peer_ids = [vcm.device_id for vcm in vc_memberships] # Console ports console_ports = natsorted( @@ -831,15 +830,12 @@ class DeviceView(View): power_outlets = PowerOutlet.objects.filter(device=device).select_related('connected_port') # Interfaces - interfaces_filter = Q(device=device) - if hasattr(device, 'vc_membership') and device.vc_membership.is_master: - interfaces_filter |= Q(device_id__in=vc_peer_ids, mgmt_only=False) - interfaces = Interface.objects.order_naturally( + interfaces = device.vc_interfaces.order_naturally( device.device_type.interface_ordering ).select_related( 'connected_as_a__interface_b__device', 'connected_as_b__interface_a__device', 'circuit_termination__circuit' - ).filter(interfaces_filter).prefetch_related('ip_addresses') + ).prefetch_related('ip_addresses') # Device bays device_bays = natsorted(