summaryrefslogtreecommitdiffstats
path: root/openstack/common/plugin/pluginmanager.py
diff options
context:
space:
mode:
Diffstat (limited to 'openstack/common/plugin/pluginmanager.py')
-rw-r--r--openstack/common/plugin/pluginmanager.py26
1 files changed, 17 insertions, 9 deletions
diff --git a/openstack/common/plugin/pluginmanager.py b/openstack/common/plugin/pluginmanager.py
index 2e3d497..d9b6bc3 100644
--- a/openstack/common/plugin/pluginmanager.py
+++ b/openstack/common/plugin/pluginmanager.py
@@ -53,15 +53,16 @@ class PluginManager(object):
self._service_name = service_name
self.plugins = []
- # Make sure we're using the list_notifier.
- if not hasattr(CONF, "list_notifier_drivers"):
- CONF.list_notifier_drivers = []
- old_notifier = CONF.notification_driver
- drvstring = 'openstack.common.notifier.list_notifier'
- CONF.notification_driver = drvstring
- if (old_notifier and
- old_notifier != 'openstack.common.notifier.list_notifier'):
- list_notifier.add_driver(old_notifier)
+ def _force_use_list_notifier(self):
+ if (CONF.notification_driver !=
+ 'openstack.common.notifier.list_notifier'):
+ if not hasattr(CONF, "list_notifier_drivers"):
+ CONF.list_notifier_drivers = []
+ old_notifier = CONF.notification_driver
+ drvstring = 'openstack.common.notifier.list_notifier'
+ CONF.notification_driver = drvstring
+ if old_notifier:
+ list_notifier.add_driver(old_notifier)
def load_plugins(self):
self.plugins = []
@@ -76,6 +77,13 @@ class PluginManager(object):
LOG.error(_("Failed to load plugin %(plug)s: %(exc)s") %
{'plug': entrypoint, 'exc': exc})
+ # See if we need to turn on the list notifier
+ for plugin in self.plugins:
+ if plugin.notifiers:
+ self._force_use_list_notifier()
+ break
+
+ # Register individual notifiers.
for plugin in self.plugins:
for notifier in plugin.notifiers:
list_notifier.add_driver(notifier)