diff options
author | Russell Bryant <rbryant@redhat.com> | 2013-04-23 13:34:24 -0400 |
---|---|---|
committer | Russell Bryant <rbryant@redhat.com> | 2013-04-23 14:02:39 -0400 |
commit | 1a546c67ee94eef2260cd64e7fcb3fb0ed44b4f6 (patch) | |
tree | 0a4bfb8fc49e19f9efd43c66924d2d858d27b9a8 /nova/manager.py | |
parent | 98efba2dff8f67220595447728f69330089a3ebd (diff) | |
download | nova-1a546c67ee94eef2260cd64e7fcb3fb0ed44b4f6.tar.gz nova-1a546c67ee94eef2260cd64e7fcb3fb0ed44b4f6.tar.xz nova-1a546c67ee94eef2260cd64e7fcb3fb0ed44b4f6.zip |
Add an rpc API common to all services.
This patch adds an rpc API that is exposed by all services. The methods
in this API exist in their own namespace and are versioned independently
of the main API for the service.
The first method for this API is a simple ping() method. This method
exists in the conductor rpc API already, and could be more generally
useful. Other methods will be added in later patches.
The base rpc API will be exposed from all services automatically unless
they override the create_rpc_dispatcher method in the base manager
class. All services need to pass a service_name into the base manager
constructor. Some services already did this, but now it's needed for
all of them.
Implements blueprint base-rpc-api.
Change-Id: I02ab1970578bc53ba26461b533d06d1055c2d88e
Diffstat (limited to 'nova/manager.py')
-rw-r--r-- | nova/manager.py | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/nova/manager.py b/nova/manager.py index d6a62c509..f2a0636d1 100644 --- a/nova/manager.py +++ b/nova/manager.py @@ -57,6 +57,7 @@ import datetime import eventlet from oslo.config import cfg +from nova import baserpc from nova.db import base from nova import exception from nova.openstack.common import log as logging @@ -195,12 +196,13 @@ class Manager(base.Base): # Set RPC API version to 1.0 by default. RPC_API_VERSION = '1.0' - def __init__(self, host=None, db_driver=None): + def __init__(self, host=None, db_driver=None, service_name='undefined'): if not host: host = CONF.host self.host = host self.load_plugins() self.backdoor_port = None + self.service_name = service_name super(Manager, self).__init__(db_driver) def load_plugins(self): @@ -213,7 +215,8 @@ class Manager(base.Base): If a manager would like to set an rpc API version, or support more than one class as the target of rpc messages, override this method. ''' - return rpc_dispatcher.RpcDispatcher([self]) + base_rpc = baserpc.BaseRPCAPI(self.service_name) + return rpc_dispatcher.RpcDispatcher([self, base_rpc]) def periodic_tasks(self, context, raise_on_error=False): """Tasks to be run at a periodic interval.""" @@ -292,7 +295,8 @@ class SchedulerDependentManager(Manager): self.last_capabilities = None self.service_name = service_name self.scheduler_rpcapi = scheduler_rpcapi.SchedulerAPI() - super(SchedulerDependentManager, self).__init__(host, db_driver) + super(SchedulerDependentManager, self).__init__(host, db_driver, + service_name) def load_plugins(self): pluginmgr = pluginmanager.PluginManager('nova', self.service_name) |