# Copyright © 2017 Amdocs, Bell Canada, Orange
#
# 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 "mariadb-init._update-secrets" -}}
  {{ range $db, $dbInfos := .Values.config.mysqlAdditionalDatabases }}
{{ printf "- uid: %s" $db }}
{{ printf "  type: basicAuth" }}
    {{- if $dbInfos.externalSecret }}
{{ printf "  externalSecret: %s" $dbInfos.externalSecret }}
    {{- end }}
{{ printf "  login: %s" $dbInfos.user }}
{{ printf "  password: %s" $dbInfos.password }}
{{ printf "  passwordPolicy: required" }}
  {{- end -}}
{{- end -}}

{{ $global := . }}
{{ $secretsString := .Values.secrets | toYaml | indent 2 }}
{{ $additionalSecretsString := (include "mariadb-init._update-secrets" .) | indent 2 }}
{{ $finalSecretsString := (cat "\nsecrets:\n" $secretsString $additionalSecretsString) | replace "   -" "  -" }}
{{ $finalSecrets := ($finalSecretsString | fromYaml).secrets }}

{{ $newValues := set $global.Values "secrets" $finalSecrets }}
{{ $tmpGlobal := set $global "Values" $newValues }}

{{ include "common.secret" $tmpGlobal }}
