# Macro to convert camelCase dictionary keys to snake_case keys
{% macro convert_keys(mydict) -%}
  {% for key in mydict.keys() | list -%}
    {% 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:
{% if local_volume_provisioner_nodelabels | length > 0 %}
  nodeLabelsForPV: |
{% for nodelabel in local_volume_provisioner_nodelabels %}
    - {{ nodelabel }}
{% endfor %}
{% endif %}
{% if local_volume_provisioner_use_node_name_only %}
  useNodeNameOnly: "true"
{% endif %}
  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 %}
