This patch updates CapacityWeigher to transform 'infinite' and
'unknown' capacity reported by back-ends to float('inf'). They
are considered the same for sorting purpose.
Change-Id: Ic8f811227c9937c4e09eb8b77457ed7e9231be4e
def _weigh_object(self, host_state, weight_properties):
"""Higher weights win. We want spreading to be the default."""
reserved = float(host_state.reserved_percentage) / 100
- free = math.floor(host_state.free_capacity_gb * (1 - reserved))
+ free_space = host_state.free_capacity_gb
+ if free_space == 'infinite' or free_space == 'unknown':
+ #(zhiteng) 'infinite' and 'unknown' are treated the same
+ # here, for sorting purpose.
+ free = float('inf')
+ else:
+ free = math.floor(host_state.free_capacity_gb * (1 - reserved))
return free