kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: "restore-{{ .identity }}"
  labels:
    app.kubernetes.io/name: restore-pvc
    app.kubernetes.io/managed-by: tidb-operator
    app.kubernetes.io/instance: db
    app.kubernetes.io/component: restore
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: Filesystem
  resources:
    requests:
      storage: {{ .storage }}
  storageClassName: {{ .restore.storageClassName }}
---
apiVersion: batch/v1
kind: Job
metadata:
  name: "restore-{{ .identity }}"
  labels:
    app.kubernetes.io/name: restore
    app.kubernetes.io/managed-by: dbaas
    app.kubernetes.io/instance: db
    app.kubernetes.io/component: restore
spec:
  template:
    metadata:
      labels:
        app.kubernetes.io/name: restore-pod
        app.kubernetes.io/instance: db
        app.kubernetes.io/component: restore
    spec:
      restartPolicy: OnFailure
      containers:
      - name: tidb-restore-job
        image: "{{ .restore.image }}"
        imagePullPolicy: Always
        resources:
          requests:
            cpu: "0.8"
        command:
        - /bin/sh
        - -c
        - |
          set -euo pipefail
          mkdir -p "/data/{{ .srcDir }}"
          {{- if .restore.gcp }}
          downloader \
            --cloud=gcp \
            --bucket="{{ .bucket }}" \
            --srcDir="{{ .srcDir }}" \
            --destDir=/data/
          {{- end }}
          /loader \
            -d "/data/{{ .srcDir }}" \
            -h "{{.tidbClusterIP}}" \
            -u "{{ .restore.user }}" \
            -P 4000 \
            -p "${TIDB_PASSWORD}" \
            {{ .restore.options }}

        volumeMounts:
        - name: data
          mountPath: "/data"
      {{- if .restore.gcp }}
        - name: google-cloud-key
          mountPath: /var/secrets/google
      {{- end }}
        env:
        - name: MY_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
      {{- if .restore.gcp }}
        - name: GOOGLE_APPLICATION_CREDENTIALS
          value: /var/secrets/google/key.json
      {{- end }}
        - name: TIDB_PASSWORD
          valueFrom:
            secretKeyRef:
              name: "{{ .passwordSecretName }}"
              key: dbaas
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: "restore-{{ .identity }}"
    {{- if .restore.gcp }}
      - name: google-cloud-key
        secret:
          secretName: dbaas-backup-key
    {{- end }}
