{{/*
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.cron_fernet_rotate }}
{{- if eq .Values.conf.keystone.token.provider "fernet" }}
{{- $envAll := . }}

{{- $mounts_keystone_fernet_rotate := .Values.pod.mounts.keystone_fernet_rotate.keystone_fernet_rotate }}
{{- $mounts_keystone_fernet_rotate_init := .Values.pod.mounts.keystone_fernet_rotate.init_container }}

{{- $serviceAccountName := "keystone-fernet-rotate" }}
{{ tuple $envAll "fernet_rotate" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: {{ $serviceAccountName }}
rules:
  - apiGroups:
      - ""
    resources:
      - secrets
    verbs:
      - get
      - list
      - create
      - update
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: {{ $serviceAccountName }}
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: {{ $serviceAccountName }}
subjects:
  - kind: ServiceAccount
    name: {{ $serviceAccountName }}
    namespace: {{ $envAll.Release.Namespace }}
---
apiVersion: batch/v1
kind: CronJob
metadata:
  name: keystone-fernet-rotate
  annotations:
    {{ tuple $envAll | include "helm-toolkit.snippets.release_uuid" }}
spec:
  schedule: {{ .Values.jobs.fernet_rotate.cron | quote }}
  successfulJobsHistoryLimit: {{ .Values.jobs.fernet_rotate.history.success }}
  failedJobsHistoryLimit: {{ .Values.jobs.fernet_rotate.history.failed }}
  concurrencyPolicy: Forbid
  jobTemplate:
    metadata:
      labels:
{{ tuple $envAll "keystone" "fernet-rotate" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 8 }}
    spec:
      template:
        metadata:
          labels:
{{ tuple $envAll "keystone" "fernet-rotate" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 12 }}
        spec:
{{ with .Values.pod.priorityClassName.keystone_fernet_rotate }}
          priorityClassName: {{ . }}
{{ end }}
{{ with .Values.pod.runtimeClassName.keystone_fernet_rotate }}
          runtimeClassName: {{ . }}
{{ end }}
          serviceAccountName: {{ $serviceAccountName }}
{{ dict "envAll" $envAll "application" "fernet_rotate" | include "helm-toolkit.snippets.kubernetes_pod_security_context" | indent 10 }}
          initContainers:
{{ tuple $envAll "fernet_rotate" $mounts_keystone_fernet_rotate_init | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 12 }}
          restartPolicy: OnFailure
{{ if $envAll.Values.pod.tolerations.keystone.enabled }}
{{ tuple $envAll "keystone" | include "helm-toolkit.snippets.kubernetes_tolerations" | indent 10 }}
{{ end }}
          nodeSelector:
            {{ .Values.labels.job.node_selector_key }}: {{ .Values.labels.job.node_selector_value }}
          containers:
            - name: keystone-fernet-rotate
{{ tuple $envAll "keystone_fernet_rotate" | include "helm-toolkit.snippets.image" | indent 14 }}
{{ tuple $envAll $envAll.Values.pod.resources.jobs.fernet_rotate | include "helm-toolkit.snippets.kubernetes_resources" | indent 14 }}
{{ dict "envAll" $envAll "application" "fernet_rotate" "container" "keystone_fernet_rotate" | include "helm-toolkit.snippets.kubernetes_container_security_context" | indent 14}}
              env:
                - name: KEYSTONE_USER
                  value: {{ .Values.jobs.fernet_rotate.user | quote }}
                - name: KEYSTONE_GROUP
                  value: {{ .Values.jobs.fernet_rotate.group | quote }}
                - name: KUBERNETES_NAMESPACE
                  value: {{ .Release.Namespace | quote }}
                - name: KEYSTONE_KEYS_REPOSITORY
                  value: {{ .Values.conf.keystone.fernet_tokens.key_repository | quote }}
              command:
                - python
                - /tmp/fernet-manage.py
                - fernet_rotate
              volumeMounts:
                - name: pod-tmp
                  mountPath: /tmp
                - name: etckeystone
                  mountPath: /etc/keystone
                - name: keystone-etc
                  mountPath: /etc/keystone/keystone.conf
                  subPath: keystone.conf
                  readOnly: true
                {{- if .Values.conf.keystone.DEFAULT.log_config_append }}
                - name: keystone-etc
                  mountPath: {{ .Values.conf.keystone.DEFAULT.log_config_append }}
                  subPath: {{ base .Values.conf.keystone.DEFAULT.log_config_append }}
                  readOnly: true
                {{- end }}
                - name: keystone-bin
                  mountPath: /tmp/fernet-manage.py
                  subPath: fernet-manage.py
                  readOnly: true
{{ if $mounts_keystone_fernet_rotate.volumeMounts }}{{ toYaml $mounts_keystone_fernet_rotate.volumeMounts | indent 16 }}{{ end }}
          volumes:
            - name: pod-tmp
              emptyDir: {}
            - name: etckeystone
              emptyDir: {}
            - name: keystone-etc
              secret:
                secretName: keystone-etc
                defaultMode: 0444
            - name: keystone-bin
              configMap:
                name: keystone-bin
                defaultMode: 0555
{{ if $mounts_keystone_fernet_rotate.volumes }}{{ toYaml $mounts_keystone_fernet_rotate.volumes | indent 12 }}{{ end }}
{{- end }}
{{- end }}
