Explorar o código

Add cluster and virtual machine filters to VM interfaces list

Jeremy Stretch %!s(int64=5) %!d(string=hai) anos
pai
achega
013a2a35e0
Modificáronse 2 ficheiros con 26 adicións e 0 borrados
  1. 11 0
      netbox/virtualization/filters.py
  2. 15 0
      netbox/virtualization/forms.py

+ 11 - 0
netbox/virtualization/filters.py

@@ -206,6 +206,17 @@ class VMInterfaceFilterSet(BaseFilterSet):
         method='search',
         method='search',
         label='Search',
         label='Search',
     )
     )
+    cluster_id = django_filters.ModelMultipleChoiceFilter(
+        field_name='virtual_machine__cluster',
+        queryset=Cluster.objects.unrestricted(),
+        label='Cluster (ID)',
+    )
+    cluster = django_filters.ModelMultipleChoiceFilter(
+        field_name='virtual_machine__cluster__name',
+        queryset=Cluster.objects.unrestricted(),
+        to_field_name='name',
+        label='Cluster',
+    )
     virtual_machine_id = django_filters.ModelMultipleChoiceFilter(
     virtual_machine_id = django_filters.ModelMultipleChoiceFilter(
         field_name='virtual_machine',
         field_name='virtual_machine',
         queryset=VirtualMachine.objects.unrestricted(),
         queryset=VirtualMachine.objects.unrestricted(),

+ 15 - 0
netbox/virtualization/forms.py

@@ -821,6 +821,21 @@ class VMInterfaceBulkRenameForm(BulkRenameForm):
 
 
 class VMInterfaceFilterForm(forms.Form):
 class VMInterfaceFilterForm(forms.Form):
     model = VMInterface
     model = VMInterface
+    cluster_id = DynamicModelMultipleChoiceField(
+        queryset=Cluster.objects.all(),
+        required=False,
+        label='Cluster',
+        widget=APISelectMultiple(
+            filter_for={
+                'virtual_machine_id': 'cluster_id'
+            }
+        )
+    )
+    virtual_machine_id = DynamicModelMultipleChoiceField(
+        queryset=VirtualMachine.objects.all(),
+        required=False,
+        label='Virtual machine'
+    )
     enabled = forms.NullBooleanField(
     enabled = forms.NullBooleanField(
         required=False,
         required=False,
         widget=StaticSelect2(
         widget=StaticSelect2(