mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Fixes #2342: IntegrityError raised when attempting to assign an invalid IP address as the primary for a VM
This commit is contained in:
@ -260,6 +260,22 @@ class VirtualMachine(ChangeLoggedModel, ConfigContextModel, CustomFieldModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('virtualization:virtualmachine', args=[self.pk])
|
return reverse('virtualization:virtualmachine', args=[self.pk])
|
||||||
|
|
||||||
|
def clean(self):
|
||||||
|
|
||||||
|
# Validate primary IP addresses
|
||||||
|
interfaces = self.interfaces.all()
|
||||||
|
for field in ['primary_ip4', 'primary_ip6']:
|
||||||
|
ip = getattr(self, field)
|
||||||
|
if ip is not None:
|
||||||
|
if ip.interface in interfaces:
|
||||||
|
pass
|
||||||
|
elif self.primary_ip4.nat_inside is not None and self.primary_ip4.nat_inside.interface in interfaces:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
raise ValidationError({
|
||||||
|
field: "The specified IP address ({}) is not assigned to this VM.".format(ip),
|
||||||
|
})
|
||||||
|
|
||||||
def to_csv(self):
|
def to_csv(self):
|
||||||
return (
|
return (
|
||||||
self.name,
|
self.name,
|
||||||
|
Reference in New Issue
Block a user