{{/*
# Copyright © 2018 Amdocs, Bell Canada
# Modifications Copyright © 2020 AT&T Intellectual Property
# Modifications Copyright (C) 2021 Nordix Foundation.
#
# 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.
*/}}

apiVersion: batch/v1
kind: Job
metadata:
  name: {{ include "common.release" . }}-policy-galera-config
  namespace: {{ include "common.namespace" . }}
  labels:
    app: {{ include "common.name" . }}-job
    release: {{ include "common.release" . }}
spec:
  template:
    metadata:
      labels:
        app: {{ include "common.name" . }}-job
        release: {{ include "common.release" . }}
    spec:
      imagePullSecrets:
      - name: "{{ include "common.namespace" . }}-docker-registry-key"
      initContainers:
#This container checks that all galera instances are up before initializing it.
      - name: {{ include "common.name" . }}-readiness
        image: {{ include "repositoryGenerator.image.readiness" . }}
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
        command:
        - /app/ready.py
        - --container-name
        - {{ index .Values "mariadb-galera" "service" "name" }}
        env:
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
      - name: {{ include "common.release" . }}-policy-galera-config
        image: {{ include "repositoryGenerator.dockerHubRepository" . }}/{{ .Values.mariadb.image }}
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
        volumeMounts:
        - mountPath: /dbcmd-config/db.sh
          name: {{ include "common.fullname" . }}-config
          subPath: db.sh
        command:
        - /bin/sh
        args:
        - -x
        - /dbcmd-config/db.sh
        env:
        - name: MYSQL_ROOT_PASSWORD
          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-root-password" "key" "password") | indent 10 }}
        - name: MYSQL_HOST
          value: "{{ index .Values "mariadb-galera" "service" "name" }}"
        - name: MYSQL_USER
          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "login") | indent 10 }}
        - name: MYSQL_PORT
          value: "{{ index .Values "mariadb-galera" "service" "internalPort" }}"
        resources:
{{ include "common.resources" . }}
      containers:
      - name: {{ include "common.release" . }}-policy-galera-db-migrator
        image: {{ .Values.repository }}/{{ .Values.dbmigrator.image }}
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
        volumeMounts:
        - mountPath: /dbcmd-config/db_migrator_policy_init.sh
          name: {{ include "common.fullname" . }}-config
          subPath: db_migrator_policy_init.sh
        command:
        - /bin/sh
        args:
        - -x
        - /dbcmd-config/db_migrator_policy_init.sh
        env:
        - name: SQL_HOST
          value: "{{ index .Values "mariadb-galera" "service" "name" }}"
        - name: SQL_USER
          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "login") | indent 10 }}
        - name: SQL_PASSWORD
          {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-secret" "key" "password") | indent 10 }}
        - name: SQL_DB
          value: {{ .Values.dbmigrator.schema }}
        - name: POLICY_HOME
          value: {{ .Values.dbmigrator.policy_home }}
        resources:
{{ include "common.resources" . }}
      restartPolicy: Never
      serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
      volumes:
        - name: {{ include "common.fullname" . }}-config
          configMap:
            name: {{ include "common.fullname" . }}-db-configmap
            items:
              - key: db.sh
                path: db.sh
              - key: db_migrator_policy_init.sh
                path: db_migrator_policy_init.sh
