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:
@ -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)
|
||||
|
@ -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):
|
||||
|
Reference in New Issue
Block a user