diff options
author | Jan Cholasta <jcholast@redhat.com> | 2016-06-08 14:38:23 +0200 |
---|---|---|
committer | Jan Cholasta <jcholast@redhat.com> | 2016-06-15 14:03:51 +0200 |
commit | 4128c565ea716625b8510a476222690f0297ab8c (patch) | |
tree | 6c74c2a0d69499bcf89216eb83508d5ebec986e2 /ipalib/frontend.py | |
parent | bebdce89b6075f77beb36ce194b36ad4d7104ca3 (diff) | |
download | freeipa-4128c565ea716625b8510a476222690f0297ab8c.tar.gz freeipa-4128c565ea716625b8510a476222690f0297ab8c.tar.xz freeipa-4128c565ea716625b8510a476222690f0297ab8c.zip |
plugable: initialize plugins on demand
Use a new API namespace class which does not initialize plugins until they
are accessed.
https://fedorahosted.org/freeipa/ticket/4739
Reviewed-By: David Kupka <dkupka@redhat.com>
Diffstat (limited to 'ipalib/frontend.py')
-rw-r--r-- | ipalib/frontend.py | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/ipalib/frontend.py b/ipalib/frontend.py index ffcf71b5a..161d7c391 100644 --- a/ipalib/frontend.py +++ b/ipalib/frontend.py @@ -28,7 +28,7 @@ import six from ipapython.version import API_VERSION from ipapython.ipa_log_manager import root_logger from ipalib.base import NameSpace -from ipalib.plugable import Plugin +from ipalib.plugable import Plugin, APINameSpace from ipalib.parameters import create_param, Param, Str, Flag from ipalib.parameters import Password # pylint: disable=unused-import from ipalib.output import Output, Entry, ListOfEntries @@ -402,8 +402,6 @@ class Command(HasParam): allowed callback types. """ - finalize_early = False - takes_options = tuple() takes_args = tuple() # Create stubs for attributes that are set in _on_finalize() @@ -1199,8 +1197,6 @@ class Local(Command): class Object(HasParam): - finalize_early = False - # Create stubs for attributes that are set in _on_finalize() backend = Plugin.finalize_attr('backend') methods = Plugin.finalize_attr('methods') @@ -1261,7 +1257,7 @@ class Object(HasParam): if name not in self.api: return namespace = self.api[name] - assert type(namespace) is NameSpace + assert type(namespace) is APINameSpace for plugin in namespace(): # Equivalent to dict.itervalues() if plugin.obj_name == self.name: yield plugin @@ -1333,8 +1329,6 @@ class Attribute(Plugin): In practice the `Attribute` class is not used directly, but rather is only the base class for the `Method` class. Also see the `Object` class. """ - finalize_early = False - @property def obj_name(self): return self.name.partition('_')[0] |