def _load_notifiers(self): """One-time load of notifier config file.""" self.routing_groups = {} self.used_drivers = set() filename = CONF.routing_notifier_config if not filename: return # Infer which drivers are used from the config file. self.routing_groups = yaml.load( self._get_notifier_config_file(filename)) if not self.routing_groups: self.routing_groups = {} # In case we got None from load() return for group in self.routing_groups.values(): self.used_drivers.update(group.keys()) LOG.debug('loading notifiers from %s', self.NOTIFIER_PLUGIN_NAMESPACE) self.plugin_manager = dispatch.DispatchExtensionManager( namespace=self.NOTIFIER_PLUGIN_NAMESPACE, check_func=self._should_load_plugin, invoke_on_load=True, invoke_args=None) if not list(self.plugin_manager): LOG.warning(_("Failed to load any notifiers for %s"), self.NOTIFIER_PLUGIN_NAMESPACE)
def test_dispatch(): def check_dispatch(ep, *args, **kwds): return ep.name == 't2' def invoke(ep, *args, **kwds): return (ep.name, args, kwds) em = dispatch.DispatchExtensionManager( 'stevedore.test.extension', lambda *args, **kwds: True, invoke_on_load=True, invoke_args=('a', ), invoke_kwds={'b': 'B'}, ) assert len(em.extensions) == 2 assert set(em.names()) == set(['t1', 't2']) results = em.map( check_dispatch, invoke, 'first', named='named value', ) expected = [('t2', ('first', ), {'named': 'named value'})] assert results == expected
def test_dispatch_map_method(self): em = dispatch.DispatchExtensionManager('stevedore.test.extension', lambda *args, **kwds: True, invoke_on_load=True, invoke_args=('a',), invoke_kwds={'b': 'B'}, ) results = em.map_method(check_dispatch, 'get_args_and_data', 'first') self.assertEqual(results, [(('a',), {'b': 'B'}, 'first')])
def test_dispatch(self): def invoke(ep, *args, **kwds): return (ep.name, args, kwds) em = dispatch.DispatchExtensionManager('stevedore.test.extension', lambda *args, **kwds: True, invoke_on_load=True, invoke_args=('a',), invoke_kwds={'b': 'B'}, ) self.assertEqual(len(em.extensions), 2) self.assertEqual(set(em.names()), set(['t1', 't2'])) results = em.map(check_dispatch, invoke, 'first', named='named value', ) expected = [('t2', ('first',), {'named': 'named value'})] self.assertEqual(results, expected)