Просмотр исходного кода

Closes #3386: Add mac_address filter for virtual machines

Jeremy Stretch 6 лет назад
Родитель
Сommit
0b95cab47b
3 измененных файлов с 13 добавлено и 2 удалено
  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
 
+* [#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
 * [#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 extras.filters import CustomFieldFilterSet
 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 .models import Cluster, ClusterGroup, ClusterType, VirtualMachine
 
@@ -160,6 +162,10 @@ class VirtualMachineFilter(TenancyFilterSet, CustomFieldFilterSet):
         to_field_name='slug',
         label='Platform (slug)',
     )
+    mac_address = MultiValueMACAddressFilter(
+        field_name='interfaces__mac_address',
+        label='MAC address',
+    )
     tag = TagFilter()
 
     class Meta:

+ 5 - 1
netbox/virtualization/forms.py

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