Merge "Fix NamedExtensionManager fails when loading failing extension in order"

This commit is contained in:
Jenkins 2016-07-06 22:29:19 +00:00 committed by Gerrit Code Review
commit f68325fc48
2 changed files with 30 additions and 5 deletions

View File

@ -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):

View File

@ -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)