Browse Source

Return all VC member interfaces when filtering for the master device; remove virtual_chassis_id filter

Jeremy Stretch 7 years ago
parent
commit
d41f4d2db3
1 changed files with 2 additions and 14 deletions
  1. 2 14
      netbox/dcim/filters.py

+ 2 - 14
netbox/dcim/filters.py

@@ -569,11 +569,6 @@ class InterfaceFilter(django_filters.FilterSet):
         method='_mac_address',
         label='MAC address',
     )
-    virtual_chassis_id = django_filters.NumberFilter(
-        method='_virtual_chassis_id',
-        name='pk',
-        label='Virtual chassis (ID)',
-    )
 
     class Meta:
         model = Interface
@@ -582,8 +577,9 @@ class InterfaceFilter(django_filters.FilterSet):
     def filter_device(self, queryset, name, value):
         try:
             device = Device.objects.select_related('device_type').get(**{name: value})
+            vc_interface_ids = [i['id'] for i in device.vc_interfaces.values('id')]
             ordering = device.device_type.interface_ordering
-            return queryset.filter(device=device).order_naturally(ordering)
+            return queryset.filter(pk__in=vc_interface_ids).order_naturally(ordering)
         except Device.DoesNotExist:
             return queryset.none()
 
@@ -606,14 +602,6 @@ class InterfaceFilter(django_filters.FilterSet):
         except AddrFormatError:
             return queryset.none()
 
-    def _virtual_chassis_id(self, queryset, name, value):
-        try:
-            virtual_chassis = VirtualChassis.objects.get(**{name: value})
-            ordering = virtual_chassis.master.device_type.interface_ordering
-            return queryset.filter(device__vc_membership__virtual_chassis=virtual_chassis).order_naturally(ordering)
-        except VirtualChassis.DoesNotExist:
-            return queryset.none()
-
 
 class DeviceBayFilter(DeviceComponentFilterSet):