mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Fixes #810: Suppress unique IP validation on invalid IP addresses and prefixes
This commit is contained in:
@ -303,8 +303,9 @@ class Prefix(CreatedUpdatedModel, CustomFieldModel):
|
|||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
|
|
||||||
# Disallow host masks
|
|
||||||
if self.prefix:
|
if self.prefix:
|
||||||
|
|
||||||
|
# Disallow host masks
|
||||||
if self.prefix.version == 4 and self.prefix.prefixlen == 32:
|
if self.prefix.version == 4 and self.prefix.prefixlen == 32:
|
||||||
raise ValidationError({
|
raise ValidationError({
|
||||||
'prefix': "Cannot create host addresses (/32) as prefixes. Create an IPv4 address instead."
|
'prefix': "Cannot create host addresses (/32) as prefixes. Create an IPv4 address instead."
|
||||||
@ -314,16 +315,16 @@ class Prefix(CreatedUpdatedModel, CustomFieldModel):
|
|||||||
'prefix': "Cannot create host addresses (/128) as prefixes. Create an IPv6 address instead."
|
'prefix': "Cannot create host addresses (/128) as prefixes. Create an IPv6 address instead."
|
||||||
})
|
})
|
||||||
|
|
||||||
# Enforce unique IP space if applicable
|
# Enforce unique IP space (if applicable)
|
||||||
if (self.vrf is None and settings.ENFORCE_GLOBAL_UNIQUE) or (self.vrf and self.vrf.enforce_unique):
|
if (self.vrf is None and settings.ENFORCE_GLOBAL_UNIQUE) or (self.vrf and self.vrf.enforce_unique):
|
||||||
duplicate_prefixes = self.get_duplicates()
|
duplicate_prefixes = self.get_duplicates()
|
||||||
if duplicate_prefixes:
|
if duplicate_prefixes:
|
||||||
raise ValidationError({
|
raise ValidationError({
|
||||||
'prefix': "Duplicate prefix found in {}: {}".format(
|
'prefix': "Duplicate prefix found in {}: {}".format(
|
||||||
"VRF {}".format(self.vrf) if self.vrf else "global table",
|
"VRF {}".format(self.vrf) if self.vrf else "global table",
|
||||||
duplicate_prefixes.first(),
|
duplicate_prefixes.first(),
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
if self.prefix:
|
if self.prefix:
|
||||||
@ -419,16 +420,18 @@ class IPAddress(CreatedUpdatedModel, CustomFieldModel):
|
|||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
|
|
||||||
# Enforce unique IP space if applicable
|
if self.address:
|
||||||
if (self.vrf is None and settings.ENFORCE_GLOBAL_UNIQUE) or (self.vrf and self.vrf.enforce_unique):
|
|
||||||
duplicate_ips = self.get_duplicates()
|
# Enforce unique IP space (if applicable)
|
||||||
if duplicate_ips:
|
if (self.vrf is None and settings.ENFORCE_GLOBAL_UNIQUE) or (self.vrf and self.vrf.enforce_unique):
|
||||||
raise ValidationError({
|
duplicate_ips = self.get_duplicates()
|
||||||
'address': "Duplicate IP address found in {}: {}".format(
|
if duplicate_ips:
|
||||||
"VRF {}".format(self.vrf) if self.vrf else "global table",
|
raise ValidationError({
|
||||||
duplicate_ips.first(),
|
'address': "Duplicate IP address found in {}: {}".format(
|
||||||
)
|
"VRF {}".format(self.vrf) if self.vrf else "global table",
|
||||||
})
|
duplicate_ips.first(),
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
if self.address:
|
if self.address:
|
||||||
|
Reference in New Issue
Block a user