summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-06-10 23:31:30 +0000
committerGerrit Code Review <review@openstack.org>2013-06-10 23:31:30 +0000
commite40f78b0daa2b78cea1be6262a21029f9cef8de7 (patch)
tree5faffcf1d7f01c053d7acc1102de965c256f4fbc
parent2728c4ef7008e7b19149ae81e43fcad9554b795a (diff)
parentcb49e5407cc1db0cd3533b57a12ec99a7179abd7 (diff)
downloadnova-e40f78b0daa2b78cea1be6262a21029f9cef8de7.tar.gz
nova-e40f78b0daa2b78cea1be6262a21029f9cef8de7.tar.xz
nova-e40f78b0daa2b78cea1be6262a21029f9cef8de7.zip
Merge "Refactors scheduler.chance.select_hosts to raise NoValidHost"
-rw-r--r--nova/scheduler/chance.py5
-rw-r--r--nova/tests/scheduler/test_chance_scheduler.py9
-rw-r--r--nova/tests/scheduler/test_filter_scheduler.py9
-rw-r--r--nova/tests/scheduler/test_scheduler.py4
4 files changed, 26 insertions, 1 deletions
diff --git a/nova/scheduler/chance.py b/nova/scheduler/chance.py
index 6e9688d81..0f8f3c45a 100644
--- a/nova/scheduler/chance.py
+++ b/nova/scheduler/chance.py
@@ -60,9 +60,12 @@ class ChanceScheduler(driver.Scheduler):
def select_hosts(self, context, request_spec, filter_properties):
"""Selects a set of random hosts."""
- return [self._schedule(context, CONF.compute_topic,
+ hosts = [self._schedule(context, CONF.compute_topic,
request_spec, filter_properties)
for instance_uuid in request_spec.get('instance_uuids', [])]
+ if not hosts:
+ raise exception.NoValidHost(reason="")
+ return hosts
def schedule_run_instance(self, context, request_spec,
admin_password, injected_files,
diff --git a/nova/tests/scheduler/test_chance_scheduler.py b/nova/tests/scheduler/test_chance_scheduler.py
index a589000cd..8a281073a 100644
--- a/nova/tests/scheduler/test_chance_scheduler.py
+++ b/nova/tests/scheduler/test_chance_scheduler.py
@@ -194,3 +194,12 @@ class ChanceSchedulerTestCase(test_scheduler.SchedulerTestCase):
self.mox.ReplayAll()
hosts = self.driver.select_hosts(ctxt, request_spec, {})
self.assertEquals(['host3', 'host1'], hosts)
+
+ def test_select_hosts_no_valid_host(self):
+
+ def _return_no_host(*args, **kwargs):
+ return []
+
+ self.stubs.Set(self.driver, '_schedule', _return_no_host)
+ self.assertRaises(exception.NoValidHost,
+ self.driver.select_hosts, self.context, {}, {})
diff --git a/nova/tests/scheduler/test_filter_scheduler.py b/nova/tests/scheduler/test_filter_scheduler.py
index 919187fd8..b82e079a4 100644
--- a/nova/tests/scheduler/test_filter_scheduler.py
+++ b/nova/tests/scheduler/test_filter_scheduler.py
@@ -734,3 +734,12 @@ class FilterSchedulerTestCase(test_scheduler.SchedulerTestCase):
hosts = sched.select_hosts(fake_context, request_spec, {})
self.assertEquals(len(hosts), 10)
self.assertEquals(hosts, selected_hosts)
+
+ def test_select_hosts_no_valid_host(self):
+
+ def _return_no_host(*args, **kwargs):
+ return []
+
+ self.stubs.Set(self.driver, '_schedule', _return_no_host)
+ self.assertRaises(exception.NoValidHost,
+ self.driver.select_hosts, self.context, {}, {})
diff --git a/nova/tests/scheduler/test_scheduler.py b/nova/tests/scheduler/test_scheduler.py
index 7742962bd..44ddcc7a6 100644
--- a/nova/tests/scheduler/test_scheduler.py
+++ b/nova/tests/scheduler/test_scheduler.py
@@ -955,6 +955,10 @@ class SchedulerDriverBaseTestCase(SchedulerTestCase):
self.context, {},
fake_request_spec, {}, {}, {}, None)
+ def test_unimplemented_select_hosts(self):
+ self.assertRaises(NotImplementedError,
+ self.driver.select_hosts, self.context, {}, {})
+
class SchedulerDriverModuleTestCase(test.NoDBTestCase):
"""Test case for scheduler driver module methods."""