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

{{- define "metadata.annotations.job.db_sync" }}
{{- if .Values.helm3_hook -}}
helm.sh/hook: post-install,post-upgrade
helm.sh/hook-weight: "-4"
{{- end -}}
{{- end }}

{{- define "keystone.templates._job_db_sync.env_vars" -}}
{{- $envAll := index . 0 -}}
env:
  - name: OS_BOOTSTRAP_ADMIN_URL
    value: {{ tuple "identity" "admin" "api" $envAll | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup" }}
  - name: OS_BOOTSTRAP_INTERNAL_URL
    value: {{ tuple "identity" "internal" "api" $envAll | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup" }}
  - name: OS_BOOTSTRAP_PUBLIC_URL
    value: {{ tuple "identity" "public" "api" $envAll | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup" }}
  - name: OPENSTACK_CONFIG_FILE
    value: "/etc/keystone/keystone.conf"
  - name: OPENSTACK_CONFIG_DB_SECTION
    value: "database"
  - name: OPENSTACK_CONFIG_DB_KEY
    value: "connection"
{{- with $env := dict "ksUserSecret" $envAll.Values.secrets.identity.admin }}
{{- include "helm-toolkit.snippets.keystone_openrc_env_vars" $env | indent 2}}
{{- end }}
{{- end }}

{{- define "keystone.templates._job_db_sync.pod_vol_mounts" -}}
{{- $envAll := index . 0 -}}
volumeMounts:
  - name: db-sync-sh
    mountPath: /tmp/endpoint-update.py
    subPath: endpoint-update.py
    readOnly: true
  - name: keystone-fernet-keys
    mountPath: {{ $envAll.Values.conf.keystone.fernet_tokens.key_repository }}
    readOnly: true
{{- if and $envAll.Values.manifests.certificates $envAll.Values.endpoints.oslo_db.auth.admin.secret.tls.internal }}
{{- dict "enabled" $envAll.Values.manifests.certificates "name" $envAll.Values.endpoints.oslo_db.auth.admin.secret.tls.internal "path" "/etc/mysql/certs" | include "helm-toolkit.snippets.tls_volume_mount" | indent 2 }}
{{- end }}
{{- if and $envAll.Values.manifests.certificates $envAll.Values.endpoints.oslo_messaging.auth.admin.secret.tls.internal }}
{{- dict "enabled" $envAll.Values.manifests.certificates "name" $envAll.Values.endpoints.oslo_messaging.auth.admin.secret.tls.internal "path" "/etc/rabbitmq/certs" | include "helm-toolkit.snippets.tls_volume_mount" | indent 2 }}
{{- end }}
{{- end }}

{{- define "keystone.templates._job_db_sync.pod_vols" -}}
{{- $envAll := index . 0 -}}
volumes:
  - name: keystone-fernet-keys
    secret:
      secretName: keystone-fernet-keys
{{- if and $envAll.Values.manifests.certificates $envAll.Values.endpoints.oslo_db.auth.admin.secret.tls.internal }}
{{- dict "enabled" $envAll.Values.manifests.certificates "name" $envAll.Values.endpoints.oslo_db.auth.admin.secret.tls.internal | include "helm-toolkit.snippets.tls_volume" | indent 2 }}
{{- end }}
{{- if and $envAll.Values.manifests.certificates $envAll.Values.endpoints.oslo_messaging.auth.admin.secret.tls.internal }}
{{- dict "enabled" $envAll.Values.manifests.certificates "name" $envAll.Values.endpoints.oslo_messaging.auth.admin.secret.tls.internal | include "helm-toolkit.snippets.tls_volume" | indent 2 }}
{{- end }}
{{- end }}

{{- if .Values.manifests.job_db_sync }}
{{- $local := dict "podVolMounts" false "podVols" false -}}
{{- if eq .Values.conf.keystone.token.provider "fernet" }}
{{- $_ := set $local "podVolMounts" ( index ( tuple . | include "keystone.templates._job_db_sync.pod_vol_mounts" | toString | fromYaml ) "volumeMounts" ) }}
{{- $_ := set $local "podVols" ( index ( tuple . | include "keystone.templates._job_db_sync.pod_vols" | toString | fromYaml ) "volumes" ) }}
{{- end }}
{{- $podEnvVars := tuple . | include "keystone.templates._job_db_sync.env_vars" | toString | fromYaml }}
{{- $dbSyncJob := dict "envAll" . "serviceName" "keystone" "podVolMounts" $local.podVolMounts "podVols" $local.podVols "podEnvVars" $podEnvVars.env "jobAnnotations" (include "metadata.annotations.job.db_sync" . | fromYaml) -}}
{{- if .Values.pod.tolerations.keystone.enabled -}}
{{- $_ := set $dbSyncJob "tolerationsEnabled" true -}}
{{- end -}}
{{ $dbSyncJob | include "helm-toolkit.manifests.job_db_sync" }}
{{- end }}
