2
0

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
This commit is contained in:
Florian Ermisch 2017-02-24 13:34:31 +01:00 committed by root
parent d34f63fdf0
commit 5327e921fe

View File

@ -960,17 +960,22 @@ 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 %}
{#- 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]}}