diff --git a/netbox/dcim/models/racks.py b/netbox/dcim/models/racks.py index 22fca8cf6..20027675a 100644 --- a/netbox/dcim/models/racks.py +++ b/netbox/dcim/models/racks.py @@ -350,7 +350,7 @@ class Rack(NetBoxModel): # Remove units without enough space above them to accommodate a device of the specified height available_units = [] for u in units: - if set(drange(u, u + u_height, 0.5)).issubset(units): + if set(drange(u, u + decimal.Decimal(u_height), 0.5)).issubset(units): available_units.append(u) return list(reversed(available_units)) @@ -415,12 +415,13 @@ class Rack(NetBoxModel): """ # Determine unoccupied units total_units = len(list(self.units)) - available_units = self.get_available_units() + available_units = self.get_available_units(u_height=0.5) # Remove reserved units - for u in self.get_reserved_units(): - if u in available_units: - available_units.remove(u) + for ru in self.get_reserved_units(): + for u in drange(ru, ru + 1, 0.5): + if u in available_units: + available_units.remove(u) occupied_unit_count = total_units - len(available_units) percentage = float(occupied_unit_count) / total_units * 100