summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Rocco <drocco@thebrightlink.com>2013-08-24 14:02:15 -0400
committerDaniel Rocco <drocco@thebrightlink.com>2013-11-23 23:12:46 -0500
commita8150369a045f08f86db00e49a45bda4594fd2d5 (patch)
tree13deefb61eb02b6cd43fcbcf9a1b763d2b5c6677
parentacaf47782e25b1a4eb6056e72034335d03e00e3b (diff)
downloadstevedore-a8150369a045f08f86db00e49a45bda4594fd2d5.tar.gz
make Extension responsible for formatting its target name
-rw-r--r--stevedore/driver.py10
-rw-r--r--stevedore/extension.py10
2 files changed, 15 insertions, 5 deletions
diff --git a/stevedore/driver.py b/stevedore/driver.py
index ea2e122..54cdcae 100644
--- a/stevedore/driver.py
+++ b/stevedore/driver.py
@@ -34,12 +34,12 @@ class DriverManager(NamedExtensionManager):
raise RuntimeError('No %r driver found, looking for %r' %
(namespace, name))
if len(self.extensions) > 1:
+ discovered_drivers = ','.join(e.entry_point_target
+ for e in self.extensions)
+
raise RuntimeError('Multiple %r drivers found: %s' %
- (namespace,
- ','.join('%s:%s' % (e.entry_point.module_name,
- e.entry_point.attrs[0])
- for e in self.extensions))
- )
+ (namespace, discovered_drivers))
+
def __call__(self, func, *args, **kwds):
"""Invokes func() for the single loaded extension.
diff --git a/stevedore/extension.py b/stevedore/extension.py
index a29af8e..ec71279 100644
--- a/stevedore/extension.py
+++ b/stevedore/extension.py
@@ -34,6 +34,16 @@ class Extension(object):
self.plugin = plugin
self.obj = obj
+ @property
+ def entry_point_target(self):
+ """The module and attribute referenced by this extension's entry_point.
+
+ :return: A string representation of the target of the entry point in
+ 'dotted.module:object' format.
+ """
+ return '%s:%s' % (self.entry_point.module_name,
+ self.entry_point.attrs[0])
+
class ExtensionManager(object):
"""Base class for all of the other managers.