Răsfoiți Sursa

Closes #3386: Add mac_address filter for virtual machines

Jeremy Stretch 6 ani în urmă
părinte
comite
0b95cab47b
3 a modificat fișierele cu 13 adăugiri și 2 ștergeri
  1. 1 0
      CHANGELOG.md
  2. 7 1
      netbox/virtualization/filters.py
  3. 5 1
      netbox/virtualization/forms.py

+ 1 - 0
CHANGELOG.md

@@ -6,6 +6,7 @@ v2.6.3 (FUTURE)
 
 
 ## Enhancements
 ## Enhancements
 
 
+* [#3386](https://github.com/netbox-community/netbox/issues/3386) - Add `mac_address` filter for virtual machines
 * [#3405](https://github.com/netbox-community/netbox/issues/3405) - Fix population of power port/outlet details on device creation
 * [#3405](https://github.com/netbox-community/netbox/issues/3405) - Fix population of power port/outlet details on device creation
 * [#3422](https://github.com/netbox-community/netbox/issues/3422) - Prevent navigation menu from overlapping page content
 * [#3422](https://github.com/netbox-community/netbox/issues/3422) - Prevent navigation menu from overlapping page content
 
 

+ 7 - 1
netbox/virtualization/filters.py

@@ -6,7 +6,9 @@ from netaddr.core import AddrFormatError
 from dcim.models import DeviceRole, Interface, Platform, Region, Site
 from dcim.models import DeviceRole, Interface, Platform, Region, Site
 from extras.filters import CustomFieldFilterSet
 from extras.filters import CustomFieldFilterSet
 from tenancy.filtersets import TenancyFilterSet
 from tenancy.filtersets import TenancyFilterSet
-from utilities.filters import NameSlugSearchFilterSet, NumericInFilter, TagFilter, TreeNodeMultipleChoiceFilter
+from utilities.filters import (
+    MultiValueMACAddressFilter, NameSlugSearchFilterSet, NumericInFilter, TagFilter, TreeNodeMultipleChoiceFilter,
+)
 from .constants import VM_STATUS_CHOICES
 from .constants import VM_STATUS_CHOICES
 from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine
 from .models import Cluster, ClusterGroup, ClusterType, VirtualMachine
 
 
@@ -160,6 +162,10 @@ class VirtualMachineFilter(TenancyFilterSet, CustomFieldFilterSet):
         to_field_name='slug',
         to_field_name='slug',
         label='Platform (slug)',
         label='Platform (slug)',
     )
     )
+    mac_address = MultiValueMACAddressFilter(
+        field_name='interfaces__mac_address',
+        label='MAC address',
+    )
     tag = TagFilter()
     tag = TagFilter()
 
 
     class Meta:
     class Meta:

+ 5 - 1
netbox/virtualization/forms.py

@@ -525,7 +525,7 @@ class VirtualMachineFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFil
     model = VirtualMachine
     model = VirtualMachine
     field_order = [
     field_order = [
         'q', 'cluster_group', 'cluster_type', 'cluster_id', 'status', 'role', 'region', 'site', 'tenant_group',
         'q', 'cluster_group', 'cluster_type', 'cluster_id', 'status', 'role', 'region', 'site', 'tenant_group',
-        'tenant', 'platform',
+        'tenant', 'platform', 'mac_address',
     ]
     ]
     q = forms.CharField(
     q = forms.CharField(
         required=False,
         required=False,
@@ -606,6 +606,10 @@ class VirtualMachineFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFil
             null_option=True,
             null_option=True,
         )
         )
     )
     )
+    mac_address = forms.CharField(
+        required=False,
+        label='MAC address'
+    )
 
 
 
 
 #
 #