diff --git a/docs/release-notes/version-3.0.md b/docs/release-notes/version-3.0.md index 99f245551..89199055b 100644 --- a/docs/release-notes/version-3.0.md +++ b/docs/release-notes/version-3.0.md @@ -15,6 +15,7 @@ * [#7729](https://github.com/netbox-community/netbox/issues/7729) - Fix permissions evaluation when displaying VLAN group VLANs table * [#7739](https://github.com/netbox-community/netbox/issues/7739) - Fix exception when tracing cable across circuit with no far end termination * [#7813](https://github.com/netbox-community/netbox/issues/7813) - Fix handling of errors during export template rendering +* [#7851](https://github.com/netbox-community/netbox/issues/7851) - Add missing cluster name filter for virtual machines --- diff --git a/netbox/virtualization/filtersets.py b/netbox/virtualization/filtersets.py index 3fc1da8ea..548c904d8 100644 --- a/netbox/virtualization/filtersets.py +++ b/netbox/virtualization/filtersets.py @@ -144,6 +144,12 @@ class VirtualMachineFilterSet(PrimaryModelFilterSet, TenancyFilterSet, LocalConf queryset=Cluster.objects.all(), label='Cluster (ID)', ) + cluster = django_filters.ModelMultipleChoiceFilter( + field_name='cluster__name', + queryset=Cluster.objects.all(), + to_field_name='name', + label='Cluster', + ) region_id = TreeNodeMultipleChoiceFilter( queryset=Region.objects.all(), field_name='cluster__site__region', diff --git a/netbox/virtualization/tests/test_filtersets.py b/netbox/virtualization/tests/test_filtersets.py index 0ca6364a5..a9451bfea 100644 --- a/netbox/virtualization/tests/test_filtersets.py +++ b/netbox/virtualization/tests/test_filtersets.py @@ -324,9 +324,8 @@ class VirtualMachineTestCase(TestCase, ChangeLoggedFilterSetTests): clusters = Cluster.objects.all()[:2] params = {'cluster_id': [clusters[0].pk, clusters[1].pk]} self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) - # TODO: 'cluster' should match on name - # params = {'cluster': [clusters[0].name, clusters[1].name]} - # self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) + params = {'cluster': [clusters[0].name, clusters[1].name]} + self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2) def test_region(self): regions = Region.objects.all()[:2]