summaryrefslogtreecommitdiffstats
path: root/ipaclient/csrgen.py
diff options
context:
space:
mode:
authorChristian Heimes <cheimes@redhat.com>2017-03-02 16:09:53 +0100
committerDavid Kupka <dkupka@redhat.com>2017-03-08 15:59:26 +0100
commit80be18162921268be9c8981495c9e8a4de0c85cd (patch)
tree3bd5245a257df520167976a3a83be89c5ea6bb54 /ipaclient/csrgen.py
parentf8d7e37a091c1df4c989b80b8d19e12ab35533c8 (diff)
downloadfreeipa-80be18162921268be9c8981495c9e8a4de0c85cd.tar.gz
freeipa-80be18162921268be9c8981495c9e8a4de0c85cd.tar.xz
freeipa-80be18162921268be9c8981495c9e8a4de0c85cd.zip
Move csrgen templates into ipaclient package
csrgen broke packaging of ipaclient for PyPI. All csrgen related resources are now package data of ipaclient package. Package data is accessed with Jinja's PackageLoader() or through pkg_resources. https://pagure.io/freeipa/issue/6714 Signed-off-by: Christian Heimes <cheimes@redhat.com> Reviewed-By: Ben Lipton <blipton@redhat.com> Reviewed-By: Martin Basti <mbasti@redhat.com>
Diffstat (limited to 'ipaclient/csrgen.py')
-rw-r--r--ipaclient/csrgen.py21
1 files changed, 15 insertions, 6 deletions
diff --git a/ipaclient/csrgen.py b/ipaclient/csrgen.py
index 96100ae82..8c41e3985 100644
--- a/ipaclient/csrgen.py
+++ b/ipaclient/csrgen.py
@@ -8,6 +8,8 @@ import os.path
import pipes
import traceback
+import pkg_resources
+
import jinja2
import jinja2.ext
import jinja2.sandbox
@@ -15,7 +17,6 @@ import six
from ipalib import errors
from ipalib.text import _
-from ipaplatform.paths import paths
from ipapython.ipa_log_manager import log_mgr
if six.PY3:
@@ -72,10 +73,14 @@ class Formatter(object):
"""
base_template_name = None
- def __init__(self, csr_data_dir=paths.CSR_DATA_DIR):
+ def __init__(self, csr_data_dir=None):
+ if csr_data_dir is not None:
+ loader = jinja2.FileSystemLoader(
+ os.path.join(csr_data_dir, 'templates'))
+ else:
+ loader = jinja2.PackageLoader('ipaclient', 'csrgen/templates')
self.jinja2 = jinja2.sandbox.SandboxedEnvironment(
- loader=jinja2.FileSystemLoader(
- os.path.join(csr_data_dir, 'templates')),
+ loader=loader,
extensions=[jinja2.ext.ExprStmtExtension, IPAExtension],
keep_trailing_newline=True, undefined=IndexableUndefined)
@@ -277,9 +282,13 @@ class RuleProvider(object):
class FileRuleProvider(RuleProvider):
- def __init__(self, csr_data_dir=paths.CSR_DATA_DIR):
+ def __init__(self, csr_data_dir=None):
self.rules = {}
- self.csr_data_dir = csr_data_dir
+ if csr_data_dir is None:
+ self.csr_data_dir = pkg_resources.resource_filename(
+ 'ipaclient', 'csrgen')
+ else:
+ self.csr_data_dir = csr_data_dir
def _rule(self, rule_name, helper):
if (rule_name, helper) not in self.rules: