diff options
author | Rajath Agasthya <rajathagasthya@gmail.com> | 2017-09-06 14:58:32 -0700 |
---|---|---|
committer | Rajath Agasthya <rajathagasthya@gmail.com> | 2017-09-11 07:07:30 -0700 |
commit | 03b6f18f80b11e7067b94759c5da6a75f839bed7 (patch) | |
tree | 585316831c1e5d820b2e83cd665a7845f735bd2a /oslo_messaging/notify | |
parent | 338b85eb4e2fd8a91a798ac97c265ff21561ffef (diff) | |
download | oslo-messaging-03b6f18f80b11e7067b94759c5da6a75f839bed7.tar.gz |
Warn when wrong transport instance is used
Since RPC and notifications can have different backends, it is
useful to warn users if they use a notification transport in RPC
and vice versa. This patch introduces RPCTransport and
NotificationTransport subclasses of Transport, so it's easier to
add different behavior for them if need be.
Related-Bug: #1680192
Change-Id: Iab60544d69053c8e74c28a2d5c84665be749013f
Diffstat (limited to 'oslo_messaging/notify')
-rw-r--r-- | oslo_messaging/notify/listener.py | 6 | ||||
-rw-r--r-- | oslo_messaging/notify/notifier.py | 9 |
2 files changed, 13 insertions, 2 deletions
diff --git a/oslo_messaging/notify/listener.py b/oslo_messaging/notify/listener.py index 0142856..9de09f8 100644 --- a/oslo_messaging/notify/listener.py +++ b/oslo_messaging/notify/listener.py @@ -132,6 +132,7 @@ import logging from oslo_messaging._i18n import _LE from oslo_messaging.notify import dispatcher as notify_dispatcher from oslo_messaging import server as msg_server +from oslo_messaging import transport as msg_transport LOG = logging.getLogger(__name__) @@ -163,6 +164,11 @@ class NotificationServerBase(msg_server.MessageHandlingServer): class NotificationServer(NotificationServerBase): def __init__(self, transport, targets, dispatcher, executor='blocking', allow_requeue=True, pool=None): + if not isinstance(transport, msg_transport.NotificationTransport): + LOG.warning("Using RPC transport for notifications. Please use " + "get_notification_transport to obtain a " + "notification transport instance.") + super(NotificationServer, self).__init__( transport, targets, dispatcher, executor, allow_requeue, pool, 1, None diff --git a/oslo_messaging/notify/notifier.py b/oslo_messaging/notify/notifier.py index 7774dea..8bdb13c 100644 --- a/oslo_messaging/notify/notifier.py +++ b/oslo_messaging/notify/notifier.py @@ -171,8 +171,9 @@ def get_notification_transport(conf, url=None, group='oslo_messaging_notifications') if url is None: url = conf.oslo_messaging_notifications.transport_url - return msg_transport._get_transport(conf, url, - allowed_remote_exmods, aliases) + return msg_transport._get_transport( + conf, url, allowed_remote_exmods, aliases, + transport_cls=msg_transport.NotificationTransport) class Notifier(object): @@ -245,6 +246,10 @@ class Notifier(object): conf.register_opts(_notifier_opts, group='oslo_messaging_notifications') + if not isinstance(transport, msg_transport.NotificationTransport): + _LOG.warning("Using RPC transport for notifications. Please use " + "get_notification_transport to obtain a " + "notification transport instance.") self.transport = transport self.publisher_id = publisher_id if retry is not None: |