diff options
author | Jenkins <jenkins@review.openstack.org> | 2012-12-13 00:00:26 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2012-12-13 00:00:26 +0000 |
commit | 31f0eec568e4b70d84b55080790dce317f1303c7 (patch) | |
tree | 045883806b29a406172157b7f394193d28071278 /nova | |
parent | e467a0a1fe42560753abafb530e5b50c6d5b6428 (diff) | |
parent | d6c89b5d8b77dcdac0d217cf623455735ef91f8b (diff) | |
download | nova-31f0eec568e4b70d84b55080790dce317f1303c7.tar.gz nova-31f0eec568e4b70d84b55080790dce317f1303c7.tar.xz nova-31f0eec568e4b70d84b55080790dce317f1303c7.zip |
Merge "Make update_service_capabilities() accept a list of capabilities"
Diffstat (limited to 'nova')
-rw-r--r-- | nova/manager.py | 7 | ||||
-rw-r--r-- | nova/scheduler/manager.py | 13 | ||||
-rw-r--r-- | nova/scheduler/rpcapi.py | 5 | ||||
-rw-r--r-- | nova/tests/scheduler/test_rpcapi.py | 3 | ||||
-rw-r--r-- | nova/tests/scheduler/test_scheduler.py | 22 |
5 files changed, 38 insertions, 12 deletions
diff --git a/nova/manager.py b/nova/manager.py index b1a1d471d..e7130fb4a 100644 --- a/nova/manager.py +++ b/nova/manager.py @@ -255,8 +255,5 @@ class SchedulerDependentManager(Manager): """ if self.last_capabilities: LOG.debug(_('Notifying Schedulers of capabilities ...')) - for capability_item in self.last_capabilities: - self.scheduler_rpcapi.update_service_capabilities(context, - self.service_name, self.host, capability_item) - # TODO(NTTdocomo): Make update_service_capabilities() accept a list - # of capabilities + self.scheduler_rpcapi.update_service_capabilities(context, + self.service_name, self.host, self.last_capabilities) diff --git a/nova/scheduler/manager.py b/nova/scheduler/manager.py index dbb8845cb..535eb7797 100644 --- a/nova/scheduler/manager.py +++ b/nova/scheduler/manager.py @@ -54,7 +54,7 @@ QUOTAS = quota.QUOTAS class SchedulerManager(manager.Manager): """Chooses a host to run instances on.""" - RPC_API_VERSION = '2.3' + RPC_API_VERSION = '2.4' def __init__(self, scheduler_driver=None, *args, **kwargs): if not scheduler_driver: @@ -72,10 +72,13 @@ class SchedulerManager(manager.Manager): def update_service_capabilities(self, context, service_name, host, capabilities): """Process a capability update from a service node.""" - if capabilities is None: - capabilities = {} - self.driver.update_service_capabilities(service_name, host, - capabilities) + if not isinstance(capabilities, list): + capabilities = [capabilities] + for capability in capabilities: + if capability is None: + capability = {} + self.driver.update_service_capabilities(service_name, host, + capability) def create_volume(self, context, volume_id, snapshot_id, reservations=None, image_id=None): diff --git a/nova/scheduler/rpcapi.py b/nova/scheduler/rpcapi.py index f368e95a0..4bc6e0e45 100644 --- a/nova/scheduler/rpcapi.py +++ b/nova/scheduler/rpcapi.py @@ -47,6 +47,8 @@ class SchedulerAPI(nova.openstack.common.rpc.proxy.RpcProxy): 2.1 - Add image_id to create_volume() 2.2 - Remove reservations argument to create_volume() 2.3 - Remove create_volume() + 2.4 - Change update_service_capabilities() + - accepts a list of capabilities ''' # @@ -102,4 +104,5 @@ class SchedulerAPI(nova.openstack.common.rpc.proxy.RpcProxy): capabilities): self.fanout_cast(ctxt, self.make_msg('update_service_capabilities', service_name=service_name, host=host, - capabilities=capabilities)) + capabilities=capabilities), + version='2.4') diff --git a/nova/tests/scheduler/test_rpcapi.py b/nova/tests/scheduler/test_rpcapi.py index 112a41105..b1174559a 100644 --- a/nova/tests/scheduler/test_rpcapi.py +++ b/nova/tests/scheduler/test_rpcapi.py @@ -82,4 +82,5 @@ class SchedulerRpcAPITestCase(test.TestCase): def test_update_service_capabilities(self): self._test_scheduler_api('update_service_capabilities', rpc_method='fanout_cast', service_name='fake_name', - host='fake_host', capabilities='fake_capabilities') + host='fake_host', capabilities='fake_capabilities', + version='2.4') diff --git a/nova/tests/scheduler/test_scheduler.py b/nova/tests/scheduler/test_scheduler.py index 105240775..d0f0fd6ec 100644 --- a/nova/tests/scheduler/test_scheduler.py +++ b/nova/tests/scheduler/test_scheduler.py @@ -87,6 +87,28 @@ class SchedulerManagerTestCase(test.TestCase): service_name=service_name, host=host, capabilities=capabilities) + def test_update_service_multiple_capabilities(self): + service_name = 'fake_service' + host = 'fake_host' + + self.mox.StubOutWithMock(self.manager.driver, + 'update_service_capabilities') + + capab1 = {'fake_capability': 'fake_value1'}, + capab2 = {'fake_capability': 'fake_value2'}, + capab3 = None + self.manager.driver.update_service_capabilities( + service_name, host, capab1) + self.manager.driver.update_service_capabilities( + service_name, host, capab2) + # None is converted to {} + self.manager.driver.update_service_capabilities( + service_name, host, {}) + self.mox.ReplayAll() + self.manager.update_service_capabilities(self.context, + service_name=service_name, host=host, + capabilities=[capab1, capab2, capab3]) + def test_show_host_resources(self): host = 'fake_host' |