diff --git a/CHANGELOG.md b/CHANGELOG.md index ac8b460c7..e8e536572 100644 --- a/CHANGELOG.md +++ b/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 diff --git a/netbox/virtualization/filters.py b/netbox/virtualization/filters.py index 9a6169815..44b489d43 100644 --- a/netbox/virtualization/filters.py +++ b/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: diff --git a/netbox/virtualization/forms.py b/netbox/virtualization/forms.py index 6ea00ee3e..462950475 100644 --- a/netbox/virtualization/forms.py +++ b/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' + ) #