Parcourir la source

Fixes #1330: Raise validation error when assigning an unrelated IP as the primary IP for a device

Jeremy Stretch il y a 7 ans
Parent
commit
51b1da660a
1 fichiers modifiés avec 12 ajouts et 0 suppressions
  1. 12 0
      netbox/dcim/models.py

+ 12 - 0
netbox/dcim/models.py

@@ -890,6 +890,18 @@ class Device(CreatedUpdatedModel, CustomFieldModel):
             except DeviceType.DoesNotExist:
             except DeviceType.DoesNotExist:
                 pass
                 pass
 
 
+        # Validate primary IPv4 address
+        if self.primary_ip4 and (self.primary_ip4.interface is None or self.primary_ip4.interface.device != self):
+            raise ValidationError({
+                'primary_ip4': "The specified IP address ({}) is not assigned to this device.".format(self.primary_ip4),
+            })
+
+        # Validate primary IPv6 address
+        if self.primary_ip6 and (self.primary_ip6.interface is None or self.primary_ip6.interface.device != self):
+            raise ValidationError({
+                'primary_ip6': "The specified IP address ({}) is not assigned to this device.".format(self.primary_ip6),
+            })
+
     def save(self, *args, **kwargs):
     def save(self, *args, **kwargs):
 
 
         is_new = not bool(self.pk)
         is_new = not bool(self.pk)