2
0
Jeremy Stretch 4 жил өмнө
parent
commit
d33d9522cc

+ 9 - 3
netbox/ipam/querysets.py

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

+ 6 - 6
netbox/virtualization/forms.py

@@ -640,8 +640,8 @@ class VMInterfaceForm(BootstrapMixin, InterfaceCommonForm, CustomFieldModelForm)
 
 
         # Limit VLAN choices by virtual machine
         # Limit VLAN choices by virtual machine
         vm_id = self.initial.get('virtual_machine') or self.data.get('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):
 class VMInterfaceCreateForm(BootstrapMixin, InterfaceCommonForm):
@@ -692,8 +692,8 @@ class VMInterfaceCreateForm(BootstrapMixin, InterfaceCommonForm):
 
 
         # Limit VLAN choices by virtual machine
         # Limit VLAN choices by virtual machine
         vm_id = self.initial.get('virtual_machine') or self.data.get('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):
 class VMInterfaceCSVForm(CSVModelForm):
@@ -768,8 +768,8 @@ class VMInterfaceBulkEditForm(BootstrapMixin, AddRemoveTagsForm, BulkEditForm):
 
 
         # Limit VLAN choices by virtual machine
         # Limit VLAN choices by virtual machine
         vm_id = self.initial.get('virtual_machine') or self.data.get('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):
 class VMInterfaceBulkRenameForm(BulkRenameForm):