summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-07-06 22:29:19 +0000
committerGerrit Code Review <review@openstack.org>2016-07-06 22:29:19 +0000
commitf68325fc481a0cc2a9aa9e8b1701cdb092463b49 (patch)
tree331e6ac4a2566e7018d427414a1fb5d1ebfe5b39
parentda83cd831dc7ff12a45d40d1326b9d88eecaf623 (diff)
parent1218ab61a124ead05feea3b10077f06ea551aef6 (diff)
downloadstevedore-f68325fc481a0cc2a9aa9e8b1701cdb092463b49.tar.gz
Merge "Fix NamedExtensionManager fails when loading failing extension in order"1.16.0
-rw-r--r--stevedore/named.py12
-rw-r--r--stevedore/tests/test_named.py23
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)