From ec5bfed24924c4d57d7f985b00d787b9541e6308 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ale=C5=A1?= Date: Fri, 26 Nov 2021 00:05:44 +0100 Subject: [PATCH] datamodel: templates: moved to 'templates' dir - dir path added to jinja2 loader --- .../datamodel/config_schema.py | 30 +++++++++++++------ .../config.lua.j2} | 3 ++ manager/setup.py | 2 +- 3 files changed, 25 insertions(+), 10 deletions(-) rename manager/knot_resolver_manager/datamodel/{lua_template.j2 => templates/config.lua.j2} (99%) diff --git a/manager/knot_resolver_manager/datamodel/config_schema.py b/manager/knot_resolver_manager/datamodel/config_schema.py index e17d6db63..db62badb3 100644 --- a/manager/knot_resolver_manager/datamodel/config_schema.py +++ b/manager/knot_resolver_manager/datamodel/config_schema.py @@ -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) diff --git a/manager/knot_resolver_manager/datamodel/lua_template.j2 b/manager/knot_resolver_manager/datamodel/templates/config.lua.j2 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 7234a3840..9245ed362 100644 --- a/manager/knot_resolver_manager/datamodel/lua_template.j2 +++ b/manager/knot_resolver_manager/datamodel/templates/config.lua.j2 @@ -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() }}) diff --git a/manager/setup.py b/manager/setup.py index f97aad6de..0dc38bc5c 100644 --- a/manager/setup.py +++ b/manager/setup.py @@ -12,7 +12,7 @@ packages = \ 'knot_resolver_manager.utils'] package_data = \ -{'': ['*']} +{'': ['*'], 'knot_resolver_manager.datamodel': ['templates/*']} install_requires = \ ['Jinja2>=2.11.3', -- 2.47.3