{{/*
# Copyright © 2019 Orange
# Copyright © 2020 Samsung Electronics
#
# 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.
*/}}

{{ include "mariadbInit._updateSecrets" . -}}

apiVersion: batch/v1
kind: Job
metadata:
  name: {{ include "common.fullname" . }}-config-job
  namespace: {{ include "common.namespace" . }}
  labels:
    app: {{ include "common.name" . }}
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
    release: {{ include "common.release" . }}
    heritage: {{ .Release.Service }}
spec:
  backoffLimit: 20
  template:
    metadata:
      labels:
        app: {{ include "common.name" . }}
        release: {{ include "common.release" . }}
      name: {{ include "common.name" . }}
    spec:
      initContainers:
      - name: {{ include "common.name" . }}-readiness
        command:
        - /app/ready.py
        args:
        - --container-name
        - {{ default .Values.global.mariadbGalera.nameOverride .Values.mariadbGalera.containerName }}
        env:
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        image: {{ include "repositoryGenerator.image.readiness" . }}
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
      containers:
      - name: {{ include "common.name" . }}
        image: {{ include "repositoryGenerator.image.mariadb" . }}
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
        command:
          - /bin/sh
          - -c
          - |
            {{- if include "common.onServiceMesh" . }}
            echo "waiting 15s for istio side cars to be up"; sleep 15s;{{- end }}
            /db_init/db_init.sh {{ if or .Values.dbScriptConfigMap .Values.dbScript }} &&
            /db_config/db_cmd.sh{{ end }}
        env:
        - name: DB_HOST
          value: {{ include "common.mariadbService" . }}
        - name: DB_PORT
          value: {{ include "common.mariadbPort" . | quote }}
        - name: MYSQL_ROOT_PASSWORD
          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "root-password" "key" (default "password" .Values.global.mariadbGalera.userRootSecretKey)) | indent 10 }}
        - name: {{ printf "MYSQL_USER_%s" .Values.config.mysqlDatabase | upper }}
          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" .Values.config.mysqlDatabase "key" "login") | indent 10 }}
        - name: {{ printf "MYSQL_PASSWORD_%s" .Values.config.mysqlDatabase | upper }}
          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" .Values.config.mysqlDatabase "key" "password") | indent 10 }}
{{- $root := . }}
{{ range $db, $_values := .Values.config.mysqlAdditionalDatabases }}
        - name: {{ printf "MYSQL_USER_%s" $db | upper }}
          {{- include "common.secret.envFromSecretFast" (dict "global" $root "uid" $db "key" "login") | indent 10 }}
        - name: {{ printf "MYSQL_PASSWORD_%s" $db | upper }}
          {{- include "common.secret.envFromSecretFast" (dict "global" $root "uid" $db "key" "password") | indent 10 }}
{{ end }}
        volumeMounts:
        - mountPath: /etc/localtime
          name: localtime
          readOnly: true
        - name: mariadb-init
          mountPath: /db_init/
{{- if or .Values.dbScriptConfigMap .Values.dbScript }}
        - name: mariadb-conf
          mountPath: /db_config/
{{- end }}
        resources:
{{ include "common.resources" . | indent 12 }}
      {{ include "common.waitForJobContainer" . | indent 6 | trim }}
      {{- if .Values.nodeSelector }}
      nodeSelector:
{{ toYaml .Values.nodeSelector | indent 10 }}
      {{- end -}}
      {{- if .Values.affinity }}
      affinity:
{{ toYaml .Values.affinity | indent 10 }}
      {{- end }}
      volumes:
      - name: localtime
        hostPath:
          path: /etc/localtime
{{- if  or .Values.dbScriptConfigMap .Values.dbScript }}
      - name: mariadb-conf
        configMap:
{{-   if  .Values.dbScriptConfigMap }}
          name: {{ tpl .Values.dbScriptConfigMap . }}
{{-   else -}}
          name: {{ include "common.fullname" . }}-dbscript
{{-   end }}
          defaultMode: 0755
{{- end }}
      - name: mariadb-init
        configMap:
          name: {{ include "mariadbInit.configMap" . }}
          defaultMode: 0755
      restartPolicy: Never
      imagePullSecrets:
      - name: "{{ include "common.namespace" . }}-docker-registry-key"
