summaryrefslogtreecommitdiff
path: root/ceilometer/messaging.py
diff options
context:
space:
mode:
authorMehdi Abaakouk <mehdi.abaakouk@enovance.com>2014-05-26 15:37:36 +0200
committerMehdi Abaakouk <mehdi.abaakouk@enovance.com>2014-05-27 18:51:42 +0200
commit9df30aad188f36309ff817810d509f37e951426e (patch)
tree48bdaa078791ffa3351f46741bdf83cf4750840a /ceilometer/messaging.py
parent08eea702572a1f36c06da201b5f6b9ab6ff90f15 (diff)
downloadceilometer-9df30aad188f36309ff817810d509f37e951426e.tar.gz
Don't rely on oslomsg configuration options
We shouldn't use internal oslo.messaging configuration options. This patch removes them when an oslo.messaging public API equivalent is possible. Closes-bug: #1323324 Change-Id: I0d901bfaf7dd67f0adb0ad9c1b4371994573a6c8
Diffstat (limited to 'ceilometer/messaging.py')
-rw-r--r--ceilometer/messaging.py23
1 files changed, 15 insertions, 8 deletions
diff --git a/ceilometer/messaging.py b/ceilometer/messaging.py
index 24f94a7e..7d92e03d 100644
--- a/ceilometer/messaging.py
+++ b/ceilometer/messaging.py
@@ -62,7 +62,7 @@ class JsonPayloadSerializer(oslo.messaging.NoOpSerializer):
return jsonutils.to_primitive(entity, convert_instances=True)
-def setup(url=None):
+def setup(url=None, optional=False):
"""Initialise the oslo.messaging layer."""
global TRANSPORT, NOTIFIER
@@ -73,9 +73,17 @@ def setup(url=None):
if not TRANSPORT:
oslo.messaging.set_transport_defaults('ceilometer')
- TRANSPORT = oslo.messaging.get_transport(cfg.CONF, url,
- aliases=_ALIASES)
- if not NOTIFIER:
+ try:
+ TRANSPORT = oslo.messaging.get_transport(cfg.CONF, url,
+ aliases=_ALIASES)
+ except oslo.messaging.InvalidTransportURL as e:
+ TRANSPORT = None
+ if not optional or e.url:
+ # NOTE(sileht): oslo.messaging is configured but unloadable
+ # so reraise the exception
+ raise
+
+ if not NOTIFIER and TRANSPORT:
serializer = RequestContextSerializer(JsonPayloadSerializer())
NOTIFIER = oslo.messaging.Notifier(TRANSPORT, serializer=serializer)
@@ -83,10 +91,9 @@ def setup(url=None):
def cleanup():
"""Cleanup the oslo.messaging layer."""
global TRANSPORT, NOTIFIER
- assert TRANSPORT is not None
- assert NOTIFIER is not None
- TRANSPORT.cleanup()
- TRANSPORT = NOTIFIER = None
+ if TRANSPORT:
+ TRANSPORT.cleanup()
+ TRANSPORT = NOTIFIER = None
def get_rpc_server(topic, endpoint):