diff options
author | Dmitry Tantsur <dtantsur@protonmail.com> | 2021-11-29 11:36:06 +0100 |
---|---|---|
committer | Dmitry Tantsur <dtantsur@protonmail.com> | 2021-12-07 09:33:04 +0100 |
commit | 019ed2d7b11575326328231a7f3eca88240275ef (patch) | |
tree | 33b73fffdafc3e48144a72c7014dbca18d5a3987 /ironic/common | |
parent | 9a6f2d101ba734126b3e7f0d475b747ebcb84b62 (diff) | |
download | ironic-019ed2d7b11575326328231a7f3eca88240275ef.tar.gz |
Add "none" RPC transport that disables the RPC bus
When using the new combined executable in a single-conductor scenario,
it may make sense to completely disable the remote RPC. The new
``rpc_transport`` value ``none`` achieves that.
Change-Id: I6a83358c65b3ed213c8a991d42660ca51fc3a8ec
Story: #2009676
Task: #44104
Diffstat (limited to 'ironic/common')
-rw-r--r-- | ironic/common/rpc_service.py | 13 | ||||
-rw-r--r-- | ironic/common/service.py | 8 |
2 files changed, 16 insertions, 5 deletions
diff --git a/ironic/common/rpc_service.py b/ironic/common/rpc_service.py index bbf38d7f4..78379c981 100644 --- a/ironic/common/rpc_service.py +++ b/ironic/common/rpc_service.py @@ -53,19 +53,22 @@ class RPCService(service.Service): if CONF.rpc_transport == 'json-rpc': self.rpcserver = json_rpc.WSGIService( self.manager, serializer, context.RequestContext.from_dict) - else: + elif CONF.rpc_transport != 'none': target = messaging.Target(topic=self.topic, server=self.host) endpoints = [self.manager] self.rpcserver = rpc.get_server(target, endpoints, serializer) - self.rpcserver.start() + + if self.rpcserver is not None: + self.rpcserver.start() 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.', - {'service': self.topic, 'host': self.host}) + LOG.info('Created RPC server with %(transport)s transport for service ' + '%(service)s on host %(host)s.', + {'service': self.topic, 'host': self.host, + 'transport': CONF.rpc_transport}) def stop(self): try: diff --git a/ironic/common/service.py b/ironic/common/service.py index db83c147a..c30df6f56 100644 --- a/ironic/common/service.py +++ b/ironic/common/service.py @@ -69,3 +69,11 @@ def prepare_service(name, argv=None, conf=CONF): def process_launcher(): return service.ProcessLauncher(CONF, restart_method='mutate') + + +def ensure_rpc_transport(conf=CONF): + # Only the combined ironic executable can use rpc_transport = none + if conf.rpc_transport == 'none': + raise RuntimeError("This service is not designed to work with " + "rpc_transport = none. Please use the combined " + "ironic executable or another RPC transport.") |