1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Fix VM VLAN filtering

This commit is contained in:
Jeremy Stretch
2021-03-30 21:46:56 -04:00
parent a292ff5cc0
commit d33d9522cc
2 changed files with 15 additions and 9 deletions

View File

@ -60,6 +60,7 @@ class VLANQuerySet(RestrictedQuerySet):
scope_id=device.rack_id
)
# Return all applicable VLANs
return self.filter(
Q(group__in=VLANGroup.objects.filter(q)) |
Q(site=device.site) |
@ -98,9 +99,14 @@ class VLANQuerySet(RestrictedQuerySet):
scope_type=ContentType.objects.get_by_natural_key('virtualization', 'cluster'),
scope_id=vm.cluster_id
)
vlan_groups = VLANGroup.objects.filter(q)
return self.filter(
Q(group__in=VLANGroup.objects.filter(q)) |
Q(site=vm.cluster.site) |
# Return all applicable VLANs
q = (
Q(group__in=vlan_groups) |
Q(group__isnull=True, site__isnull=True) # Global VLANs
)
if vm.cluster.site:
q |= Q(site=vm.cluster.site)
return self.filter(q)

View File

@ -640,8 +640,8 @@ class VMInterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm)
# Limit VLAN choices by virtual machine
vm_id = self.initial.get('virtual_machine') or self.data.get('virtual_machine')
self.fields['untagged_vlan'].widget.add_query_param('available_on_vm', vm_id)
self.fields['tagged_vlans'].widget.add_query_param('available_on_vm', vm_id)
self.fields['untagged_vlan'].widget.add_query_param('available_on_virtualmachine', vm_id)
self.fields['tagged_vlans'].widget.add_query_param('available_on_virtualmachine', vm_id)
class VMInterfaceCreateForm(BootstrapMixin, InterfaceCommonForm):
@ -692,8 +692,8 @@ class VMInterfaceCreateForm(BootstrapMixin, InterfaceCommonForm):
# Limit VLAN choices by virtual machine
vm_id = self.initial.get('virtual_machine') or self.data.get('virtual_machine')
self.fields['untagged_vlan'].widget.add_query_param('available_on_vm', vm_id)
self.fields['tagged_vlans'].widget.add_query_param('available_on_vm', vm_id)
self.fields['untagged_vlan'].widget.add_query_param('available_on_virtualmachine', vm_id)
self.fields['tagged_vlans'].widget.add_query_param('available_on_virtualmachine', vm_id)
class VMInterfaceCSVForm(CSVModelForm):
@ -768,8 +768,8 @@ class VMInterfaceBulkEditForm(BootstrapMixin, AddRemoveTagsForm, BulkEditForm):
# Limit VLAN choices by virtual machine
vm_id = self.initial.get('virtual_machine') or self.data.get('virtual_machine')
self.fields['untagged_vlan'].widget.add_query_param('available_on_vm', vm_id)
self.fields['tagged_vlans'].widget.add_query_param('available_on_vm', vm_id)
self.fields['untagged_vlan'].widget.add_query_param('available_on_virtualmachine', vm_id)
self.fields['tagged_vlans'].widget.add_query_param('available_on_virtualmachine', vm_id)
class VMInterfaceBulkRenameForm(BulkRenameForm):