Explorar o código

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

Jeremy Stretch %!s(int64=8) %!d(string=hai) anos
pai
achega
51b1da660a
Modificáronse 1 ficheiros con 12 adicións e 0 borrados
  1. 12 0
      netbox/dcim/models.py

+ 12 - 0
netbox/dcim/models.py

@@ -890,6 +890,18 @@ class Device(CreatedUpdatedModel, CustomFieldModel):
             except DeviceType.DoesNotExist:
                 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):
 
         is_new = not bool(self.pk)