{{/*
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.manifests.job_run_tests }}

{{- $envAll := . }}

{{- $serviceAccountName := "tempest-run-tests" }}
{{ tuple $envAll "run_tests" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
---
apiVersion: batch/v1
kind: Job
metadata:
  name: {{ .Release.Name }}-run-tests
  annotations:
    {{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" }}
    helm.sh/hook: post-install,post-upgrade
spec:
  backoffLimit: {{ .Values.jobs.run_tests.backoffLimit }}
  template:
    metadata:
      labels:
{{ tuple $envAll "tempest" "run-tests" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 8 }}
    spec:
      serviceAccountName: {{ $serviceAccountName }}
      restartPolicy: {{ .Values.jobs.run_tests.restartPolicy }}
      nodeSelector:
        {{ .Values.labels.job.node_selector_key }}: {{ .Values.labels.job.node_selector_value }}
      initContainers:
{{ tuple $envAll "run_tests" list | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
        - name: tempest-run-tests-init
{{ tuple $envAll "tempest_run_tests" | include "helm-toolkit.snippets.image" | indent 10 }}
{{ tuple $envAll $envAll.Values.pod.resources.jobs.run_tests | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
          securityContext:
            runAsUser: 0
          command:
            - chown
            - -R
            - "root:"
            - /var/lib/tempest/data
          volumeMounts:
            - name: pod-tmp
              mountPath: /tmp
            - name: tempest-reports
              mountPath: /var/lib/tempest/data
      containers:
        - name: tempest-run-tests
{{ tuple $envAll "tempest_run_tests" | include "helm-toolkit.snippets.image" | indent 10 }}
{{ tuple $envAll $envAll.Values.pod.resources.jobs.run_tests | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
          command:
            - /tmp/run-tests.sh
          env:
{{- if or .Values.manifests.certificates .Values.tls.identity }}
            - name: REQUESTS_CA_BUNDLE
              value: "/etc/tempest/certs/ca.crt"
{{- end }}
{{- with $env := dict "ksUserSecret" .Values.secrets.identity.admin }}
{{- include "helm-toolkit.snippets.keystone_openrc_env_vars" $env | indent 12 }}
{{- end }}
          volumeMounts:
            - name: pod-tmp
              mountPath: /tmp
            - name: tempest-bin
              mountPath: /tmp/run-tests.sh
              subPath: run-tests.sh
              readOnly: true
            - name: etctempest
              mountPath: /etc/tempest
            - name: tempest-etc
              mountPath: /etc/tempest/tempest.conf
              subPath: tempest.conf
              readOnly: true
            - name: tempest-etc
              mountPath: /etc/tempest/logging.conf
              subPath: logging.conf
              readOnly: true
{{ if not (empty .Values.conf.blacklist) }}
            - name: tempest-etc
              mountPath: /etc/tempest/test-blacklist
              subPath: test-blacklist
              readOnly: true
{{- end }}
{{ if not (empty .Values.conf.whitelist) }}
            - name: tempest-etc
              mountPath: /etc/tempest/test-whitelist
              subPath: test-whitelist
              readOnly: true
{{- end }}
            - name: stestr
              mountPath: /.stestr
            - name: tempest-reports
              mountPath: /var/lib/tempest/data
{{- dict "enabled" (or .Values.manifests.certificates .Values.tls.identity) "name" .Values.secrets.tls.identity.api.internal "path" "/etc/tempest/certs" | include "helm-toolkit.snippets.tls_volume_mount" | indent 12 }}
      volumes:
        - name: pod-tmp
          emptyDir: {}
        - name: etctempest
          emptyDir: {}
        - name: tempest-etc
          secret:
            secretName: tempest-etc
            defaultMode: 0444
        - name: tempest-bin
          configMap:
            name: tempest-bin
            defaultMode: 0555
        - name: stestr
          hostPath:
            path: /tmp/stestr
        - name: tempest-reports
        {{- if not .Values.pvc.enabled }}
          emptyDir: {}
        {{- else }}
          persistentVolumeClaim:
            claimName: {{ .Values.pvc.name }}
        {{- end }}
{{- dict "enabled" (or .Values.manifests.certificates .Values.tls.identity) "name" .Values.secrets.tls.identity.api.internal | include "helm-toolkit.snippets.tls_volume" | indent 8 }}
{{- end }}
