diff options
author | Jenkins <jenkins@review.openstack.org> | 2016-07-06 22:29:19 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2016-07-06 22:29:19 +0000 |
commit | f68325fc481a0cc2a9aa9e8b1701cdb092463b49 (patch) | |
tree | 331e6ac4a2566e7018d427414a1fb5d1ebfe5b39 | |
parent | da83cd831dc7ff12a45d40d1326b9d88eecaf623 (diff) | |
parent | 1218ab61a124ead05feea3b10077f06ea551aef6 (diff) | |
download | stevedore-f68325fc481a0cc2a9aa9e8b1701cdb092463b49.tar.gz |
Merge "Fix NamedExtensionManager fails when loading failing extension in order"1.16.0
-rw-r--r-- | stevedore/named.py | 12 | ||||
-rw-r--r-- | stevedore/tests/test_named.py | 23 |
2 files changed, 30 insertions, 5 deletions
diff --git a/stevedore/named.py b/stevedore/named.py index c0b7af8..67cbe8d 100644 --- a/stevedore/named.py +++ b/stevedore/named.py @@ -62,13 +62,13 @@ class NamedExtensionManager(ExtensionManager): invoke_args, invoke_kwds, verify_requirements) - missing_entrypoints = set(names) - set([e.name for e in extensions]) - if missing_entrypoints: + self._missing_names = set(names) - set([e.name for e in extensions]) + if self._missing_names: if on_missing_entrypoints_callback: - on_missing_entrypoints_callback(missing_entrypoints) + on_missing_entrypoints_callback(self._missing_names) else: LOG.warning('Could not load %s' % - ', '.join(missing_entrypoints)) + ', '.join(self._missing_names)) self._init_plugins(extensions) @classmethod @@ -119,13 +119,15 @@ class NamedExtensionManager(ExtensionManager): on_load_failure_callback=on_load_failure_callback) self._names = names + self._missing_names = set() self._name_order = name_order def _init_plugins(self, extensions): super(NamedExtensionManager, self)._init_plugins(extensions) if self._name_order: - self.extensions = [self[n] for n in self._names] + self.extensions = [self[n] for n in self._names + if n not in self._missing_names] def _load_one_plugin(self, ep, invoke_on_load, invoke_args, invoke_kwds, verify_requirements): diff --git a/stevedore/tests/test_named.py b/stevedore/tests/test_named.py index bbac137..07535ae 100644 --- a/stevedore/tests/test_named.py +++ b/stevedore/tests/test_named.py @@ -56,3 +56,26 @@ class TestNamed(utils.TestCase): ) actual = em.names() self.assertEqual(actual, ['t2', 't1']) + + def test_load_fail_ignored_when_sorted(self): + em = named.NamedExtensionManager( + 'stevedore.test.extension', + names=['e1', 't2', 'e2', 't1'], + name_order=True, + invoke_on_load=True, + invoke_args=('a',), + invoke_kwds={'b': 'B'}, + ) + actual = em.names() + self.assertEqual(['t2', 't1'], actual) + + em = named.NamedExtensionManager( + 'stevedore.test.extension', + names=['e1', 't1'], + name_order=False, + invoke_on_load=True, + invoke_args=('a',), + invoke_kwds={'b': 'B'}, + ) + actual = em.names() + self.assertEqual(['t1'], actual) |