function get_sd return 0 early if len(hosts) is 0

Prevent workload_stabilization strategy from failing in a network with
0 hosts.

Change-Id: I9f1a9524923c14d958eb50a70dad379a6021b884
Closes-Bug: #1815059
This commit is contained in:
Dantali0n
2019-02-08 11:03:37 +01:00
parent 0e46dec6c6
commit f8dfdd405d

View File

@@ -334,14 +334,17 @@ class WorkloadStabilization(base.WorkloadStabilizationBaseStrategy):
def get_sd(self, hosts, meter_name):
"""Get standard deviation among hosts by specified meter"""
mean = 0
variaton = 0
variation = 0
num_hosts = len(hosts)
if num_hosts == 0:
return 0
for host_id in hosts:
mean += hosts[host_id][meter_name]
mean /= len(hosts)
mean /= num_hosts
for host_id in hosts:
variaton += (hosts[host_id][meter_name] - mean) ** 2
variaton /= len(hosts)
sd = math.sqrt(variaton)
variation += (hosts[host_id][meter_name] - mean) ** 2
variation /= num_hosts
sd = math.sqrt(variation)
return sd
def calculate_weighted_sd(self, sd_case):