summaryrefslogtreecommitdiffstats
path: root/ipalib/plugable.py
diff options
context:
space:
mode:
authorJason Gerard DeRose <jderose@redhat.com>2008-09-21 21:50:56 +0000
committerJason Gerard DeRose <jderose@redhat.com>2008-09-21 21:50:56 +0000
commitf73d976bdacae37557f0b2ccfa6da01ea58c685d (patch)
tree78f98c60cc3f268b3354ae6fda69d296ff330ae1 /ipalib/plugable.py
parent5872221bd49dda962391ddfb88f22e86bf72afec (diff)
downloadfreeipa-f73d976bdacae37557f0b2ccfa6da01ea58c685d.tar.gz
freeipa-f73d976bdacae37557f0b2ccfa6da01ea58c685d.tar.xz
freeipa-f73d976bdacae37557f0b2ccfa6da01ea58c685d.zip
307: Split Plugin.finalize() into two steps 1) Plugin.set_api() and 2) Plugin.finalize(); updated unit tests
Diffstat (limited to 'ipalib/plugable.py')
-rw-r--r--ipalib/plugable.py17
1 files changed, 6 insertions, 11 deletions
diff --git a/ipalib/plugable.py b/ipalib/plugable.py
index 19eae5043..725833cd2 100644
--- a/ipalib/plugable.py
+++ b/ipalib/plugable.py
@@ -340,17 +340,10 @@ class Plugin(ReadOnly):
return False
return True
- def finalize(self, api):
+ def finalize(self):
"""
- After all the plugins are instantiated, `API` calls this method,
- passing itself as the only argument. This is where plugins should
- check that other plugins they depend upon have actually been loaded.
-
- :param api: An `API` instance.
"""
- assert self.__api is None, 'finalize() can only be called once'
- assert api is not None, 'finalize() argument cannot be None'
- self.__api = api
+ lock(self)
def set_api(self, api):
"""
@@ -730,7 +723,9 @@ class API(DictProxy):
object.__setattr__(self, name, namespace)
for plugin in instances.itervalues():
- plugin.finalize(self)
- lock(plugin)
+ plugin.set_api(self)
assert plugin.api is self
+
+ for plugin in instances.itervalues():
+ plugin.finalize()
object.__setattr__(self, '_API__finalized', True)