From 0cfe2d882d5cbc65073336f6312bfb2c6d481884 Mon Sep 17 00:00:00 2001 From: Arthur Date: Tue, 30 Aug 2022 16:16:15 -0700 Subject: [PATCH] #10176 fix space utilization for rack --- netbox/dcim/models/racks.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) 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