Merge "[SO] update the so-etsi-nfvo-ns-lcm version"
[oom.git] / kubernetes / so / components / so-mariadb / templates / job.yaml
1 {{/*
2 # Copyright © 2017 Amdocs, Bell Canada
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 {{- if .Values.global.migration.enabled }}
17 apiVersion: batch/v1
18 kind: Job
19 metadata:
20   name: {{ include "common.fullname" . }}-backup
21   namespace: {{ include "common.namespace" . }}
22   labels:
23     app: {{ include "common.name" . }}
24     chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
25     release: {{ include "common.release" . }}
26     heritage: {{ .Release.Service }}
27   annotations:
28     "helm.sh/hook": pre-upgrade,pre-install
29     "helm.sh/hook-weight": "1"
30     "helm.sh/hook-delete-policy": before-hook-creation
31 spec:
32   backoffLimit: 20
33   template:
34     metadata:
35       labels:
36         app: {{ include "common.name" . }}
37         release: {{ include "common.release" . }}
38       name: {{ include "common.name" . }}
39     spec:
40       containers:
41       - name: {{ include "common.fullname" . }}
42         image: "{{ include "common.repository" . }}/{{ .Values.image }}"
43         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
44         env:
45         - name: DB_HOST
46           value: {{ .Values.global.migration.dbHost }}
47         - name: DB_USER
48           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-backup-creds" "key" "login") | indent 10 }}
49         - name: DB_PORT
50           value: "{{ .Values.global.migration.dbPort }}"
51         - name: DB_PASS
52           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-backup-creds" "key" "password") | indent 10 }}
53         command:
54         - /bin/bash
55         - -c
56         - mysqldump -vv --user=${DB_USER} --password=${DB_PASS} --host=${DB_HOST} --port=${DB_PORT} --databases --single-transaction --quick --lock-tables=false catalogdb requestdb nfvo > /var/data/mariadb/backup-`date +%s`.sql
57         volumeMounts:
58         - mountPath: /etc/localtime
59           name: localtime
60           readOnly: true
61         - name: backup-storage
62           mountPath: /var/data/mariadb
63       volumes:
64       - name: localtime
65         hostPath:
66           path: /etc/localtime
67       - name: backup-storage
68         persistentVolumeClaim:
69           claimName: {{ include "common.fullname" . }}-migration
70       imagePullSecrets:
71         - name: "{{ include "common.namespace" . }}-docker-registry-key"
72       restartPolicy: Never
73 ---
74 {{- end }}
75 apiVersion: batch/v1
76 kind: Job
77 metadata:
78   name: {{ include "common.fullname" . }}-config-job
79   namespace: {{ include "common.namespace" . }}
80   labels:
81     app: {{ include "common.name" . }}
82     chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
83     release: {{ include "common.release" . }}
84     heritage: {{ .Release.Service }}
85   annotations:
86     "helm.sh/hook": post-upgrade,post-rollback,post-install
87     "helm.sh/hook-weight": "0"
88     "helm.sh/hook-delete-policy": before-hook-creation
89 spec:
90   backoffLimit: 20
91   template:
92     metadata:
93       labels:
94         app: {{ include "common.name" . }}-job
95         release: {{ include "common.release" . }}
96       name: {{ include "common.name" . }}
97     spec:
98       initContainers:
99       - name: {{ include "common.name" . }}-readiness
100         command:
101         - /app/ready.py
102         args:
103         - --container-name
104         - {{ .Values.global.mariadbGalera.nameOverride }}
105         env:
106         - name: NAMESPACE
107           valueFrom:
108             fieldRef:
109               apiVersion: v1
110               fieldPath: metadata.namespace
111         image: "{{ include "common.repository" . }}/{{ .Values.global.readinessImage }}"
112         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
113       containers:
114       - name: {{ include "common.name" . }}
115         image: "{{ include "common.repository" . }}/{{ .Values.image }}"
116         imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
117         command:
118         - /bin/bash
119         - -c
120         - >
121           mysql() { /usr/bin/mysql  -h ${DB_HOST} -P ${DB_PORT} "$@"; };
122           export -f mysql;
123           mysql --user=root --password=${MYSQL_ROOT_PASSWORD} requestdb -e exit > /dev/null 2>&1 {{ if not .Values.global.migration.enabled }} && echo "Database already initialized!!!" && exit 0 {{ end }};
124           for f in /docker-entrypoint-initdb.d/*; do case "$f" in  *.sh) echo "$0: running $f"; . "$f" ;;  *.sql) echo "$0: running $f"; "${mysql[@]}" < "$f"; echo ;; *.sql.gz) echo "$0: running $f"; gunzip -c "$f" | "${mysql[@]}"; echo ;;  *) echo "$0: ignoring $f" ;;  esac; echo; done;
125           {{- if .Values.global.migration.enabled }}
126           mysql -vv --user=root --password=${MYSQL_ROOT_PASSWORD} < `ls -tr /var/data/mariadb/* | tail -1`;
127           {{- end }}
128         env:
129         - name: DB_HOST
130           value: {{ include "common.mariadbService" . }}
131         - name: DB_PORT
132           value: {{ include "common.mariadbPort" . | quote }}
133         - name: MYSQL_ROOT_PASSWORD
134           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-root-pass" "key" "password") | indent 10 }}
135         - name: DB_USER
136           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-user-creds" "key" "login") | indent 10 }}
137         - name: DB_PASSWORD
138           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-user-creds" "key" "password") | indent 10 }}
139         - name: DB_ADMIN
140           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-admin-creds" "key" "login") | indent 10 }}
141         - name: DB_ADMIN_PASSWORD
142           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-admin-creds" "key" "password") | indent 10 }}
143         - name: CAMUNDA_DB_USER
144           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "camunda-db-creds" "key" "login") | indent 10 }}
145         - name: CAMUNDA_DB_PASSWORD
146           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "camunda-db-creds" "key" "password") | indent 10 }}
147         - name: REQUEST_DB_USER
148           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "request-db-creds" "key" "login") | indent 10 }}
149         - name: REQUEST_DB_PASSWORD
150           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "request-db-creds" "key" "password") | indent 10 }}
151         - name: CATALOG_DB_USER
152           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "catalog-db-creds" "key" "login") | indent 10 }}
153         - name: CATALOG_DB_PASSWORD
154           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "catalog-db-creds" "key" "password") | indent 10 }}
155         - name: NFVO_DB_USER
156           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "nfvo-db-creds" "key" "login") | indent 10 }}
157         - name: NFVO_DB_PASSWORD
158           {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "nfvo-db-creds" "key" "password") | indent 10 }}
159         volumeMounts:
160         - mountPath: /etc/localtime
161           name: localtime
162           readOnly: true
163         - name: docker-entrypoint-initdb-d-sh
164           mountPath: "/docker-entrypoint-initdb.d"
165         - name: docker-entrypoint-initdb-d-sql
166           mountPath: "/docker-entrypoint-initdb.d/db-sql-scripts"
167         {{- if .Values.global.migration.enabled }}
168         - name: backup-storage
169           mountPath: /var/data/mariadb
170         {{- end }}
171         resources:
172 {{ include "common.resources" . | indent 12 }}
173       {{- if .Values.nodeSelector }}
174       nodeSelector:
175 {{ toYaml .Values.nodeSelector | indent 10 }}
176       {{- end -}}
177       {{- if .Values.affinity }}
178       affinity:
179 {{ toYaml .Values.affinity | indent 10 }}
180       {{- end }}
181       volumes:
182       - name: localtime
183         hostPath:
184           path: /etc/localtime
185       - name: docker-entrypoint-initdb-d-sh
186         configMap:
187           name: {{ include "common.fullname" . }}-mariadb-sh
188       - name: docker-entrypoint-initdb-d-sql
189         configMap:
190           name: {{ include "common.fullname" . }}-mariadb-sql
191       {{- if .Values.global.migration.enabled }}
192       - name: backup-storage
193         persistentVolumeClaim:
194           claimName: {{ include "common.fullname" . }}-migration
195       {{- end }}
196       restartPolicy: Never
197       imagePullSecrets:
198       - name: "{{ include "common.namespace" . }}-docker-registry-key"