diff options
author | Hans Lindgren <hanlind@kth.se> | 2013-06-19 21:52:51 +0200 |
---|---|---|
committer | Hans Lindgren <hanlind@kth.se> | 2013-06-19 22:06:23 +0200 |
commit | 10db6128b8dc3ed2773acf262af529e0485cfe9f (patch) | |
tree | c30e45daff35449bbff4fc0703af5ac75f784490 | |
parent | f22dafd8b558e3dd628aae9d947718450334e626 (diff) | |
download | nova-10db6128b8dc3ed2773acf262af529e0485cfe9f.tar.gz nova-10db6128b8dc3ed2773acf262af529e0485cfe9f.tar.xz nova-10db6128b8dc3ed2773acf262af529e0485cfe9f.zip |
Allow scheduler manager NoValidHost exception to pass over RPC
Calls to scheduler.manager.select_hosts are expected to throw NoValidHost
exceptions if no hosts match such requests. For the exception to be passed
over RPC, the method must be decorated with:
@rpc_common.client_exceptions(exception.NoValidHost)
Resolves bug 1192693.
Change-Id: If9d1f15ff1239e422067893f9d837c41e5f5474d
-rw-r--r-- | nova/scheduler/manager.py | 1 | ||||
-rw-r--r-- | nova/tests/scheduler/test_scheduler.py | 11 |
2 files changed, 12 insertions, 0 deletions
diff --git a/nova/scheduler/manager.py b/nova/scheduler/manager.py index 9429a0662..fee29768a 100644 --- a/nova/scheduler/manager.py +++ b/nova/scheduler/manager.py @@ -308,6 +308,7 @@ class SchedulerManager(manager.Manager): def get_backdoor_port(self, context): return self.backdoor_port + @rpc_common.client_exceptions(exception.NoValidHost) def select_hosts(self, context, request_spec, filter_properties): """Returns host(s) best suited for this request_spec and filter_properties. diff --git a/nova/tests/scheduler/test_scheduler.py b/nova/tests/scheduler/test_scheduler.py index 0574f6d2e..d627f2765 100644 --- a/nova/tests/scheduler/test_scheduler.py +++ b/nova/tests/scheduler/test_scheduler.py @@ -402,6 +402,17 @@ class SchedulerManagerTestCase(test.NoDBTestCase): self.manager._set_vm_state_and_notify('foo', {'vm_state': 'foo'}, self.context, None, request) + def test_select_hosts_throws_rpc_clientexception(self): + self.mox.StubOutWithMock(self.manager.driver, 'select_hosts') + + self.manager.driver.select_hosts(self.context, {}, {}).AndRaise( + exception.NoValidHost(reason="")) + + self.mox.ReplayAll() + self.assertRaises(rpc_common.ClientException, + self.manager.select_hosts, + self.context, {}, {}) + class SchedulerTestCase(test.NoDBTestCase): """Test case for base scheduler driver class.""" |