add hook manager
This commit is contained in:
parent
6af087440b
commit
b3293b9d92
16
stevedore/hook.py
Normal file
16
stevedore/hook.py
Normal 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,
|
||||
)
|
@ -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
|
||||
|
13
stevedore/tests/test_hook.py
Normal file
13
stevedore/tests/test_hook.py
Normal 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']
|
Loading…
x
Reference in New Issue
Block a user