summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Behrens <cbehrens@codestud.com>2011-06-24 00:26:55 -0700
committerChris Behrens <cbehrens@codestud.com>2011-06-24 00:26:55 -0700
commit95b9a83473dad5a2c60e146c0428b2c16d234232 (patch)
tree183d6e81ee4ebb17ae75f82e03fd58016750c3be
parent4307daa9848060aad4b714394f314e5b6e823208 (diff)
on 2nd run through filter_hosts, we've already accounted for the topic
memory needs converted to Bytes from MB
-rw-r--r--nova/scheduler/zone_aware_scheduler.py22
1 files changed, 15 insertions, 7 deletions
diff --git a/nova/scheduler/zone_aware_scheduler.py b/nova/scheduler/zone_aware_scheduler.py
index 769b2dd0f..e6383b20b 100644
--- a/nova/scheduler/zone_aware_scheduler.py
+++ b/nova/scheduler/zone_aware_scheduler.py
@@ -244,6 +244,8 @@ class ZoneAwareScheduler(driver.Scheduler):
# may have been consumed from a previous build..
host_list = self.filter_hosts(topic, request_spec, host_list)
if not host_list:
+ LOG.warn(_("Ran out of available hosts after weighing "
+ "%d of %d instances") % (i, num_instances))
break
# then weigh the selected hosts.
@@ -279,7 +281,7 @@ class ZoneAwareScheduler(driver.Scheduler):
is acceptable for scheduling.
"""
instance_type = request_spec['instance_type']
- requested_mem = instance_type['memory_mb']
+ requested_mem = instance_type['memory_mb'] * 1024 * 1024
return capabilities['host_memory_free'] >= requested_mem
def filter_hosts(self, topic, request_spec, host_list=None):
@@ -297,14 +299,20 @@ class ZoneAwareScheduler(driver.Scheduler):
filter_func = getattr(self, '%s_filter' % topic, _default_filter)
- filtered_hosts = []
if host_list is None:
+ first_run = True
host_list = self.zone_manager.service_states.iteritems()
+ else:
+ first_run = False
+
+ filtered_hosts = []
for host, services in host_list:
- if topic not in services:
- continue
- if filter_func(host, services[topic], request_spec):
- filtered_hosts.append((host, services[topic]))
+ if first_run:
+ if topic not in services:
+ continue
+ services = services['topic']
+ if filter_func(host, services, request_spec):
+ filtered_hosts.append((host, services))
return filtered_hosts
def weigh_hosts(self, topic, request_spec, hosts):
@@ -318,7 +326,7 @@ class ZoneAwareScheduler(driver.Scheduler):
def compute_consume(self, capabilities, instance_type):
"""Consume compute resources for selected host"""
- requested_mem = max(instance_type['memory_mb'], 0)
+ requested_mem = max(instance_type['memory_mb'], 0) * 1024 * 1024
capabilities['host_memory_free'] -= requested_mem
def consume_resources(self, topic, capabilities, instance_type):