{{- if and .Values.global.persistence.enabled (not .Values.persistence.existingClaim) -}}
#########
##  ============LICENSE_START====================================================
##  org.onap.aaf
##  ===========================================================================
##  Copyright (c) 2017 AT&T Intellectual Property. All rights reserved.
##  ===========================================================================
##  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.
##  ============LICENSE_END====================================================
##

kind: PersistentVolume
apiVersion: v1
metadata:
  name: {{ .Release.Name }}-aaf-config-pv
  namespace: {{ include "common.namespace" . }}
  labels:
    app: {{ .Chart.Name  }}-config
    chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}"
    release: "{{ .Release.Name }}"
    heritage: "{{ .Release.Service }}"
    name: {{ include "common.fullname" . }}
spec:
  capacity:
    storage: {{ .Values.persistence.config.size}}
  accessModes:
    - {{ .Values.persistence.config.accessMode }}
  persistentVolumeReclaimPolicy: {{ .Values.persistence.config.volumeReclaimPolicy }}
  hostPath:
     path: {{ .Values.persistence.config.mountPath }}
{{- if .Values.persistence.config.storageClass }}
{{- if (eq "-" .Values.persistence.config.storageClass) }}
  storageClassName: ""
{{- else }}
  storageClassName: "{{ .Values.persistence.config.storageClass }}"
{{- end }}
{{- end }}
{{- end -}}
