summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoseph Suh <jsuh@isi.edu>2011-06-30 14:24:27 -0400
committerJoseph Suh <jsuh@isi.edu>2011-06-30 14:24:27 -0400
commit302d5ad4caaef4f02f475c2e9abd782ac630beb8 (patch)
treed0f81802b17aee15ce586c441d90bf8e26b8ea44
parentbf09a9e63f33c4cd9a65a9b2464f0049625ac024 (diff)
fix bug 800759
-rw-r--r--nova/scheduler/zone_manager.py20
1 files changed, 13 insertions, 7 deletions
diff --git a/nova/scheduler/zone_manager.py b/nova/scheduler/zone_manager.py
index ba7403c15..e0daa01e2 100644
--- a/nova/scheduler/zone_manager.py
+++ b/nova/scheduler/zone_manager.py
@@ -109,6 +109,7 @@ class ZoneManager(object):
self.last_zone_db_check = datetime.datetime.min
self.zone_states = {} # { <zone_id> : ZoneState }
self.service_states = {} # { <host> : { <service> : { cap k : v }}}
+ self.service_time_stamp = {} # reported time
self.green_pool = greenpool.GreenPool()
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
# code will need better.
combined = {} # { <service>_<cap> : (min, max), ... }
+ allowed_time_diff = FLAGS.periodic_interval * 3
for host, host_dict in hosts_dict.iteritems():
- for service_name, service_dict in host_dict.iteritems():
- for cap, value in service_dict.iteritems():
- key = "%s_%s" % (service_name, cap)
- min_value, max_value = combined.get(key, (value, value))
- min_value = min(min_value, value)
- max_value = max(max_value, value)
- combined[key] = (min_value, max_value)
+ if (utils.utcnow() - self.service_time_stamp[host]) <= \
+ datetime.timedelta(seconds=allowed_time_diff):
+ for service_name, service_dict in host_dict.iteritems():
+ for cap, value in service_dict.iteritems():
+ key = "%s_%s" % (service_name, cap)
+ min_value, max_value = combined.get(key, \
+ (value, value))
+ min_value = min(min_value, value)
+ max_value = max(max_value, value)
+ combined[key] = (min_value, max_value)
return combined
@@ -174,3 +179,4 @@ class ZoneManager(object):
service_caps = self.service_states.get(host, {})
service_caps[service_name] = capabilities
self.service_states[host] = service_caps
+ self.service_time_stamp[host] = utils.utcnow()