Skip to content

Commit f67369a

Browse files
committed
Fixes #5643: Fix VLAN assignment when editing VM interfaces in bulk
1 parent 92df40a commit f67369a

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

docs/release-notes/version-2.10.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
### Bug Fixes
1313

1414
* [#5419](https://github.com/netbox-community/netbox/issues/5419) - Update parent device/VM when deleting a primary IP
15+
* [#5643](https://github.com/netbox-community/netbox/issues/5643) - Fix VLAN assignment when editing VM interfaces in bulk
1516
* [#5652](https://github.com/netbox-community/netbox/issues/5652) - Update object data when renaming a custom field
1617
* [#6056](https://github.com/netbox-community/netbox/issues/6056) - Optimize change log cleanup
1718
* [#6144](https://github.com/netbox-community/netbox/issues/6144) - Fix MAC address field display in VM interfaces search form

netbox/virtualization/forms.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -756,6 +756,26 @@ def __init__(self, *args, **kwargs):
756756
# Add current site to VLANs query params
757757
self.fields['untagged_vlan'].widget.add_query_param('site_id', site.pk)
758758
self.fields['tagged_vlans'].widget.add_query_param('site_id', site.pk)
759+
else:
760+
# See 5643
761+
if 'pk' in self.initial:
762+
site = None
763+
interfaces = VMInterface.objects.filter(pk__in=self.initial['pk']).prefetch_related(
764+
'virtual_machine__cluster__site'
765+
)
766+
767+
# Check interface sites. First interface should set site, further interfaces will either continue the
768+
# loop or reset back to no site and break the loop.
769+
for interface in interfaces:
770+
if site is None:
771+
site = interface.virtual_machine.cluster.site
772+
elif interface.virtual_machine.cluster.site is not site:
773+
site = None
774+
break
775+
776+
if site is not None:
777+
self.fields['untagged_vlan'].widget.add_query_param('site_id', site.pk)
778+
self.fields['tagged_vlans'].widget.add_query_param('site_id', site.pk)
759779

760780

761781
class VMInterfaceBulkRenameForm(BulkRenameForm):

0 commit comments

Comments
 (0)