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 test_adding_and_removing_notifier_module(self):
        self.config(notification_driver='openstack.common.'
                                        'notifier.list_notifier',
                    list_notifier_drivers=[])

        list_notifier.add_driver('openstack.common.notifier.no_op_notifier')
        api.notify(None, 'publisher_id', 'event_type',
                   api.WARN, dict(a=3))
        self.assertEqual(self.notify_count, 1)

        list_notifier.remove_driver('openstack.common.notifier.no_op_notifier')

        api.notify(None, 'publisher_id', 'event_type',
                   api.WARN, dict(a=3))
        self.assertEqual(self.notify_count, 1)
    def test_adding_and_removing_notifier_object(self):
        self.notifier_object = SimpleNotifier()
        self.config(notification_driver='openstack.common.'
                                        'notifier.list_notifier',
                    list_notifier_drivers=[
                        'openstack.common.notifier.no_op_notifier'])

        list_notifier.add_driver(self.notifier_object)
        api.notify(None, 'publisher_id', 'event_type',
                   api.WARN, dict(a=3))
        self.assertEqual(self.notify_count, 1)
        self.assertTrue(self.notifier_object.notified)

        self.notifier_object.notified = False
        list_notifier.remove_driver(self.notifier_object)

        api.notify(None, 'publisher_id', 'event_type',
                   api.WARN, dict(a=3))
        self.assertEqual(self.notify_count, 2)
        self.assertFalse(self.notifier_object.notified)
    def __init__(self, project_name, service_name):
        """ Construct Plugin Manager; load and initialize plugins.

        project_name (e.g. 'nova' or 'glance') is used
        to construct the entry point that identifies plugins.

        The service_name (e.g. 'compute') is passed on to
        each plugin as a raw string for it to do what it will.
        """
        self._project_name = project_name
        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
        CONF.notification_driver = 'openstack.common.notifier.list_notifier'
        if (old_notifier and
            old_notifier != 'openstack.common.notifier.list_notifier'):
            list_notifier.add_driver(old_notifier)