From b370375414330ed810c71bfeda03145bcaa30c95 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 31 Jan 2017 17:25:44 -0500 Subject: [PATCH] Fixes #861: Avoid overwriting device primary IP assignment from alternate family during bulk import of IP addresses --- netbox/ipam/views.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/netbox/ipam/views.py b/netbox/ipam/views.py index 38c641e05..f93f297e0 100644 --- a/netbox/ipam/views.py +++ b/netbox/ipam/views.py @@ -635,16 +635,14 @@ class IPAddressBulkImportView(PermissionRequiredMixin, BulkImportView): def save_obj(self, obj): obj.save() - # Update primary IP for device if needed + + # 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 = obj.primary_ip4_for - device.primary_ip4 = obj - device.save() + Device.objects.filter(pk=obj.primary_ip4_for.pk).update(primary_ip4=obj) elif obj.family == 6 and obj.primary_ip6_for: - device = obj.primary_ip6_for - device.primary_ip6 = obj - device.save() + Device.objects.filter(pk=obj.primary_ip6_for.pk).update(primary_ip6=obj) except Device.DoesNotExist: pass