{{- if (or (eq .Values.mode "restore") (eq .Values.mode "scheduled-restore")) }}
apiVersion: batch/v1
kind: Job
metadata:
  name: {{ .Values.clusterName }}-restore-{{ .Values.name }}
  namespace: {{ .Release.Namespace }}
  labels:
    app.kubernetes.io/name: {{ template "chart.name" . }}
    app.kubernetes.io/managed-by: {{ .Release.Service }}
    app.kubernetes.io/instance: {{ .Release.Name }}
    app.kubernetes.io/component: {{ .Values.mode }}
    helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+"  "_" }}
spec:
  template:
    metadata:
      labels:
        app.kubernetes.io/name: {{ template "chart.name" . }}
        app.kubernetes.io/instance: {{ .Release.Name }}
        app.kubernetes.io/component: {{ .Values.mode }}
    {{- if .Values.extraLabels }}
{{ toYaml .Values.extraLabels | indent 8 }}
    {{- end }}
      annotations:
    {{- if .Values.annotations }}
{{ toYaml .Values.annotations | indent 8 }}
    {{- end }}
    spec:
      restartPolicy: OnFailure
      nodeSelector:
{{ toYaml .Values.nodeSelector | indent 8 }}
      containers:
      - name: tidb-restore-job
        image: {{ .Values.image.backup }}
        imagePullPolicy: {{ .Values.image.pullPolicy | default "IfNotPresent" }}
    {{- if .Values.resources }}
        resources:
{{ toYaml .Values.resources | indent 10 }}
    {{- end }}
        command:
        - /bin/sh
        - -c
        - |-
{{ tuple "scripts/_start_restore.sh.tpl" . | include "helm-toolkit.utils.template" | indent 10 }}
        volumeMounts:
        - name: data
          mountPath: "/data"
      {{- if .Values.gcp }}
        - name: gcp-credentials
          mountPath: "/gcp"
          readOnly: true
      {{- end }}
        env:
        - name: BACKUP_NAME
          value: {{ .Values.scheduledBackupName | default .Values.name | quote }}
      {{- if and (ne .Values.timezone "UTC") (ne .Values.timezone "") }}
        - name: TZ
          value: {{ .Values.timezone | default "UTC" }}
      {{- end }}
      {{- if .Values.gcp }}
        - name: GOOGLE_APPLICATION_CREDENTIALS
          value: /gcp/credentials.json
      {{- end }}
      {{- if or .Values.ceph .Values.s3 }}
        - name: AWS_ACCESS_KEY_ID
          valueFrom:
            secretKeyRef:
              name: {{ or .Values.ceph.secretName .Values.s3.secretName }}
              key: access_key
        - name: AWS_SECRET_ACCESS_KEY
          valueFrom:
            secretKeyRef:
              name: {{ or .Values.ceph.secretName .Values.s3.secretName }}
              key: secret_key
      {{- end }}
        - name: TIDB_USER
          valueFrom:
            secretKeyRef:
              name: {{ .Values.secretName }}
              key: user
        - name: TIDB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: {{ .Values.secretName }}
              key: password
    {{- if .Values.affinity }}
      affinity:
{{ toYaml .Values.affinity | indent 8 }}
    {{- end }}
    {{- if .Values.tolerations }}
      tolerations:
{{ toYaml .Values.tolerations | indent 8 }}
    {{- end }}
      volumes:
      - name: data
        persistentVolumeClaim:
    {{- if not .Values.restoreUsingExistingVolume }}
          claimName: restore-{{ .Values.name }}
    {{- else if .Values.scheduledBackupName }}
          claimName: {{ .Values.name }}-scheduled-backup
    {{- else }}
          claimName: {{ .Values.name }}
    {{- end }}
    {{- if .Values.gcp }}
      - name: gcp-credentials
        secret:
          secretName: {{ .Values.gcp.secretName }}
    {{- end }}
{{- end -}}
