diff --git a/netbox/ipam/filters.py b/netbox/ipam/filters.py index 045ca1df4..05ab873a3 100644 --- a/netbox/ipam/filters.py +++ b/netbox/ipam/filters.py @@ -10,6 +10,7 @@ from dcim.models import Site, Device, Interface from extras.filters import CustomFieldFilterSet from tenancy.models import Tenant from utilities.filters import NullableModelMultipleChoiceFilter, NumericInFilter +from virtualization.models import VirtualMachine from .models import ( Aggregate, IPAddress, IPADDRESS_ROLE_CHOICES, IPADDRESS_STATUS_CHOICES, Prefix, PREFIX_STATUS_CHOICES, RIR, Role, Service, VLAN, VLAN_STATUS_CHOICES, VLANGroup, VRF, @@ -237,6 +238,17 @@ class IPAddressFilter(CustomFieldFilterSet, django_filters.FilterSet): to_field_name='name', label='Device (name)', ) + virtual_machine_id = django_filters.ModelMultipleChoiceFilter( + name='interface__virtual_machine', + queryset=VirtualMachine.objects.all(), + label='Virtual machine (ID)', + ) + virtual_machine = django_filters.ModelMultipleChoiceFilter( + name='interface__virtual_machine__name', + queryset=VirtualMachine.objects.all(), + to_field_name='name', + label='Virtual machine (name)', + ) interface_id = django_filters.ModelMultipleChoiceFilter( queryset=Interface.objects.all(), label='Interface (ID)', @@ -372,6 +384,16 @@ class ServiceFilter(django_filters.FilterSet): to_field_name='name', label='Device (name)', ) + virtual_machine_id = django_filters.ModelMultipleChoiceFilter( + queryset=VirtualMachine.objects.all(), + label='Virtual machine (ID)', + ) + virtual_machine = django_filters.ModelMultipleChoiceFilter( + name='virtual_machine__name', + queryset=VirtualMachine.objects.all(), + to_field_name='name', + label='Virtual machine (name)', + ) class Meta: model = Service