Merge pull request #10442 from netbox-community/10435-untagged-vlan

10435 check if vm.cluster in qs
This commit is contained in:
Jeremy Stretch 2022-09-26 10:25:48 -04:00 committed by GitHub
commit b75d12fe05
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -81,30 +81,34 @@ class VLANQuerySet(RestrictedQuerySet):
# Find all relevant VLANGroups # Find all relevant VLANGroups
q = Q() q = Q()
if vm.cluster.site: site = vm.site or vm.cluster.site
if vm.cluster.site.region: if vm.cluster:
# Add VLANGroups scoped to the assigned cluster (or its group)
q |= Q(
scope_type=ContentType.objects.get_by_natural_key('virtualization', 'cluster'),
scope_id=vm.cluster_id
)
if vm.cluster.group:
q |= Q( q |= Q(
scope_type=ContentType.objects.get_by_natural_key('dcim', 'region'), scope_type=ContentType.objects.get_by_natural_key('virtualization', 'clustergroup'),
scope_id__in=vm.cluster.site.region.get_ancestors(include_self=True) scope_id=vm.cluster.group_id
)
if vm.cluster.site.group:
q |= Q(
scope_type=ContentType.objects.get_by_natural_key('dcim', 'sitegroup'),
scope_id__in=vm.cluster.site.group.get_ancestors(include_self=True)
) )
if site:
# Add VLANGroups scoped to the assigned site (or its group or region)
q |= Q( q |= Q(
scope_type=ContentType.objects.get_by_natural_key('dcim', 'site'), scope_type=ContentType.objects.get_by_natural_key('dcim', 'site'),
scope_id=vm.cluster.site_id scope_id=site.pk
) )
if vm.cluster.group: if site.region:
q |= Q( q |= Q(
scope_type=ContentType.objects.get_by_natural_key('virtualization', 'clustergroup'), scope_type=ContentType.objects.get_by_natural_key('dcim', 'region'),
scope_id=vm.cluster.group_id scope_id__in=site.region.get_ancestors(include_self=True)
) )
q |= Q( if site.group:
scope_type=ContentType.objects.get_by_natural_key('virtualization', 'cluster'), q |= Q(
scope_id=vm.cluster_id scope_type=ContentType.objects.get_by_natural_key('dcim', 'sitegroup'),
) scope_id__in=site.group.get_ancestors(include_self=True)
)
vlan_groups = VLANGroup.objects.filter(q) vlan_groups = VLANGroup.objects.filter(q)
# Return all applicable VLANs # Return all applicable VLANs
@ -113,7 +117,7 @@ class VLANQuerySet(RestrictedQuerySet):
Q(group__scope_id__isnull=True, site__isnull=True) | # Global group VLANs Q(group__scope_id__isnull=True, site__isnull=True) | # Global group VLANs
Q(group__isnull=True, site__isnull=True) # Global VLANs Q(group__isnull=True, site__isnull=True) # Global VLANs
) )
if vm.cluster.site: if site:
q |= Q(site=vm.cluster.site) q |= Q(site=site)
return self.filter(q) return self.filter(q)