# Copyright © 2018 Amdocs, Bell Canada, AT&T
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

#{{ if .Values.persistence.enabled }}
{{- $root := . -}}
{{ range $i, $e := until (int $root.Values.replicaCount) }}
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: {{ $root.Release.Name }}-{{ $root.Values.service.name }}-{{ $i }}
  namespace: {{ $root.Release.Namespace }}
  labels:
    type: {{ $root.Values.persistence.storageType }}
    app: {{ $root.Values.service.name }}
    chart: {{ $root.Chart.Name }}-{{ $root.Chart.Version | replace "+" "_" }}
    release: {{ $root.Release.Name }}
    heritage: {{ $root.Release.Service }}
spec:
  capacity:
    storage: {{ $root.Values.persistence.size }}
  accessModes:
    - {{ $root.Values.persistence.accessMode }}
  hostPath:
    path: {{ $root.Values.persistence.mountPath }}/{{ $root.Release.Name }}/{{ $root.Values.persistence.mountSubPath }}-{{ $i }}
  persistentVolumeReclaimPolicy: {{ $root.Values.persistence.volumeReclaimPolicy }}
{{ end }}
#{{ end }}
