From 130c3a2ec39a1c5bde2eac66013b60b583ef34d8 Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Tue, 30 Apr 2019 19:27:52 +0100 Subject: [PATCH] fix(`map.jinja`): use pillar/config `.get` according to `__cli` option * Fix 5dc0b86 in #95 - No option `merge=True` for `config.get` * Use `pillar.get` for `salt-call` (i.e. `salt-ssh`) - Differentiate `salt-ssh`/`salt-call` via. `root_dir` * Use `config.get` via. `defaults.merge` otherwise - Reintroduce based on 775a930 in #20 --- template/map.jinja | 48 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/template/map.jinja b/template/map.jinja index d3fe4ce0..2602cfbd 100644 --- a/template/map.jinja +++ b/template/map.jinja @@ -9,16 +9,44 @@ {%- import_yaml tplroot ~ "/osmap.yaml" as osmap %} {%- import_yaml tplroot ~ "/osfingermap.yaml" as osfingermap %} -{%- set defaults = salt['grains.filter_by'](default_settings, - default='template', - merge=salt['grains.filter_by'](osfamilymap, grain='os_family', - merge=salt['grains.filter_by'](osmap, grain='os', - merge=salt['grains.filter_by'](osfingermap, grain='osfinger', - merge=salt['config.get']('template:lookup', default={}) +{%- if salt['config.get']('__cli') == 'salt-call' and salt['config.get']('root_dir') != '/' %} + {%- set defaults = salt['grains.filter_by'](default_settings, + default='template', + merge=salt['grains.filter_by'](osfamilymap, grain='os_family', + merge=salt['grains.filter_by'](osmap, grain='os', + merge=salt['grains.filter_by'](osfingermap, grain='osfinger', + merge=salt['pillar.get']('template:lookup', default={}) + ) ) ) - ) -) %} + ) %} -{#- Merge the template config (e.g. from pillar) #} -{%- set template = salt['config.get']('template', default=defaults, merge=True) %} + {#- Merge the template pillar #} + {%- set template = salt['pillar.get']('template', default=defaults, merge=True) %} +{%- else %} + {#- Initialise the `defaults` #} + {%- set defaults = default_settings %} + + {#- Merge the osfamilymap #} + {%- set osfamily = salt['grains.filter_by'](osfamilymap, grain='os_family') or {} %} + {%- do salt['defaults.merge'](defaults['template'], osfamily) %} + + {#- Merge the osmap #} + {%- set os = salt['grains.filter_by'](osmap, grain='os') or {} %} + {%- do salt['defaults.merge'](defaults['template'], os) %} + + {#- Merge the osfingermap #} + {%- set osfinger = salt['grains.filter_by'](osfingermap, grain='osfinger') or {} %} + {%- do salt['defaults.merge'](defaults['template'], osfinger) %} + + {#- Merge the lookup #} + {%- set lookup = salt['config.get']('template:lookup', default={}, merge='recurse') or {} %} + {%- do salt['defaults.merge'](defaults['template'], lookup) %} + + {#- Merge the template config (e.g. from pillar) #} + {%- set config = salt['config.get']('template', default={}, merge='recurse') or {} %} + {%- do salt['defaults.merge'](defaults['template'], config) %} + + {#- Prepare the export #} + {%- set template = defaults['template'] %} +{%- endif %}