diff --git a/monasca_notification/types/notifiers.py b/monasca_notification/types/notifiers.py index cb55bd0..005e20f 100644 --- a/monasca_notification/types/notifiers.py +++ b/monasca_notification/types/notifiers.py @@ -87,6 +87,10 @@ def config(cfg): else: log.warn("No config data for type: {}".format(ntype)) config_with_no_notifiers = set(formatted_config.keys()) - set(configured_notifiers.keys()) + # Plugins section contains only additional plugins and should not be + # considered as a separate plugin + if 'plugins' in config_with_no_notifiers: + config_with_no_notifiers.remove('plugins') if config_with_no_notifiers: log.warn("No notifiers found for {0}". format(", ".join(config_with_no_notifiers))) diff --git a/tests/test_notifiers.py b/tests/test_notifiers.py index 4dfe551..ba952ce 100644 --- a/tests/test_notifiers.py +++ b/tests/test_notifiers.py @@ -382,3 +382,16 @@ class TestInterface(unittest.TestCase): configured_plugins = ["email", "webhook", "pagerduty", "slack"] for plugin in notifiers.configured_notifiers: self.asssertIn(plugin.type in configured_plugins) + + @mock.patch('monasca_notification.types.notifiers.log') + def test_no_plugins_keyword_in_possible_notifiers(self, mock_log): + mock_log.warning = self.trap.append + config_dict = {"plugins": ["monasca_notification.plugins.slack_notifier:SlackNotifier"], + "fake_notifier": ["monasca_notification.plugins.fake_notifier:FakeNotifier"], + "slack": {"timeout": 5, "ca_certs": "/etc/ssl/certs/ca-certificates.crt", "insecure": False} + } + notifiers.init(self.statsd) + notifiers.possible_notifiers = [] + notifiers.load_plugins(config_dict) + notifiers.config(config_dict) + self.assertEqual('No notifiers found for fake_notifier', mock_log.warn.call_args[0][0])