diff --git a/mistral/notifiers/base.py b/mistral/notifiers/base.py index b72dc1f05..c0c7f8128 100644 --- a/mistral/notifiers/base.py +++ b/mistral/notifiers/base.py @@ -77,5 +77,5 @@ class NotificationPublisher(object): """Notifier plugin interface.""" @abc.abstractmethod - def publish(self, ex_id, data, event, timestamp, **kwargs): + def publish(self, ctx, ex_id, data, event, timestamp, **kwargs): raise NotImplementedError() diff --git a/mistral/notifiers/default_notifier.py b/mistral/notifiers/default_notifier.py index cf871d3a2..5e8ac33f8 100644 --- a/mistral/notifiers/default_notifier.py +++ b/mistral/notifiers/default_notifier.py @@ -16,6 +16,7 @@ import copy from oslo_log import log as logging +from mistral import context as auth_ctx from mistral.notifiers import base @@ -26,6 +27,8 @@ class DefaultNotifier(base.Notifier): """Local notifier that process notification request.""" def notify(self, ex_id, data, event, timestamp, publishers): + ctx = auth_ctx.ctx() + for entry in publishers: params = copy.deepcopy(entry) publisher_name = params.pop('type', None) @@ -36,7 +39,7 @@ class DefaultNotifier(base.Notifier): try: publisher = base.get_notification_publisher(publisher_name) - publisher.publish(ex_id, data, event, timestamp, **params) + publisher.publish(ctx, ex_id, data, event, timestamp, **params) except Exception: LOG.exception( 'Unable to process event for publisher "%s".', diff --git a/mistral/notifiers/publishers/noop.py b/mistral/notifiers/publishers/noop.py index ea612b1e8..756ccc7aa 100644 --- a/mistral/notifiers/publishers/noop.py +++ b/mistral/notifiers/publishers/noop.py @@ -22,7 +22,7 @@ LOG = logging.getLogger(__name__) class NoopPublisher(base.NotificationPublisher): - def publish(self, ex_id, data, event, timestamp, **kwargs): + def publish(self, ctx, ex_id, data, event, timestamp, **kwargs): LOG.info( 'The event %s for [name=%s, id=%s] is published by the ' 'noop notification publisher.', diff --git a/mistral/notifiers/publishers/webhook.py b/mistral/notifiers/publishers/webhook.py index a867f0ac9..e92c3b467 100644 --- a/mistral/notifiers/publishers/webhook.py +++ b/mistral/notifiers/publishers/webhook.py @@ -26,7 +26,7 @@ LOG = logging.getLogger(__name__) class WebhookPublisher(base.NotificationPublisher): - def publish(self, ex_id, data, event, timestamp, **kwargs): + def publish(self, ctx, ex_id, data, event, timestamp, **kwargs): url = kwargs.get('url') headers = kwargs.get('headers', {}) diff --git a/mistral/tests/unit/notifiers/test_notifier_servers.py b/mistral/tests/unit/notifiers/test_notifier_servers.py index 0872afa56..c79534aea 100644 --- a/mistral/tests/unit/notifiers/test_notifier_servers.py +++ b/mistral/tests/unit/notifiers/test_notifier_servers.py @@ -17,6 +17,7 @@ import mock from oslo_config import cfg from stevedore import exception as sd_exc +from mistral import context from mistral.db.v2 import api as db_api from mistral.notifiers import base as notif from mistral.notifiers import default_notifier as d_notif @@ -33,7 +34,10 @@ cfg.CONF.set_default('auth_enable', False, group='pecan') EVENT_LOGS = [] -def publisher_process(ex_id, data, event, timestamp, **kwargs): +def publisher_process(ctx, ex_id, data, event, timestamp, **kwargs): + if not isinstance(ctx, context.MistralContext): + raise TypeError('ctx is not type of MistralContext.') + EVENT_LOGS.append((ex_id, event)) diff --git a/mistral/tests/unit/notifiers/test_notify.py b/mistral/tests/unit/notifiers/test_notify.py index 88bf84a65..6cb50952b 100644 --- a/mistral/tests/unit/notifiers/test_notify.py +++ b/mistral/tests/unit/notifiers/test_notify.py @@ -17,6 +17,7 @@ import mock from oslo_config import cfg +from mistral import context from mistral.db.v2 import api as db_api from mistral.notifiers import base as notif from mistral.notifiers import notification_events as events @@ -33,7 +34,10 @@ cfg.CONF.set_default('auth_enable', False, group='pecan') EVENT_LOGS = [] -def log_event(ex_id, data, event, timestamp, **kwargs): +def log_event(ctx, ex_id, data, event, timestamp, **kwargs): + if not isinstance(ctx, context.MistralContext): + raise TypeError('ctx is not type of MistralContext.') + EVENT_LOGS.append((ex_id, event))