summaryrefslogtreecommitdiffstats
path: root/ipalib/frontend.py
diff options
context:
space:
mode:
authorJan Cholasta <jcholast@redhat.com>2016-06-08 14:38:23 +0200
committerJan Cholasta <jcholast@redhat.com>2016-06-15 14:03:51 +0200
commit4128c565ea716625b8510a476222690f0297ab8c (patch)
tree6c74c2a0d69499bcf89216eb83508d5ebec986e2 /ipalib/frontend.py
parentbebdce89b6075f77beb36ce194b36ad4d7104ca3 (diff)
downloadfreeipa-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.py10
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]