From 74fef844cc86344cf6f50c6c9c045b1c9ffd7529 Mon Sep 17 00:00:00 2001 From: Daniel Dehennin Date: Tue, 31 Aug 2021 11:41:52 +0200 Subject: [PATCH] fix(map): workaround salt bug with Jinja2 3.0 A change in Jinja2 3.0 cause troubles in rendering templates where salt special variables are available only on first import but not subsequent ones (see https://github.com/saltstack/salt/issues/60188) We could workaround that bug by explicitly import jinja libraries and load YAML files `with context`. * TEMPLATE/map.jinja: import `libmapstack.jinja` and `post-map.jinja` with context. * TEMPLATE/libmapstack.jinja: import `libmatchers.jinja` with context. Load YAML files with context. * TEMPLATE/libmatchers.jinja: import `libsaltcli.jinja` with context. --- TEMPLATE/libmapstack.jinja | 4 ++-- TEMPLATE/libmatchers.jinja | 2 +- TEMPLATE/map.jinja | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/TEMPLATE/libmapstack.jinja b/TEMPLATE/libmapstack.jinja index c671c0e0..ca164428 100644 --- a/TEMPLATE/libmapstack.jinja +++ b/TEMPLATE/libmapstack.jinja @@ -3,7 +3,7 @@ {#- Get the `tplroot` from `tpldir` #} {%- set tplroot = tpldir.split("/")[0] %} -{%- from tplroot ~ "/libmatchers.jinja" import parse_matchers, query_map %} +{%- from tplroot ~ "/libmatchers.jinja" import parse_matchers, query_map with context %} {%- set _default_config_dirs = [ "parameters/", @@ -231,7 +231,7 @@ ~ yaml_filename ) %} {%- load_yaml as yaml_values %} -{%- include yaml_filename ignore missing %} +{%- include yaml_filename ignore missing with context %} {%- endload %} {%- if yaml_values %} diff --git a/TEMPLATE/libmatchers.jinja b/TEMPLATE/libmatchers.jinja index e9aaed32..1b1c7052 100644 --- a/TEMPLATE/libmatchers.jinja +++ b/TEMPLATE/libmatchers.jinja @@ -3,7 +3,7 @@ {#- Get the `tplroot` from `tpldir` #} {%- set tplroot = tpldir.split("/")[0] %} -{%- from tplroot ~ "/libsaltcli.jinja" import cli %} +{%- from tplroot ~ "/libsaltcli.jinja" import cli with context %} {%- set query_map = { "C": "config.get", diff --git a/TEMPLATE/map.jinja b/TEMPLATE/map.jinja index 7340d53d..f6b93390 100644 --- a/TEMPLATE/map.jinja +++ b/TEMPLATE/map.jinja @@ -3,7 +3,7 @@ {#- Get the `tplroot` from `tpldir` #} {%- set tplroot = tpldir.split("/")[0] %} -{%- from tplroot ~ "/libmapstack.jinja" import mapstack %} +{%- from tplroot ~ "/libmapstack.jinja" import mapstack with context %} {#- Where to lookup parameters source files #} {%- set formula_param_dir = tplroot ~ "/parameters" %} @@ -63,4 +63,4 @@ {#- Per formula post-processing of `mapdata` if it exists #} {%- do salt["log.debug"]("map.jinja: post-processing of 'mapdata'") %} -{%- include tplroot ~ "/post-map.jinja" ignore missing %} +{%- include tplroot ~ "/post-map.jinja" ignore missing with context %}