---
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
{% if metallb_peers | length > 0 %}
    peers:
{% for peer in metallb_peers %}
    - peer-address: {{ peer.peer_address }}
      peer-asn: {{ peer.peer_asn }}
      my-asn: {{ peer.my_asn }}
{% if peer.password is defined %}
      password: "{{ peer.password }}"
{% endif %}
{% if peer.source_address is defined %}
      source-address: {{ peer.source_address }}
{% endif %}
{% if peer.node_selectors is defined %}
      node-selectors:
        {{ peer.node_selectors | to_yaml(indent=2, width=1337) | indent(8) }}
{% endif %}
{% endfor %}
{% endif %}
    address-pools:
    - name: {{ metallb_pool_name }}
      protocol: {{ metallb_protocol }}
      addresses:
{% for ip_range in metallb_ip_range %}
      - {{ ip_range }}
{% endfor %}
{% if metallb_auto_assign == false %}
      auto-assign: false
{% endif %}
{% if metallb_avoid_buggy_ips == true %}
      avoid-buggy-ips: true
{% endif %}
{% if metallb_additional_address_pools is defined %}{% for pool in metallb_additional_address_pools %}
    - name: {{ pool }}
      protocol: {{ metallb_additional_address_pools[pool].protocol }}
      addresses:
{% for ip_range in metallb_additional_address_pools[pool].ip_range %}
      - {{ ip_range }}
{% endfor %}
{% if metallb_additional_address_pools[pool].auto_assign is defined %}
      auto-assign: {{ metallb_additional_address_pools[pool].auto_assign }}
{% endif %}
{% if metallb_additional_address_pools[pool].avoid_buggy_ips is defined %}
      avoid-buggy-ips: {{ metallb_additional_address_pools[pool].avoid_buggy_ips }}
{% endif %}
{% endfor %}
{% endif %}
