diff options
| author | Jenkins <jenkins@review.openstack.org> | 2013-06-10 23:31:30 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2013-06-10 23:31:30 +0000 |
| commit | e40f78b0daa2b78cea1be6262a21029f9cef8de7 (patch) | |
| tree | 5faffcf1d7f01c053d7acc1102de965c256f4fbc | |
| parent | 2728c4ef7008e7b19149ae81e43fcad9554b795a (diff) | |
| parent | cb49e5407cc1db0cd3533b57a12ec99a7179abd7 (diff) | |
| download | nova-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.py | 5 | ||||
| -rw-r--r-- | nova/tests/scheduler/test_chance_scheduler.py | 9 | ||||
| -rw-r--r-- | nova/tests/scheduler/test_filter_scheduler.py | 9 | ||||
| -rw-r--r-- | nova/tests/scheduler/test_scheduler.py | 4 |
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.""" |
