Merge pull request #298 from 0xf10e/no_mapping_workaround
Hack to make rendering work on CentOS 6
This commit is contained in:
commit
31229c5a0d
@ -965,13 +965,15 @@ 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 `is mapping` on CentOS 6, see #193: #}
|
||||
{%- elif pillar[key] is iterable and 'dict' not in pillar[key].__class__.__name__ %}
|
||||
- {{ key }}:
|
||||
{%- for parameter in pillar[key] %}
|
||||
- {{ parameter }}
|
||||
{%- endfor -%}
|
||||
{%- elif pillar[key] is mapping and pillar[key] is not string %}
|
||||
- {{ key }}:
|
||||
{#- Workaround for missing `is mapping` on CentOS 6, see #193: #}
|
||||
{%- elif 'dict' in pillar[key].__class__.__name__ and pillar[key] is not string %}
|
||||
- {{ key }}:
|
||||
{%- for parameter in pillar[key] %}
|
||||
{{ parameter }}: {{pillar[key][parameter]}}
|
||||
{%- endfor %}
|
||||
|
@ -12,7 +12,8 @@ lxc.container_profile:
|
||||
{%- for prof in cfg_prof %}
|
||||
{{ prof }}:
|
||||
{%- for conf in cfg_prof[prof] %}
|
||||
{%- if cfg_prof[prof][conf] is mapping %}
|
||||
{#- Workaround for missing `is mapping` on CentOS 6, see #193 #}
|
||||
{%- if 'dict' in cfg_prof[prof][conf].__class__.__name__ %}
|
||||
{{ conf }}:
|
||||
{%- for opt in cfg_prof[prof][conf] %}
|
||||
{{ opt }}: {{ cfg_prof[prof][conf][opt] }}
|
||||
@ -29,7 +30,8 @@ lxc.network_profile:
|
||||
{%- for prof in cfg_net %}
|
||||
{{ prof }}:
|
||||
{%- for conf in cfg_net[prof] -%}
|
||||
{%- if cfg_net[prof][conf] is mapping %}
|
||||
{#- Workaround for missing `is mapping` on CentOS 6, see #193 #}
|
||||
{%- if 'dict' in cfg_net[prof][conf].__class__.__name__ %}
|
||||
{{ conf }}:
|
||||
{%- for opt in cfg_net[prof][conf] %}
|
||||
{{ opt }}: {{ cfg_net[prof][conf][opt] }}
|
||||
|
@ -694,12 +694,14 @@ 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 `is mapping` on CentOS 6, see #193: #}
|
||||
{%- elif pillar[key] is iterable and 'dict' not in pillar[key].__class__.__name__ %}
|
||||
- {{ key }}:
|
||||
{%- for parameter in pillar[key] %}
|
||||
- {{ parameter }}
|
||||
{%- endfor -%}
|
||||
{%- elif pillar[key] is mapping and pillar[key] is not string %}
|
||||
{#- Workaround for missing `is mapping` on CentOS 6, see #193: #}
|
||||
{%- elif 'dict' in pillar[key].__class__.__name__ and pillar[key] is not string %}
|
||||
- {{ key }}:
|
||||
{%- for parameter in pillar[key] %}
|
||||
{{ parameter }}: {{pillar[key][parameter]}}
|
||||
|
@ -2,21 +2,25 @@
|
||||
# vim: ft=jinja
|
||||
|
||||
{%- macro deep_merge(a, b) %}
|
||||
{#- This whole `'dict' in x.__class__.__name__` mess is a
|
||||
workaround for the missing mapping test in CentOS 6's
|
||||
ancient Jinja2, see #193 #}
|
||||
{%- for k,v in b.iteritems() %}
|
||||
{%- if v is string or v is number %}
|
||||
{%- do a.update({ k: v }) %}
|
||||
{%- elif v is not mapping %}
|
||||
{%- elif 'dict' not in v.__class__.__name__ %}
|
||||
{%- if a[k] is not defined %}
|
||||
{%- do a.update({ k: v }) %}
|
||||
{%- elif a[k] is iterable and a[k] is not mapping and a[k] is not string %}
|
||||
{%- elif a[k] is iterable and 'dict' not in a[k].__class__.__name__ and
|
||||
a[k] is not string %}
|
||||
{%- do a.update({ k: v|list + a[k]|list}) %}
|
||||
{%- else %}
|
||||
{%- do a.update({ k: v }) %}
|
||||
{%- endif %}
|
||||
{%- elif v is mapping %}
|
||||
{%- elif 'dict' in v.__class__.__name__ %}
|
||||
{%- if a[k] is not defined %}
|
||||
{%- do a.update({ k: v }) %}
|
||||
{%- elif a[k] is not mapping %}
|
||||
{%- elif 'dict' in a[k].__class__.__name__ %}
|
||||
{%- do a.update({ k: v }) %}
|
||||
{%- else %}
|
||||
{%- do deep_merge(a[k], v) %}
|
||||
|
Loading…
Reference in New Issue
Block a user