#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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.init.enabled }}
apiVersion: batch/v1
kind: Job
metadata:
  name: {{ template "superset.name" . }}-init-db
  annotations:
    "helm.sh/hook": post-install,post-upgrade
    "helm.sh/hook-delete-policy": "before-hook-creation"
spec:
  template:
    metadata:
      name: {{ template "superset.name" . }}-init-db
      {{- if .Values.init.podAnnotations }}
      annotations:
        {{ toYaml .Values.init.podAnnotations | nindent 8 }}
      {{- end }}
    spec:
      {{- if or (.Values.serviceAccount.create) (.Values.serviceAccountName) }}
      serviceAccountName: {{ template "superset.serviceAccountName" . }}
      {{- end }}
      securityContext:
        runAsUser: {{ .Values.runAsUser }}
      {{- if .Values.init.initContainers }}
      initContainers:
      {{-  tpl (toYaml .Values.init.initContainers) . | nindent 6 }}
      {{- end }}
      containers:
      - name: {{ template "superset.name" . }}-init-db
        image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
        {{- if or .Values.extraEnv .Values.extraEnvRaw }}
        env:
          {{- range $key, $value := .Values.extraEnv }}
          - name: {{ $key | quote }}
            value: {{ $value | quote }}
          {{- end }}
          {{- if .Values.extraEnvRaw }}
          {{- toYaml .Values.extraEnvRaw | nindent 10 }}
          {{- end }}
        {{- end }}
        envFrom:
          - secretRef:
              name: {{ tpl .Values.envFromSecret . }}
          {{- range .Values.envFromSecrets }}
          - secretRef:
              name: {{ tpl . $ }}
          {{- end }}
        imagePullPolicy: {{ .Values.image.pullPolicy }}
        volumeMounts:
          - name: superset-config
            mountPath: {{ .Values.configMountPath | quote }}
            readOnly: true
        {{- if .Values.extraConfigs }}
          - name: superset-extra-config
            mountPath: {{ .Values.extraConfigMountPath | quote }}
            readOnly: true
        {{- end }}
        {{- with .Values.extraVolumeMounts }}
        {{- tpl (toYaml .) $ | nindent 10 -}}
        {{- end }}
        command: {{  tpl (toJson .Values.init.command) . }}
        resources:
{{ toYaml .Values.init.resources | indent 10 }}
{{- if .Values.imagePullSecrets }}
      imagePullSecrets:
{{ toYaml .Values.imagePullSecrets | indent 8 }}
      {{- end }}
      volumes:
        - name: superset-config
          secret:
            secretName: {{ tpl .Values.configFromSecret . }}
        {{- if .Values.extraConfigs }}
        - name: superset-extra-config
          configMap:
            name: {{ template "superset.fullname" . }}-extra-config
        {{- end }}
        {{- with .Values.extraVolumes }}
        {{- tpl (toYaml .) $ | nindent 8 -}}
        {{- end }}
      restartPolicy: Never
{{- end }}
