From 3162842ec5531b72a28fff592e1b63d33aa2cd59 Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Tue, 26 Oct 2021 12:11:24 +0100 Subject: [PATCH] refactor(map.jinja): standardise v5 structure [skip ci] * Automated using https://github.com/myii/ssf-formula/pull/382 --- CODEOWNERS | 3 +++ openssh/libmapstack.jinja | 30 ++++++++++++++++++++---------- openssh/libmatchers.jinja | 2 +- openssh/map.jinja | 11 ++++++++--- 4 files changed, 32 insertions(+), 14 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index 4ed2eb9..237b55e 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -20,8 +20,11 @@ /docs/CHANGELOG.rst @saltstack-formulas/ssf /docs/TOFS_pattern.rst @saltstack-formulas/ssf /*/_mapdata/ @saltstack-formulas/ssf +/*/libmapstack.jinja @saltstack-formulas/ssf +/*/libmatchers.jinja @saltstack-formulas/ssf /*/libsaltcli.jinja @saltstack-formulas/ssf /*/libtofs.jinja @saltstack-formulas/ssf +/*/map.jinja @saltstack-formulas/ssf /test/integration/**/_mapdata.rb @saltstack-formulas/ssf /test/integration/**/libraries/system.rb @saltstack-formulas/ssf /test/integration/**/inspec.yml @saltstack-formulas/ssf diff --git a/openssh/libmapstack.jinja b/openssh/libmapstack.jinja index 7f9ab38..7756f0f 100644 --- a/openssh/libmapstack.jinja +++ b/openssh/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/", @@ -95,8 +95,10 @@ {%- set stack = defaults | default({"values": {} }, boolean=True) %} {#- Build configuration file names based on matchers #} +{%- set config_get_strategy = salt["config.get"](tplroot ~ ":strategy", None) %} {%- set matchers = parse_matchers( matchers, + config_get_strategy=config_get_strategy, log_prefix=log_prefix ) | load_yaml %} @@ -194,6 +196,19 @@ {%- set yaml_names = [yaml_names] %} {%- endif %} +{#- Try to load a `.yaml.jinja` file for each `.yaml` file #} +{%- set all_yaml_names = [] %} +{%- for name in yaml_names %} +{%- set extension = name.rpartition(".")[2] %} +{%- if extension not in ["yaml", "jinja"] %} +{%- do all_yaml_names.extend([name ~ ".yaml", name ~ ".yaml.jinja"]) %} +{%- elif extension == "yaml" %} +{%- do all_yaml_names.extend([name, name ~ ".jinja"]) %} +{%- else %} +{%- do all_yaml_names.append(name) %} +{%- endif %} +{%- endfor %} + {#- `yaml_dirname` can be an empty string with literal path like `myconf.yaml` #} {%- set yaml_dir = [ param_dir, @@ -202,15 +217,10 @@ | select | join("/") %} -{%- for yaml_name in yaml_names %} -{#- Make sure to have a `.yaml` extension #} -{#- Use `.rpartition` to strip last `.yaml` in `dir.yaml/file.yaml` #} +{%- for yaml_name in all_yaml_names %} {%- set yaml_filename = [ yaml_dir.rstrip("/"), - yaml_name.rpartition(".yaml") - | reject("equalto", ".yaml") - | join - ~ ".yaml" + yaml_name ] | select | join("/") %} @@ -228,7 +238,7 @@ {%- do salt["log.debug"]( log_prefix ~ "loaded configuration values from " - ~ yaml_name + ~ yaml_filename ~ ":\n" ~ yaml_values | yaml(False) @@ -271,7 +281,7 @@ {%- do salt["log.debug"]( log_prefix ~ "merged configuration values from " - ~ yaml_name + ~ yaml_filename ~ ", merge: strategy='" ~ strategy ~ "', merge_lists='" diff --git a/openssh/libmatchers.jinja b/openssh/libmatchers.jinja index e9aaed3..1b1c705 100644 --- a/openssh/libmatchers.jinja +++ b/openssh/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/openssh/map.jinja b/openssh/map.jinja index 9fdba2b..cc25c18 100644 --- a/openssh/map.jinja +++ b/openssh/map.jinja @@ -1,9 +1,9 @@ -# -*- coding: utf-8 -*- -# vim: ft=jinja +{#- -*- coding: utf-8 -*- #} +{#- vim: ft=jinja #} {#- 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" %} @@ -38,6 +38,7 @@ {#- Load formula parameters values #} {%- set _formula_matchers = ["defaults.yaml"] + map_sources %} + {%- set _formula_settings = mapstack( matchers=_formula_matchers, dirs=[formula_param_dir], @@ -59,3 +60,7 @@ {%- do salt["log.debug"]("map.jinja: save parameters in variable 'mapdata'") %} {%- set mapdata = _formula_settings["values"] %} + +{#- 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 %}