7e4f4a96fc
The iteritems() dictionary's method has been removed in Python3. Using this method in Jinja2 templates limits the execution to Python2 which will be deprecated in 2020[1]. This change replaces that method for the items() method as it's suggested in the official website[2]. [1] https://pythonclock.org/ [2] https://docs.ansible.com/ansible/latest/user_guide/playbooks_python_version.html#dict-iteritems
25 lines
817 B
Django/Jinja
25 lines
817 B
Django/Jinja
# Macro to convert camelCase dictionary keys to snake_case keys
|
|
{%- macro convert_keys(mydict) %}
|
|
{% for key in mydict.keys() -%}
|
|
{% set key_split = key.split('_') -%}
|
|
{% set new_key = key_split[0] + key_split[1:]|map('capitalize')|join -%}
|
|
{% set value = mydict.pop(key) -%}
|
|
{{ mydict.__setitem__(new_key, value) -}}
|
|
{{ convert_keys(value) if value is mapping else None -}}
|
|
{% endfor -%}
|
|
{% endmacro -%}
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: local-volume-provisioner
|
|
namespace: {{ local_volume_provisioner_namespace }}
|
|
data:
|
|
storageClassMap: |
|
|
{% for class_name, storage_class in local_volume_provisioner_storage_classes.items() %}
|
|
{{ class_name }}:
|
|
{{- convert_keys(storage_class) }}
|
|
{{ storage_class | to_nice_yaml(indent=2) | indent(6) }}
|
|
{% endfor %}
|
|
|