mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-23 17:08:41 -06:00
Fixes #1279: Fix primary_ip assignment during IP address import
This commit is contained in:
parent
ea869d4ffc
commit
afdf5750b5
@ -641,16 +641,23 @@ class IPAddressCSVForm(forms.ModelForm):
|
|||||||
|
|
||||||
# Set interface
|
# Set interface
|
||||||
if self.cleaned_data['device'] and self.cleaned_data['interface_name']:
|
if self.cleaned_data['device'] and self.cleaned_data['interface_name']:
|
||||||
self.instance.interface = Interface.objects.get(device=self.cleaned_data['device'],
|
self.instance.interface = Interface.objects.get(
|
||||||
name=self.cleaned_data['interface_name'])
|
device=self.cleaned_data['device'],
|
||||||
|
name=self.cleaned_data['interface_name']
|
||||||
|
)
|
||||||
|
|
||||||
|
ipaddress = super(IPAddressCSVForm, self).save(*args, **kwargs)
|
||||||
|
|
||||||
# Set as primary for device
|
# Set as primary for device
|
||||||
if self.cleaned_data['is_primary']:
|
if self.cleaned_data['is_primary']:
|
||||||
|
device = self.cleaned_data['device']
|
||||||
if self.instance.address.version == 4:
|
if self.instance.address.version == 4:
|
||||||
self.instance.primary_ip4_for = self.cleaned_data['device']
|
device.primary_ip4 = ipaddress
|
||||||
elif self.instance.address.version == 6:
|
elif self.instance.address.version == 6:
|
||||||
self.instance.primary_ip6_for = self.cleaned_data['device']
|
device.primary_ip6 = ipaddress
|
||||||
|
device.save()
|
||||||
|
|
||||||
return super(IPAddressCSVForm, self).save(*args, **kwargs)
|
return ipaddress
|
||||||
|
|
||||||
|
|
||||||
class IPAddressBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm):
|
class IPAddressBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm):
|
||||||
|
@ -665,19 +665,6 @@ class IPAddressBulkImportView(PermissionRequiredMixin, BulkImportView):
|
|||||||
table = tables.IPAddressTable
|
table = tables.IPAddressTable
|
||||||
default_return_url = 'ipam:ipaddress_list'
|
default_return_url = 'ipam:ipaddress_list'
|
||||||
|
|
||||||
def save_obj(self, obj):
|
|
||||||
obj.save()
|
|
||||||
|
|
||||||
# Update primary IP for device if needed. The Device must be updated directly in the database; otherwise we risk
|
|
||||||
# overwriting a previous IP assignment from the same import (see #861).
|
|
||||||
try:
|
|
||||||
if obj.family == 4 and obj.primary_ip4_for:
|
|
||||||
Device.objects.filter(pk=obj.primary_ip4_for.pk).update(primary_ip4=obj)
|
|
||||||
elif obj.family == 6 and obj.primary_ip6_for:
|
|
||||||
Device.objects.filter(pk=obj.primary_ip6_for.pk).update(primary_ip6=obj)
|
|
||||||
except Device.DoesNotExist:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class IPAddressBulkEditView(PermissionRequiredMixin, BulkEditView):
|
class IPAddressBulkEditView(PermissionRequiredMixin, BulkEditView):
|
||||||
permission_required = 'ipam.change_ipaddress'
|
permission_required = 'ipam.change_ipaddress'
|
||||||
|
Loading…
Reference in New Issue
Block a user