Ignore VC member interfaces where mgmt_only=True

This commit is contained in:
Jeremy Stretch 2017-12-18 16:44:44 -05:00
parent d41f4d2db3
commit 022c360964
2 changed files with 5 additions and 9 deletions

View File

@ -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):
"""

View File

@ -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(