summaryrefslogtreecommitdiff
path: root/oslo_messaging/notify
diff options
context:
space:
mode:
authorRajath Agasthya <rajathagasthya@gmail.com>2017-09-06 14:58:32 -0700
committerRajath Agasthya <rajathagasthya@gmail.com>2017-09-11 07:07:30 -0700
commit03b6f18f80b11e7067b94759c5da6a75f839bed7 (patch)
tree585316831c1e5d820b2e83cd665a7845f735bd2a /oslo_messaging/notify
parent338b85eb4e2fd8a91a798ac97c265ff21561ffef (diff)
downloadoslo-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.py6
-rw-r--r--oslo_messaging/notify/notifier.py9
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: