[COMMON] Add a template for PV
[oom.git] / kubernetes / common / common / templates / _storage.tpl
1 {{/*
2 # Copyright © 2019 Amdocs, Bell Canada, Orange
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 #       http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 */}}
16
17 {{/*
18   Give the root folder for ONAP when using host pathes
19 */}}
20 {{- define "common.persistencePath" -}}
21 {{ .Values.global.persistence.mountPath | default .Values.persistence.mountPath }}/{{ include "common.release" . }}/{{ .Values.persistence.mountSubPath }}
22 {{- end -}}
23
24 {{/*
25   Expand the name of the storage class.
26   The value "common.fullname"-data is used by default,
27   unless either override mechanism is used.
28
29   - .Values.global.persistence.storageClass  : override default storageClass for all charts
30   - .Values.persistence.storageClassOverride : override global and default storage class on a per chart basis
31   - .Values.persistence.storageClass         : override default storage class on a per chart basis
32 */}}
33 {{- define "common.storageClass" -}}
34   {{- if .Values.persistence.storageClassOverride -}}
35     {{- if ne "-" .Values.persistence.storageClassOverride -}}
36       {{- printf "%s" .Values.persistence.storageClassOverride -}}
37     {{- else -}}
38       {{- $storage_class := "" -}}
39       {{- printf "%q" $storage_class -}}
40     {{- end -}}
41   {{- else -}}
42     {{- if or .Values.persistence.storageClass .Values.global.persistence.storageClass }}
43       {{- if ne "-" (default .Values.persistence.storageClass .Values.global.persistence.storageClass) -}}
44         {{- printf "%s" (default .Values.persistence.storageClass .Values.global.persistence.storageClass) -}}
45       {{- else -}}
46         {{- $storage_class := "" -}}
47         {{- printf "%q" $storage_class -}}
48       {{- end -}}
49     {{- else -}}
50       {{- printf "%s-data" (include "common.fullname" .) -}}
51     {{- end -}}
52   {{- end -}}
53 {{- end -}}
54
55 {{/*
56   Calculate if we need a PV. If a storageClass is provided, then we don't need.
57 */}}
58 {{- define "common.needPV" -}}
59 {{- if not (or (or .Values.persistence.storageClassOverride .Values.persistence.storageClass) .Values.global.persistence.storageClass) -}}
60   True
61 {{- end -}}
62 {{- end -}}
63
64 {{/*
65   Generate a PV
66 */}}
67 {{- define "common.PV" -}}
68 {{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}
69 {{- if (include "common.needPV" .) -}}
70 kind: PersistentVolume
71 apiVersion: v1
72 metadata:
73   name: {{ include "common.fullname" . }}-data
74   namespace: {{ include "common.namespace" . }}
75   labels: {{- include "common.labels" . | nindent 4 }}
76 spec:
77   capacity:
78     storage: {{ .Values.persistence.size }}
79   accessModes:
80     - {{ .Values.persistence.accessMode }}
81   storageClassName: "{{ include "common.fullname" . }}-data"
82   persistentVolumeReclaimPolicy: {{ .Values.persistence.volumeReclaimPolicy }}
83   hostPath:
84     path: {{ include "common.persistencePath" . }}
85 {{- end -}}
86 {{- end -}}
87 {{- end -}}
88
89 {{/*
90   Generate N PV for a statefulset
91 */}}
92 {{- define "common.replicaPV" -}}
93 {{- $global := . }}
94 {{- if and $global.Values.persistence.enabled (not $global.Values.persistence.existingClaim) }}
95 {{- if (include "common.needPV" .) -}}
96 {{- range $i := until (int $global.Values.replicaCount)}}
97 ---
98 kind: PersistentVolume
99 apiVersion: v1
100 metadata:
101   name: {{ include "common.fullname" $global }}-data-{{$i}}
102   namespace: {{ include "common.namespace" $global }}
103   labels: {{- include "common.labels" $global | nindent 4 }}
104 spec:
105   capacity:
106     storage: {{ $global.Values.persistence.size}}
107   accessModes:
108     - {{ $global.Values.persistence.accessMode }}
109   persistentVolumeReclaimPolicy: {{ $global.Values.persistence.volumeReclaimPolicy }}
110   storageClassName: "{{ include "common.fullname" $global }}-data"
111   hostPath:
112     path: {{ include "common.persistencePath" $global }}-{{$i}}
113 {{- end -}}
114 {{- end -}}
115 {{- end -}}
116 {{- end -}}
117
118 {{/*
119   Generate a PVC
120 */}}
121 {{- define "common.PVC" -}}
122 {{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) -}}
123 kind: PersistentVolumeClaim
124 apiVersion: v1
125 metadata: {{- include "common.resourceMetadata" . | nindent 2 }}
126 {{- if .Values.persistence.annotations }}
127   annotations:
128 {{ toYaml .Values.persistence.annotations | indent 4 }}
129 {{- end }}
130 spec:
131   accessModes:
132     - {{ .Values.persistence.accessMode }}
133   storageClassName: {{ include "common.storageClass" . }}
134   resources:
135     requests:
136       storage: {{ .Values.persistence.size }}
137 {{- end -}}
138 {{- end -}}