extension: expose _find_entry_points as list_entry_points
Having the ability to list the entry points without loading them can be quite useful. Expose the internal method externally to help with that. Change-Id: Id675f335957a95fcfce61934dfbfbb2c64af761a
This commit is contained in:
parent
04f5e154e5
commit
eb04fc4a3e
|
@ -156,16 +156,22 @@ class ExtensionManager(object):
|
|||
|
||||
ENTRY_POINT_CACHE = {}
|
||||
|
||||
def _find_entry_points(self, namespace):
|
||||
if namespace not in self.ENTRY_POINT_CACHE:
|
||||
eps = list(pkg_resources.iter_entry_points(namespace))
|
||||
self.ENTRY_POINT_CACHE[namespace] = eps
|
||||
return self.ENTRY_POINT_CACHE[namespace]
|
||||
def list_entry_points(self):
|
||||
"""Return the list of entry points for this namespace.
|
||||
|
||||
The entry points are not actually loaded, their list is just read and
|
||||
returned.
|
||||
|
||||
"""
|
||||
if self.namespace not in self.ENTRY_POINT_CACHE:
|
||||
eps = list(pkg_resources.iter_entry_points(self.namespace))
|
||||
self.ENTRY_POINT_CACHE[self.namespace] = eps
|
||||
return self.ENTRY_POINT_CACHE[self.namespace]
|
||||
|
||||
def _load_plugins(self, invoke_on_load, invoke_args, invoke_kwds,
|
||||
verify_requirements):
|
||||
extensions = []
|
||||
for ep in self._find_entry_points(self.namespace):
|
||||
for ep in self.list_entry_points():
|
||||
LOG.debug('found extension %r', ep)
|
||||
try:
|
||||
ext = self._load_one_plugin(ep,
|
||||
|
|
|
@ -13,6 +13,8 @@
|
|||
"""Tests for stevedore.extension
|
||||
"""
|
||||
|
||||
import operator
|
||||
|
||||
import mock
|
||||
|
||||
from stevedore import exception
|
||||
|
@ -49,6 +51,13 @@ class TestCallback(utils.TestCase):
|
|||
e = em['t1']
|
||||
self.assertEqual(e.name, 't1')
|
||||
|
||||
def test_list_entry_points(self):
|
||||
em = extension.ExtensionManager('stevedore.test.extension')
|
||||
n = em.list_entry_points()
|
||||
self.assertEqual(set(['e1', 'e2', 't1', 't2']),
|
||||
set(map(operator.attrgetter("name"), n)))
|
||||
self.assertEqual(4, len(n))
|
||||
|
||||
def test_contains_by_name(self):
|
||||
em = extension.ExtensionManager('stevedore.test.extension')
|
||||
self.assertEqual('t1' in em, True)
|
||||
|
|
Loading…
Reference in New Issue