summaryrefslogtreecommitdiff
path: root/ironic/common
diff options
context:
space:
mode:
Diffstat (limited to 'ironic/common')
-rw-r--r--ironic/common/rpc.py10
-rw-r--r--ironic/common/rpc_service.py4
2 files changed, 13 insertions, 1 deletions
diff --git a/ironic/common/rpc.py b/ironic/common/rpc.py
index 95647a72a..285ee1f06 100644
--- a/ironic/common/rpc.py
+++ b/ironic/common/rpc.py
@@ -31,6 +31,9 @@ ALLOWED_EXMODS = [
exception.__name__,
]
EXTRA_EXMODS = []
+GLOBAL_MANAGER = None
+
+MANAGER_TOPIC = 'ironic.conductor_manager'
def init(conf):
@@ -148,3 +151,10 @@ def get_versioned_notifier(publisher_id=None):
assert VERSIONED_NOTIFIER is not None
assert publisher_id is not None
return VERSIONED_NOTIFIER.prepare(publisher_id=publisher_id)
+
+
+def set_global_manager(manager):
+ global GLOBAL_MANAGER
+ if GLOBAL_MANAGER is not None and manager is not None:
+ raise RuntimeError("An attempt to set a global manager twice")
+ GLOBAL_MANAGER = manager
diff --git a/ironic/common/rpc_service.py b/ironic/common/rpc_service.py
index c0a550c64..bbf38d7f4 100644
--- a/ironic/common/rpc_service.py
+++ b/ironic/common/rpc_service.py
@@ -38,7 +38,7 @@ class RPCService(service.Service):
self.host = host
manager_module = importutils.try_import(manager_module)
manager_class = getattr(manager_module, manager_class)
- self.manager = manager_class(host, manager_module.MANAGER_TOPIC)
+ self.manager = manager_class(host, rpc.MANAGER_TOPIC)
self.topic = self.manager.topic
self.rpcserver = None
self.deregister = True
@@ -61,6 +61,7 @@ class RPCService(service.Service):
self.handle_signal()
self.manager.init_host(admin_context)
+ rpc.set_global_manager(self.manager)
LOG.info('Created RPC server for service %(service)s on host '
'%(host)s.',
@@ -84,6 +85,7 @@ class RPCService(service.Service):
LOG.info('Stopped RPC server for service %(service)s on host '
'%(host)s.',
{'service': self.topic, 'host': self.host})
+ rpc.set_global_manager(None)
def _handle_signal(self, signo, frame):
LOG.info('Got signal SIGUSR1. Not deregistering on next shutdown '