]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
datamodel: templates: moved to 'templates' dir
authorAleš <ales.mrazek@nic.cz>
Thu, 25 Nov 2021 23:05:44 +0000 (00:05 +0100)
committerAleš Mrázek <ales.mrazek@nic.cz>
Fri, 8 Apr 2022 14:17:53 +0000 (16:17 +0200)
- dir path added to jinja2 loader

manager/knot_resolver_manager/datamodel/config_schema.py
manager/knot_resolver_manager/datamodel/templates/config.lua.j2 [moved from manager/knot_resolver_manager/datamodel/lua_template.j2 with 99% similarity]
manager/setup.py

index e17d6db63fb75ea3d26db7a8de543bc3149c84de..db62badb3b8e54957b936ff31e70763a34587ea1 100644 (file)
@@ -1,7 +1,8 @@
-import pkgutil
+import os
+import sys
 from typing import Dict, Optional, Text, Union
 
-from jinja2 import Environment, Template
+from jinja2 import Environment, FileSystemLoader, Template
 from typing_extensions import Literal
 
 from knot_resolver_manager.datamodel.cache_schema import CacheSchema
@@ -21,15 +22,26 @@ from knot_resolver_manager.datamodel.view_schema import ViewSchema
 from knot_resolver_manager.utils import SchemaNode
 
 
+def _get_templates_dir() -> str:
+    module = sys.modules["knot_resolver_manager.datamodel"].__file__
+    if module:
+        return os.path.join(os.path.dirname(module), "templates")
+    raise OSError("package 'knot_resolver_manager.datamodel' cannot be located or loaded")
+
+
+_TEMPLATES_DIR = _get_templates_dir()
+
+
 def _import_lua_template() -> Template:
-    env = Environment(trim_blocks=True, lstrip_blocks=True)
-    template = pkgutil.get_data("knot_resolver_manager.datamodel", "lua_template.j2")
-    if template is None:
-        raise OSError("package cannot be located or loaded")
-    return env.from_string(template.decode("utf-8"))
+    ldr = FileSystemLoader(_TEMPLATES_DIR)
+    env = Environment(trim_blocks=True, lstrip_blocks=True, loader=ldr)
+    path = os.path.join(_TEMPLATES_DIR, "config.lua.j2")
+    with open(path, "r", encoding="UTF-8") as file:
+        template = file.read()
+    return env.from_string(template)
 
 
-_LUA_TEMPLATE = _import_lua_template()
+_MAIN_TEMPLATE = _import_lua_template()
 
 
 class KresConfig(SchemaNode):
@@ -75,4 +87,4 @@ class KresConfig(SchemaNode):
         return obj.dns64
 
     def render_lua(self) -> Text:
-        return _LUA_TEMPLATE.render(cfg=self)
+        return _MAIN_TEMPLATE.render(cfg=self)
similarity index 99%
rename from manager/knot_resolver_manager/datamodel/lua_template.j2
rename to manager/knot_resolver_manager/datamodel/templates/config.lua.j2
index 7234a3840cb6f94e2d8a0eeac54dcd7358ae0d60..9245ed3621d2f60a9aa4f076bb965c5a8810ba80 100644 (file)
@@ -151,6 +151,9 @@ hints.set('{{ name }} {{ addr }}')
 {% endfor %}
 {% endif %}
 
+-- POLICY section
+{{ path }}
+
 -- CACHE section
 cache.open({{ cfg.cache.size_max.bytes() }}, 'lmdb://{{ cfg.cache.storage }}')
 cache.min_ttl({{ cfg.cache.ttl_min.seconds() }})
index f97aad6deef3aec8fb79ac55f0e768e7462e8bad..0dc38bc5c395c120e2fab0931b05454e7032e025 100644 (file)
@@ -12,7 +12,7 @@ packages = \
  'knot_resolver_manager.utils']
 
 package_data = \
-{'': ['*']}
+{'': ['*'], 'knot_resolver_manager.datamodel': ['templates/*']}
 
 install_requires = \
 ['Jinja2>=2.11.3',