diff options
author | Christian Heimes <cheimes@redhat.com> | 2018-04-05 08:35:15 +0200 |
---|---|---|
committer | Christian Heimes <cheimes@redhat.com> | 2018-04-10 07:58:52 +0200 |
commit | 395a68d20887d0ac010e480e68b225d6dfeff726 (patch) | |
tree | 53b84f4051adc0f1b6e2582b98b772d0f279e556 | |
parent | e279d891fe63043bfa6226c59525036670a464f6 (diff) | |
download | freeipa-395a68d20887d0ac010e480e68b225d6dfeff726.tar.gz freeipa-395a68d20887d0ac010e480e68b225d6dfeff726.tar.xz freeipa-395a68d20887d0ac010e480e68b225d6dfeff726.zip |
Defer import of ipaclient.csrgen
The modules ipaclient.csrgen and ipaclient.csrgen_ffi are expensive to load,
but rarely used. On demand loading speeds up ipa CLI by about 200ms.
Fixes: https://pagure.io/freeipa/issue/7484
Signed-off-by: Christian Heimes <cheimes@redhat.com>
Reviewed-By: Fraser Tweedale <ftweedal@redhat.com>
-rw-r--r-- | ipaclient/plugins/cert.py | 5 | ||||
-rw-r--r-- | ipaclient/plugins/csrgen.py | 12 |
2 files changed, 9 insertions, 8 deletions
diff --git a/ipaclient/plugins/cert.py b/ipaclient/plugins/cert.py index 50549cf59..edc132dfa 100644 --- a/ipaclient/plugins/cert.py +++ b/ipaclient/plugins/cert.py @@ -23,7 +23,6 @@ import base64 import six -from ipaclient import csrgen from ipaclient.frontend import MethodOverride from ipalib import errors from ipalib import x509 @@ -111,6 +110,10 @@ class cert_request(CertRetrieveOverride): password_file = options.pop('password_file', None) if csr is None: + # Deferred import, ipaclient.csrgen is expensive to load. + # see https://pagure.io/freeipa/issue/7484 + from ipaclient import csrgen + if database: adaptor = csrgen.NSSAdaptor(database, password_file) elif private_key: diff --git a/ipaclient/plugins/csrgen.py b/ipaclient/plugins/csrgen.py index 01c75f4bc..5aad63605 100644 --- a/ipaclient/plugins/csrgen.py +++ b/ipaclient/plugins/csrgen.py @@ -16,13 +16,6 @@ from ipalib.plugable import Registry from ipalib.text import _ from ipapython import dogtag -try: - import jinja2 # pylint: disable=unused-import -except ImportError: - raise errors.SkipPluginModule(reason=_("jinja2 is not installed.")) -else: - from ipaclient import csrgen - from ipaclient import csrgen_ffi if six.PY3: unicode = str @@ -79,6 +72,11 @@ class cert_get_requestdata(Local): ) def execute(self, *args, **options): + # Deferred import, ipaclient.csrgen is expensive to load. + # see https://pagure.io/freeipa/issue/7484 + from ipaclient import csrgen + from ipaclient import csrgen_ffi + if 'out' in options: util.check_writable_file(options['out']) |