# 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:
  repository: nexus3.onap.org:10001
  aafAgentImage: onap/aaf/aaf_agent:2.1.20
  aafEnabled: true
  jreImage: registry.gitlab.com/onap-integration/docker/onap-java

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"
importCustomCertsEnabled: false
truststoreMountpath: ""
truststoreOutputFileName: truststore.jks
truststorePassword: changeit
