mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Fixes #9118: Fix validation error when importing VM child interfaces
This commit is contained in:
@ -23,6 +23,7 @@
|
|||||||
* [#9096](https://github.com/netbox-community/netbox/issues/9096) - Remove duplicate filter tag when filtering by "none"
|
* [#9096](https://github.com/netbox-community/netbox/issues/9096) - Remove duplicate filter tag when filtering by "none"
|
||||||
* [#9100](https://github.com/netbox-community/netbox/issues/9100) - Include position field in module type YAML export
|
* [#9100](https://github.com/netbox-community/netbox/issues/9100) - Include position field in module type YAML export
|
||||||
* [#9116](https://github.com/netbox-community/netbox/issues/9116) - `assigned_to_interface` filter for IP addresses should not match FHRP group assignments
|
* [#9116](https://github.com/netbox-community/netbox/issues/9116) - `assigned_to_interface` filter for IP addresses should not match FHRP group assignments
|
||||||
|
* [#9118](https://github.com/netbox-community/netbox/issues/9118) - Fix validation error when importing VM child interfaces
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -651,11 +651,11 @@ class InterfaceCSVForm(NetBoxModelCSVForm):
|
|||||||
super().__init__(data, *args, **kwargs)
|
super().__init__(data, *args, **kwargs)
|
||||||
|
|
||||||
if data:
|
if data:
|
||||||
# Limit interface choices for parent, bridge and lag to device only
|
# Limit choices for parent, bridge, and LAG interfaces to the assigned device
|
||||||
params = {}
|
if device := data.get('device'):
|
||||||
if data.get('device'):
|
params = {
|
||||||
params[f"device__{self.fields['device'].to_field_name}"] = data.get('device')
|
f"device__{self.fields['device'].to_field_name}": device
|
||||||
if params:
|
}
|
||||||
self.fields['parent'].queryset = self.fields['parent'].queryset.filter(**params)
|
self.fields['parent'].queryset = self.fields['parent'].queryset.filter(**params)
|
||||||
self.fields['bridge'].queryset = self.fields['bridge'].queryset.filter(**params)
|
self.fields['bridge'].queryset = self.fields['bridge'].queryset.filter(**params)
|
||||||
self.fields['lag'].queryset = self.fields['lag'].queryset.filter(**params)
|
self.fields['lag'].queryset = self.fields['lag'].queryset.filter(**params)
|
||||||
|
@ -136,6 +136,18 @@ class VMInterfaceCSVForm(NetBoxModelCSVForm):
|
|||||||
'vrf',
|
'vrf',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def __init__(self, data=None, *args, **kwargs):
|
||||||
|
super().__init__(data, *args, **kwargs)
|
||||||
|
|
||||||
|
if data:
|
||||||
|
# Limit interface choices for parent & bridge interfaces to the assigned VM
|
||||||
|
if virtual_machine := data.get('virtual_machine'):
|
||||||
|
params = {
|
||||||
|
f"virtual_machine__{self.fields['virtual_machine'].to_field_name}": virtual_machine
|
||||||
|
}
|
||||||
|
self.fields['parent'].queryset = self.fields['parent'].queryset.filter(**params)
|
||||||
|
self.fields['bridge'].queryset = self.fields['bridge'].queryset.filter(**params)
|
||||||
|
|
||||||
def clean_enabled(self):
|
def clean_enabled(self):
|
||||||
# Make sure enabled is True when it's not included in the uploaded data
|
# Make sure enabled is True when it's not included in the uploaded data
|
||||||
if 'enabled' not in self.data:
|
if 'enabled' not in self.data:
|
||||||
|
Reference in New Issue
Block a user