{{/*
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.configmap_etc }}
{{- $envAll := . }}

{{- $manila_auth_url := tuple "identity" "internal" "api" . | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup" }}
{{- $manila_region_name := .Values.endpoints.identity.auth.manila.region_name }}
{{- $manila_project_name := .Values.endpoints.identity.auth.manila.project_name }}
{{- $manila_project_domain_name := .Values.endpoints.identity.auth.manila.project_domain_name }}
{{- $manila_user_domain_name := .Values.endpoints.identity.auth.manila.user_domain_name }}
{{- $manila_username := .Values.endpoints.identity.auth.manila.username }}
{{- $manila_password := .Values.endpoints.identity.auth.manila.password }}
{{- $memcached_servers := tuple "oslo_cache" "internal" "memcache" . | include "helm-toolkit.endpoints.host_and_port_endpoint_uri_lookup" }}
{{- $memcache_secret_key := default ( randAlphaNum 64 ) .Values.endpoints.oslo_cache.auth.memcache_secret_key }}

{{- if empty .Values.conf.manila.keystone_authtoken.auth_uri -}}
{{- $_ := set .Values.conf.manila.keystone_authtoken "auth_uri" $manila_auth_url -}}
{{- end -}}

{{- if empty .Values.conf.manila.keystone_authtoken.auth_url -}}
{{- $_ := set .Values.conf.manila.keystone_authtoken "auth_url" $manila_auth_url -}}
{{- end -}}

{{- if empty .Values.conf.manila.keystone_authtoken.region_name -}}
{{- $_ := set .Values.conf.manila.keystone_authtoken "region_name" $manila_region_name -}}
{{- end -}}
{{- if empty .Values.conf.manila.keystone_authtoken.project_name -}}
{{- $_ := set .Values.conf.manila.keystone_authtoken "project_name" $manila_project_name -}}
{{- end -}}
{{- if empty .Values.conf.manila.keystone_authtoken.project_domain_name -}}
{{- $_ := set .Values.conf.manila.keystone_authtoken "project_domain_name" $manila_project_domain_name -}}
{{- end -}}
{{- if empty .Values.conf.manila.keystone_authtoken.user_domain_name -}}
{{- $_ := set .Values.conf.manila.keystone_authtoken "user_domain_name" $manila_user_domain_name -}}
{{- end -}}
{{- if empty .Values.conf.manila.keystone_authtoken.username -}}
{{- $_ := set .Values.conf.manila.keystone_authtoken "username" $manila_username -}}
{{- end -}}
{{- if empty .Values.conf.manila.keystone_authtoken.password -}}
{{- $_ := set .Values.conf.manila.keystone_authtoken "password" $manila_password -}}
{{- end -}}

{{- if empty .Values.conf.manila.keystone_authtoken.memcached_servers -}}
{{- $_ := set .Values.conf.manila.keystone_authtoken "memcached_servers" $memcached_servers -}}
{{- end -}}
{{- if empty .Values.conf.manila.keystone_authtoken.memcache_secret_key -}}
{{- $_ := set .Values.conf.manila.keystone_authtoken "memcache_secret_key" $memcache_secret_key -}}
{{- end -}}

{{- if empty .Values.conf.manila.database.connection -}}
{{- $_ := tuple "oslo_db" "internal" "manila" "mysql" . | include "helm-toolkit.endpoints.authenticated_endpoint_uri_lookup"| set .Values.conf.manila.database "connection" -}}
{{- end -}}

{{- if empty .Values.conf.manila.DEFAULT.transport_url -}}
{{- $_ := tuple "oslo_messaging" "internal" "manila" "amqp" . | include "helm-toolkit.endpoints.authenticated_transport_endpoint_uri_lookup" | set .Values.conf.manila.DEFAULT "transport_url" -}}
{{- end -}}

# neutron
{{- if empty .Values.conf.manila.neutron.auth_uri -}}
{{- $_ := set .Values.conf.manila.neutron "auth_uri" $manila_auth_url -}}
{{- end -}}

{{- if empty .Values.conf.manila.neutron.auth_url -}}
{{- $_ := set .Values.conf.manila.neutron "auth_url" $manila_auth_url -}}
{{- end -}}

{{- if empty .Values.conf.manila.neutron.region_name -}}
{{- $_ := set .Values.conf.manila.neutron "region_name" .Values.endpoints.identity.auth.manila.region_name -}}
{{- end -}}
{{- if empty .Values.conf.manila.neutron.project_name -}}
{{- $_ := set .Values.conf.manila.neutron "project_name" $manila_project_name -}}
{{- end -}}
{{- if empty .Values.conf.manila.neutron.project_domain_name -}}
{{- $_ := set .Values.conf.manila.neutron "project_domain_name" $manila_project_domain_name -}}
{{- end -}}
{{- if empty .Values.conf.manila.neutron.user_domain_name -}}
{{- $_ := set .Values.conf.manila.neutron "user_domain_name" $manila_user_domain_name -}}
{{- end -}}
{{- if empty .Values.conf.manila.neutron.username -}}
{{- $_ := set .Values.conf.manila.neutron "username" $manila_username -}}
{{- end -}}
{{- if empty .Values.conf.manila.neutron.password -}}
{{- $_ := set .Values.conf.manila.neutron "password" $manila_password -}}
{{- end -}}

{{- if empty .Values.conf.manila.neutron.memcached_servers -}}
{{- $_ := set .Values.conf.manila.neutron "memcached_servers" $memcached_servers -}}
{{- end -}}
{{- if empty .Values.conf.manila.neutron.memcache_secret_key -}}
{{- $_ := set .Values.conf.manila.neutron "memcache_secret_key" $memcache_secret_key -}}
{{- end -}}

# nova
{{- if empty .Values.conf.manila.nova.auth_uri -}}
{{- $_ := set .Values.conf.manila.nova "auth_uri" $manila_auth_url -}}
{{- end -}}

{{- if empty .Values.conf.manila.nova.auth_url -}}
{{- $_ := set .Values.conf.manila.nova "auth_url" $manila_auth_url -}}
{{- end -}}

{{- if empty .Values.conf.manila.nova.region_name -}}
{{- $_ := set .Values.conf.manila.nova "region_name" .Values.endpoints.identity.auth.manila.region_name -}}
{{- end -}}
{{- if empty .Values.conf.manila.nova.project_name -}}
{{- $_ := set .Values.conf.manila.nova "project_name" $manila_project_name -}}
{{- end -}}
{{- if empty .Values.conf.manila.nova.project_domain_name -}}
{{- $_ := set .Values.conf.manila.nova "project_domain_name" $manila_project_domain_name -}}
{{- end -}}
{{- if empty .Values.conf.manila.nova.user_domain_name -}}
{{- $_ := set .Values.conf.manila.nova "user_domain_name" $manila_user_domain_name -}}
{{- end -}}
{{- if empty .Values.conf.manila.nova.username -}}
{{- $_ := set .Values.conf.manila.nova "username" $manila_username -}}
{{- end -}}
{{- if empty .Values.conf.manila.nova.password -}}
{{- $_ := set .Values.conf.manila.nova "password" $manila_password -}}
{{- end -}}

{{- if empty .Values.conf.manila.nova.memcached_servers -}}
{{- $_ := set .Values.conf.manila.nova "memcached_servers" $memcached_servers -}}
{{- end -}}
{{- if empty .Values.conf.manila.nova.memcache_secret_key -}}
{{- $_ := set .Values.conf.manila.nova "memcache_secret_key" $memcache_secret_key -}}
{{- end -}}

# cinder
{{- if empty .Values.conf.manila.cinder.auth_uri -}}
{{- $_ := set .Values.conf.manila.cinder "auth_uri" $manila_auth_url -}}
{{- end -}}

{{- if empty .Values.conf.manila.cinder.auth_url -}}
{{- $_ := set .Values.conf.manila.cinder "auth_url" $manila_auth_url -}}
{{- end -}}

{{- if empty .Values.conf.manila.cinder.region_name -}}
{{- $_ := set .Values.conf.manila.cinder "region_name" .Values.endpoints.identity.auth.manila.region_name -}}
{{- end -}}
{{- if empty .Values.conf.manila.cinder.project_name -}}
{{- $_ := set .Values.conf.manila.cinder "project_name" $manila_project_name -}}
{{- end -}}
{{- if empty .Values.conf.manila.cinder.project_domain_name -}}
{{- $_ := set .Values.conf.manila.cinder "project_domain_name" $manila_project_domain_name -}}
{{- end -}}
{{- if empty .Values.conf.manila.cinder.user_domain_name -}}
{{- $_ := set .Values.conf.manila.cinder "user_domain_name" $manila_user_domain_name -}}
{{- end -}}
{{- if empty .Values.conf.manila.cinder.username -}}
{{- $_ := set .Values.conf.manila.cinder "username" $manila_username -}}
{{- end -}}
{{- if empty .Values.conf.manila.cinder.password -}}
{{- $_ := set .Values.conf.manila.cinder "password" $manila_password -}}
{{- end -}}

{{- if empty .Values.conf.manila.cinder.memcached_servers -}}
{{- $_ := set .Values.conf.manila.cinder "memcached_servers" $memcached_servers -}}
{{- end -}}
{{- if empty .Values.conf.manila.cinder.memcache_secret_key -}}
{{- $_ := set .Values.conf.manila.cinder "memcache_secret_key" $memcache_secret_key -}}
{{- end -}}

# glance
{{- if empty .Values.conf.manila.glance.auth_uri -}}
{{- $_ := set .Values.conf.manila.glance "auth_uri" $manila_auth_url -}}
{{- end -}}

{{- if empty .Values.conf.manila.glance.auth_url -}}
{{- $_ := set .Values.conf.manila.glance "auth_url" $manila_auth_url -}}
{{- end -}}

{{- if empty .Values.conf.manila.glance.region_name -}}
{{- $_ := set .Values.conf.manila.glance "region_name" .Values.endpoints.identity.auth.manila.region_name -}}
{{- end -}}
{{- if empty .Values.conf.manila.glance.project_name -}}
{{- $_ := set .Values.conf.manila.glance "project_name" $manila_project_name -}}
{{- end -}}
{{- if empty .Values.conf.manila.glance.project_domain_name -}}
{{- $_ := set .Values.conf.manila.glance "project_domain_name" $manila_project_domain_name -}}
{{- end -}}
{{- if empty .Values.conf.manila.glance.user_domain_name -}}
{{- $_ := set .Values.conf.manila.glance "user_domain_name" $manila_user_domain_name -}}
{{- end -}}
{{- if empty .Values.conf.manila.glance.username -}}
{{- $_ := set .Values.conf.manila.glance "username" $manila_username -}}
{{- end -}}
{{- if empty .Values.conf.manila.glance.password -}}
{{- $_ := set .Values.conf.manila.glance "password" $manila_password -}}
{{- end -}}

{{- if empty .Values.conf.manila.glance.memcached_servers -}}
{{- $_ := set .Values.conf.manila.glance "memcached_servers" $memcached_servers -}}
{{- end -}}
{{- if empty .Values.conf.manila.glance.memcache_secret_key -}}
{{- $_ := set .Values.conf.manila.glance "memcache_secret_key" $memcache_secret_key -}}
{{- end -}}

{{- if empty .Values.conf.manila_api_uwsgi.uwsgi.processes -}}
{{- $_ := set .Values.conf.manila_api_uwsgi.uwsgi "processes" .Values.conf.manila.DEFAULT.osapi_share_workers -}}
{{- end -}}
{{- if empty (index .Values.conf.manila_api_uwsgi.uwsgi "http-socket") -}}
{{- $http_socket_port := tuple "sharev2" "service" "api" . | include "helm-toolkit.endpoints.endpoint_port_lookup" | toString }}
{{- $http_socket := printf "0.0.0.0:%s" $http_socket_port }}
{{- $_ := set .Values.conf.manila_api_uwsgi.uwsgi "http-socket" $http_socket -}}
{{- end -}}

{{- if and (empty .Values.conf.logging.handler_fluent) (has "fluent" .Values.conf.logging.handlers.keys) -}}
{{- $fluentd_host := tuple "fluentd" "internal" $envAll | include "helm-toolkit.endpoints.hostname_namespaced_endpoint_lookup" }}
{{- $fluentd_port := tuple "fluentd" "internal" "service" $envAll | include "helm-toolkit.endpoints.endpoint_port_lookup" }}
{{- $fluent_args := printf "('%s.%s', '%s', %s)" .Release.Namespace .Release.Name $fluentd_host $fluentd_port }}
{{- $handler_fluent := dict "class" "fluent.handler.FluentHandler" "formatter" "fluent" "args" $fluent_args -}}
{{- $_ := set .Values.conf.logging "handler_fluent" $handler_fluent -}}
{{- end -}}

{{- if and (empty .Values.conf.logging.formatter_fluent) (has "fluent" .Values.conf.logging.formatters.keys) -}}
{{- $formatter_fluent := dict "class" "oslo_log.formatters.FluentFormatter" -}}
{{- $_ := set .Values.conf.logging "formatter_fluent" $formatter_fluent -}}
{{- end -}}
---
apiVersion: v1
kind: Secret
metadata:
  name: manila-etc
type: Opaque
data:
  rally_tests.yaml: {{ toYaml .Values.conf.rally_tests.tests | b64enc }}
  manila.conf: {{ include "helm-toolkit.utils.to_oslo_conf" .Values.conf.manila | b64enc }}
  manila-api-uwsgi.ini: {{ include "helm-toolkit.utils.to_oslo_conf" .Values.conf.manila_api_uwsgi | b64enc }}
{{- range $key, $value := $envAll.Values.conf.rootwrap_filters }}
{{- $filePrefix := replace "_" "-"  $key }}
  {{ printf "%s.filters" $filePrefix }}: {{ $value.content | b64enc }}
{{- end }}
  logging.conf: {{ include "helm-toolkit.utils.to_oslo_conf" .Values.conf.logging | b64enc }}
  api-paste.ini: {{ include "helm-toolkit.utils.to_ini" .Values.conf.paste | b64enc }}
  policy.yaml: {{ toYaml .Values.conf.policy | b64enc }}
  manila_sudoers: {{ $envAll.Values.conf.manila_sudoers | b64enc }}
  rootwrap.conf: {{ $envAll.Values.conf.rootwrap | b64enc }}
{{- end }}
