fix bug 800759

This commit is contained in:
Joseph Suh
2011-06-30 14:24:27 -04:00
parent 5b261c0572
commit 3a34a86e84

View File

@@ -109,6 +109,7 @@ class ZoneManager(object):
self.last_zone_db_check = datetime.datetime.min self.last_zone_db_check = datetime.datetime.min
self.zone_states = {} # { <zone_id> : ZoneState } self.zone_states = {} # { <zone_id> : ZoneState }
self.service_states = {} # { <host> : { <service> : { cap k : v }}} self.service_states = {} # { <host> : { <service> : { cap k : v }}}
self.service_time_stamp = {} # reported time
self.green_pool = greenpool.GreenPool() self.green_pool = greenpool.GreenPool()
def get_zone_list(self): def get_zone_list(self):
@@ -125,14 +126,18 @@ class ZoneManager(object):
# But it's likely to change once we understand what the Best-Match # But it's likely to change once we understand what the Best-Match
# code will need better. # code will need better.
combined = {} # { <service>_<cap> : (min, max), ... } combined = {} # { <service>_<cap> : (min, max), ... }
allowed_time_diff = FLAGS.periodic_interval * 3
for host, host_dict in hosts_dict.iteritems(): for host, host_dict in hosts_dict.iteritems():
for service_name, service_dict in host_dict.iteritems(): if (utils.utcnow() - self.service_time_stamp[host]) <= \
for cap, value in service_dict.iteritems(): datetime.timedelta(seconds=allowed_time_diff):
key = "%s_%s" % (service_name, cap) for service_name, service_dict in host_dict.iteritems():
min_value, max_value = combined.get(key, (value, value)) for cap, value in service_dict.iteritems():
min_value = min(min_value, value) key = "%s_%s" % (service_name, cap)
max_value = max(max_value, value) min_value, max_value = combined.get(key, \
combined[key] = (min_value, max_value) (value, value))
min_value = min(min_value, value)
max_value = max(max_value, value)
combined[key] = (min_value, max_value)
return combined return combined
@@ -174,3 +179,4 @@ class ZoneManager(object):
service_caps = self.service_states.get(host, {}) service_caps = self.service_states.get(host, {})
service_caps[service_name] = capabilities service_caps[service_name] = capabilities
self.service_states[host] = service_caps self.service_states[host] = service_caps
self.service_time_stamp[host] = utils.utcnow()