From c121533161550bb7351941b270a076c32b2f0c25 Mon Sep 17 00:00:00 2001 From: Dreaded_X Date: Tue, 11 Nov 2025 03:41:59 +0100 Subject: [PATCH] Pass config to node renderer --- tools/render | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/tools/render b/tools/render index 128abee..8794f06 100755 --- a/tools/render +++ b/tools/render @@ -35,12 +35,12 @@ TEMPLATES = Environment( ) -def render_templates(node: dict): +def render_templates(node: dict, args: dict): class Inner(json.JSONEncoder): def default(self, o): if isinstance(o, Template): try: - rendered = o.render(node) + rendered = o.render(args | node) except Exception as e: e.add_note(f"While rendering for: {node['hostname']}") raise e @@ -131,6 +131,11 @@ def walk_files(root: pathlib.Path): def main(): + with open(ROOT.joinpath("config.yaml")) as fyaml: + config = yaml.safe_load(fyaml) + + template_args = {"config": config, "root": ROOT} + nodes = [] for fullname in walk_files(NODES): filename = str(fullname.relative_to(NODES).parent) + "/" + fullname.stem @@ -145,7 +150,10 @@ def main(): # Quick and dirty way to resolve all the templates using a custom encoder nodes = list( map( - lambda node: json.loads(json.dumps(node, cls=render_templates(node))), nodes + lambda node: json.loads( + json.dumps(node, cls=render_templates(node, template_args)) + ), + nodes, ) ) @@ -155,16 +163,13 @@ def main(): dict(s) for s in set(frozenset(node["cluster"].items()) for node in nodes) ] - with open(ROOT.joinpath("config.yaml")) as fyaml: - config = yaml.safe_load(fyaml) + template_args |= {"nodes": nodes, "clusters": clusters} RENDERED.mkdir(exist_ok=True) for template_name in TEMPLATES.list_templates(): template = TEMPLATES.get_template(template_name) - rendered = template.render( - nodes=nodes, clusters=clusters, config=config, root=ROOT - ) + rendered = template.render(template_args) with open(RENDERED.joinpath(template_name), "w") as f: f.write(rendered)