From 5327e921fea70810001b30c582f7f851849da03c Mon Sep 17 00:00:00 2001 From: Florian Ermisch Date: Fri, 24 Feb 2017 13:34:31 +0100 Subject: [PATCH] Hack to make rendering work on CentOS 6 !! Not tested with an actual !! !! configured `ext_pillar` yet !! - jinja on RHEL/CentOS 6 has no 'mapping' test (see salt-formula issue #193) - {% do ... %} allows no assignment, only function calls - of course, `type(foo) is dict` doesn't work because it's no jinja test - maybe `.isinstance()` would be nicer/more reliable --- salt/files/master.d/f_defaults.conf | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/salt/files/master.d/f_defaults.conf b/salt/files/master.d/f_defaults.conf index 39c0ad3..fac82fe 100644 --- a/salt/files/master.d/f_defaults.conf +++ b/salt/files/master.d/f_defaults.conf @@ -960,18 +960,23 @@ pillar_roots: {% if 'ext_pillar' in cfg_master %} {%- do default_keys.append('ext_pillar') %} +{#- workaround for missing mapping test in CentOS 6, part A #} +{%- set is_mapping = {} %} ext_pillar: {%- for pillar in cfg_master['ext_pillar'] -%} {%- for key in pillar -%} {%- if pillar[key] is string %} - {{ key }}: {{ pillar[key] }} - {%- elif pillar[key] is iterable and pillar[key] is not mapping %} + {#- workaround for missing mapping test in CentOS 6, part B #} + {%- do is_mapping.update({key: type(pillar[key]) == type({})}) %} + {%- elif pillar[key] is iterable and not is_mapping[key] %} - {{ key }}: {%- for parameter in pillar[key] %} - {{ parameter }} {%- endfor -%} - {%- elif pillar[key] is mapping and pillar[key] is not string %} - - {{ key }}: + {#- workaround for missing mapping test in CentOS 6, part C #} + {%- elif is_mapping[key] and pillar[key] is not string %} + - {{ key }}: {%- for parameter in pillar[key] %} {{ parameter }}: {{pillar[key][parameter]}} {%- endfor %}