From aa435b2e036a668d87579495cae1e31524a97f31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicki=20K=C5=99=C3=AD=C5=BEek?= Date: Wed, 1 Apr 2026 17:10:08 +0200 Subject: [PATCH] Add a directory-specific nameserver data to templates If a template is being rendered into a directory that represents a nameserver (e.g. "ns1"), include a nameserver-specific information in the data - variable called "ns" which has information about the nameserver this file belongs to. Ensure the "ns" variable is only exposed to the template when rendered, without affecting the environment variables (always work with a copy of the env_vars). --- bin/tests/system/isctest/template.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/bin/tests/system/isctest/template.py b/bin/tests/system/isctest/template.py index d25e2926d0..f81b423f10 100644 --- a/bin/tests/system/isctest/template.py +++ b/bin/tests/system/isctest/template.py @@ -13,6 +13,7 @@ from dataclasses import dataclass from pathlib import Path +from re import compile as Re from typing import Any import re @@ -22,6 +23,8 @@ import jinja2 from .log import debug from .vars import ALL +NS_DIR_RE = Re(r"^(a?ns([0-9]+))/") + class TemplateEngine: """ @@ -63,10 +66,16 @@ class TemplateEngine: raise RuntimeError('No jinja2 template found for "{output}"') if data is None: - data = self.env_vars + data = {**self.env_vars} else: data = {**self.env_vars, **data} + # directory-specific "ns" var + assert "ns" not in data, '"ns" variable is reserved for nameserver data' + match = NS_DIR_RE.search(output) + if match: + data["ns"] = Nameserver(match.group(1)) + debug("rendering template `%s` to file `%s`", template, output) stream = self.j2env.get_template(template).stream(data) stream.dump(output, encoding="utf-8")