add hook manager

This commit is contained in:
Doug Hellmann 2012-06-19 16:04:28 -04:00
parent 6af087440b
commit b3293b9d92
3 changed files with 30 additions and 1 deletions

16
stevedore/hook.py Normal file
View File

@ -0,0 +1,16 @@
from .named import NamedExtensionManager
class HookManager(NamedExtensionManager):
"""Coordinate execution of extensions using a shared name.
"""
def __init__(self, namespace, name,
invoke_on_load=False, invoke_args=(), invoke_kwds={}):
super(HookManager, self).__init__(
namespace,
[name],
invoke_on_load=invoke_on_load,
invoke_args=invoke_args,
invoke_kwds=invoke_kwds,
)

View File

@ -8,7 +8,7 @@ class NamedExtensionManager(EnabledExtensionManager):
configuration file, for example.
"""
def __init__(self, namespace, names=[],
def __init__(self, namespace, names,
invoke_on_load=False, invoke_args=(), invoke_kwds={}):
def check(ep):
return ep.name in names

View File

@ -0,0 +1,13 @@
from stevedore import hook
def test_hook():
em = hook.HookManager(
'stevedore.test.extension',
't1',
invoke_on_load=True,
invoke_args=('a',),
invoke_kwds={'b': 'B'},
)
assert len(em.extensions) == 1
assert em.names() == ['t1']