diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2008-09-21 21:50:56 +0000 |
---|---|---|
committer | Jason Gerard DeRose <jderose@redhat.com> | 2008-09-21 21:50:56 +0000 |
commit | f73d976bdacae37557f0b2ccfa6da01ea58c685d (patch) | |
tree | 78f98c60cc3f268b3354ae6fda69d296ff330ae1 /ipalib/plugable.py | |
parent | 5872221bd49dda962391ddfb88f22e86bf72afec (diff) | |
download | freeipa-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.py | 17 |
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) |