diff --git a/netbox/dcim/models.py b/netbox/dcim/models.py index 0fe3bc30c..5ff233c9c 100644 --- a/netbox/dcim/models.py +++ b/netbox/dcim/models.py @@ -183,6 +183,16 @@ class Rack(CreatedUpdatedModel): def get_absolute_url(self): return reverse('dcim:rack', args=[self.pk]) + def clean(self): + + # Validate that Rack is tall enough to house the installed Devices + if self.pk: + top_device = Device.objects.filter(rack=self).order_by('-position').first() + min_height = top_device.position + top_device.device_type.u_height - 1 + if self.u_height < min_height: + raise ValidationError("Rack must be at least {}U tall with currently installed devices." + .format(min_height)) + def to_csv(self): return ','.join([ self.site.name,