{{/*
# Copyright © 2020 highstreet technologies GmbH
#
# 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.
*/}}
{{ if .Values.config.sdnr.enabled -}}
apiVersion: batch/v1
kind: Job
metadata: {{- include "common.resourceMetadata" (dict "suffix" "sdnrdb-init-job" "dot" . ) | nindent 2 }}
spec:
  backoffLimit: 20
  template:
    metadata: {{ include "common.templateMetadata" . | indent 6}}
    spec:
      initContainers:
      - name: {{ include "common.name" . }}-readiness
        command:
        - /app/ready.py
        args:
        {{- if .Values.config.sdnr.mariadb.enabled }}
        - --app-name
        - {{ include "common.mariadbAppName" . }}
        {{- else }}
        - --container-name
        - {{.Values.elasticsearch.nameOverride}}-elasticsearch
        - --container-name
        - {{.Values.elasticsearch.nameOverride}}-nginx
        - --container-name
        - {{.Values.elasticsearch.nameOverride}}-master
        {{- end }}
        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" . }}-sdnrdb-init-job
        image: {{ include "repositoryGenerator.repository" . }}/{{ .Values.image }}
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
        command: ["/bin/bash"]
        args:
          - -c
          - |
            {{- if .Values.config.sdnr.mariadb.enabled }}
            "{{ .Values.config.binDir }}/createSdnrDb.sh";
            {{- end }}
            sleep 90; "{{ .Values.config.binDir }}/startODL.sh"
        env:
          - name: SDNC_AAF_ENABLED
            value: "false"
          - name: SDNC_HOME
            value: "{{.Values.config.sdncHome}}"
          - name: ETC_DIR
            value: "{{.Values.config.etcDir}}"
          - name: BIN_DIR
            value: "{{.Values.config.binDir}}"
          ## start sdnrdb parameter
          - name: SDNRINIT
            value: "true"
          {{- if .Values.config.sdnr.mariadb.enabled }}
          - name: SDNRDBTYPE
            value: MARIADB
          - name: MYSQL_HOST
            value: {{ include "common.mariadbService" . }}
          - name: MYSQL_ROOT_PASSWORD
            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "db-root-password" "key" "password") | indent 12 }}
          - name: SDNRDBURL
            value: "jdbc:mysql://{{ include "common.mariadbService" . }}:3306/{{ .Values.config.sdnr.mariadb.databaseName }}"
          - name: SDNRDBDATABASE
            value: "{{ .Values.config.sdnr.mariadb.databaseName }}"
          - name: SDNRDBUSERNAME
            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "sdnrdb-secret" "key" "login") | indent 12 }}
          - name: SDNRDBPASSWORD
            {{- include "common.secret.envFromSecretFast" (dict "global" . "uid" "sdnrdb-secret" "key" "password") | indent 12 }}
          {{- else }}
          - name: SDNRDBURL
            value: "http://{{ .Values.elasticsearch.service.name | default "sdnrdb"}}.{{.Release.Namespace}}:{{.Values.elasticsearch.service.port | default "9200"}}"
          - name: SDNRDBPARAMETER
            value: "-k"
          {{- end }}
        {{- if .Values.config.sdnr.mariadb.enabled }}
        volumeMounts:
          - mountPath: {{ .Values.config.binDir }}/createSdnrDb.sh
            name: bin
            subPath: createSdnrDb.sh
        {{- end }}
        resources: {{ include "common.resources" . | nindent 10 }}
      {{- if include "common.onServiceMesh" . }}
      - name: sdnrdb-service-mesh-wait-for-job-container
        image: {{ include "repositoryGenerator.image.quitQuit" . }}
        imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }}
        command:
          - /bin/sh
          - "-c"
        args:
          - |
            echo "waiting 30s for istio side cars to be up"; sleep 30s;
            /app/ready.py --service-mesh-check sdnc-sdnrdb-init-job -t 45;
        env:
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
      {{- end }}
      {{- if .Values.nodeSelector }}
      nodeSelector: {{ toYaml .Values.nodeSelector | nindent 10 }}
      {{- end -}}
      {{- if .Values.affinity }}
      affinity: {{ toYaml .Values.affinity | nindent 10 }}
      {{- end }}
      serviceAccountName: {{ include "common.fullname" (dict "suffix" "read" "dot" . )}}
      volumes:
      - name: localtime
        hostPath:
          path: /etc/localtime
      - name: docker-entrypoint-initdb-d
        emptyDir: {}
      - name: bin
        configMap:
          name: {{ include "common.fullname" . }}-bin
          defaultMode: 0755
      - name: properties
        configMap:
          name: {{ include "common.fullname" . }}-properties
          defaultMode: 0644
      restartPolicy: Never
      imagePullSecrets:
      - name: "{{ include "common.namespace" . }}-docker-registry-key"
{{ end -}}
