---
apiVersion: v1
kind: Template
metadata:
  name: {{ kaas_project }}-local-volumes
  annotations:
    descriptions: "{{ kaas_project }} local volumes"
objects:
{% for name, vol in kaas_project_local_volumes.items() %}
{%   set voltypes = kaas_storage_domains | json_query("[*].volumes." + vol.volume + ".type") %}
{%   set voltype = voltypes[0] | default('host') %}
{%   set mntpaths = kaas_storage_domains | json_query("[*].volumes." + vol.volume + ".mount") %}
{%   set mntpath = mntpaths[0] | default('') %}
{%   set oc_name = vol.name | default(name) | regex_replace('_','-') %}
{%   set cfgpath = vol.path | default("") %}
{%   set path = cfgpath if cfgpath[:1] == "/" else "/" + kaas_project + "/" + cfgpath %}
{%   if oc_name | regex_search("^" + kaas_project) %}
{%     set pvprefix = oc_name %}
{%   else %}
{%     set pvprefix = (kaas_project + "-" + oc_name) | regex_replace('_','-') %}
{%   endif %}
{%   for id in vol.nodes | default(hostvars[inventory_hostname]['ands_volume_' + vol.volume + '_server_ids']) %}
{%      set srvid = (id | string) %}
{%      set server_name = hostvars[inventory_hostname]['ands_host_' + srvid + '_public_hostname'] %}
{%      set openshift_name = hostvars[inventory_hostname]['ands_host_' + srvid + '_openshift_fqdn'] %}
{%      set pvname = pvprefix + '-' + server_name %}
  - apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: {{ pvname }}
      annotations:
        "volume.alpha.kubernetes.io/node-affinity": '{
            "requiredDuringSchedulingIgnoredDuringExecution": {
                "nodeSelectorTerms": [
                    { "matchExpressions": [ { "key": "kubernetes.io/hostname", "operator": "In", "values": ["{{ openshift_name }}"] } ]}
                ]
            }
        }'
    spec:
      storageClassName: {{ vol.sc | default('kaas-lst-' + pvprefix) }}
      persistentVolumeReclaimPolicy: Retain 
      local:
        path: "{{ mntpath }}{{ path }}"
        readOnly: {{ not (vol.write | default(false)) }}
      accessModes:
        - ReadWriteOnce
      capacity:
        storage: {{ vol.capacity | default(kaas_default_volume_capacity) }}
{%   endfor %}
{% endfor %}
