# Copyright © 2020 Bell Canada, Samsung Electronics
#
# 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.

global:
  aafAgentImage: onap/aaf/aaf_agent:2.1.20
  aafEnabled: true

pullPolicy: Always

secrets:
  - uid: deployer-creds
    type: basicAuth
    externalSecret: '{{ ternary (tpl (default "" .Values.aafDeployCredsExternalSecret) .) "aafIsDisabled" .Values.global.aafEnabled }}'
    login: '{{ .Values.aafDeployFqi }}'
    password: '{{ .Values.aafDeployPass }}'
    passwordPolicy: required
  - uid: truststore-creds
    type: password
    externalSecret: '{{ tpl (default "" .Values.truststoreCredsExternalSecret) . }}'
    password: '{{ .Values.truststorePassword }}'
    passwordPolicy: required

readinessCheck:
  wait_for:
    - aaf-locate
    - aaf-cm
    - aaf-service

aafDeployFqi: "changeme"
fqdn: ""
app_ns: "org.osaaf.aaf"
fqi: ""
fqi_namespace: ""
public_fqdn: "aaf.osaaf.org"
aafDeployFqi: "deployer@people.osaaf.org"
aafDeployPass: demo123456!
cadi_latitude: "38.0"
cadi_longitude: "-72.0"
aaf_add_config: ""
mountPath: "/opt/app/osaaf"
appMountPath: "/opt/app/osaaf"
importCustomCertsEnabled: false
truststoreMountpath: ""
truststoreOutputFileName: truststore.jks
truststorePassword: changeit

# This introduces implicit dependency on cert-wrapper
# if you are using cert initializer cert-wrapper has to be also deployed.
# We had to move this CM to a separate chart to reduce the total size of our charts
# as it exceeds the default helm limits.
certsCMName: '{{ include "common.release" . }}-cert-wrapper-certs'
