# Copyright © 2018 AT&T
# Copyright (C) 2020 Wipro Limited.
#
# 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:
  commonConfigPrefix: "oof-cmso"
  truststoreFile: "truststoreONAPall.jks"
  keystoreFile: "org.onap.oof.jks"
  truststorePassword:
  authentication: aaf-auth
  mariadbGalera: &mariadbGalera
    #This flag allows OOF-CMSO to instantiate its own mariadb-galera cluster
    localCluster: false
    service: mariadb-galera
    internalPort: 3306
    nameOverride: mariadb-galera

#################################################################
# Secrets metaconfig
#################################################################
secrets:
  - uid: cmso-db-root-password
    name: &rootPassword '{{ include "common.release" . }}-cmso-db-root-password'
    type: password
    password: ''
    policy: generate
  - uid: cmso-service-db-secret
    name: &serviceDbCreds '{{ include "common.release" . }}-cmso-service-db-secret'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.db.service.userCredentialsExternalSecret) . }}'
    login: '{{ .Values.config.db.service.userName }}'
    password: '{{ .Values.config.db.service.userPassword }}'
    passwordPolicy: generate
  - uid: cmso-db-secret
    name: &optimizerDbCreds '{{ include "common.release" . }}-cmso-optimizer-db-secret'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.db.optimizer.userCredentialsExternalSecret) . }}'
    login: '{{ .Values.config.db.optimizer.userName }}'
    password: '{{ .Values.config.db.optimizer.userPassword }}'
    passwordPolicy: generate
  - uid: cmso-aaf-creds
    name: &aafCreds '{{ include "common.release" . }}-cmso-aaf-creds'
    type: basicAuth
    login: '{{ .Values.config.aaf.user }}'
    password: '{{ .Values.config.aaf.password }}'

mariadb-galera: &localMariadb
  replicaCount: 1
  nameOverride: &dbName cmso-db
  nfsprovisionerPrefix: cmso
  sdnctlPrefix: cmso
  persistence:
    mountSubPath: cmso/data
    enabled: true
  disableNfsProvisioner: true
  rootUser:
    externalSecret: *rootPassword
  serviceAccount:
    nameOverride: *dbName

mariadb-init:
  config:
    userCredentialsExternalSecret: *serviceDbCreds
    mysqlDatabase: cmso
    mysqlAdditionalDatabases:
      optimizer:
        externalSecret: *optimizerDbCreds
  nameOverride: cmso-db-config

flavor: small

config:
  aaf:
    user: oof@oof.onap.org
    password: demo123456!
  log:
    logstashServiceName: log-ls
    logstashPort: 5044
  db:
    service:
      # userCredentialsExternalsecret: some secret
      userName: cmso-admin
      # userPassword: password
    optimizer:
      userName: cmso-optimizer

#sub-charts configuration
certInitializer: &certInitConfig
  fqdn: "oof.onap"
  app_ns: "org.osaaf.aaf"
  fqi: "oof@oof.onap.org"
  fqi_namespace: org.onap.oof
  public_fqdn: "oof.onap.org"
  aafDeployFqi: "deployer@people.osaaf.org"
  aafDeployPass: demo123456!
  cadi_latitude: "0.0"
  cadi_longitude: "0.0"
  credsPath: /opt/app/osaaf/local
  appMountPath: /share/etc/osaaf
  aaf_add_config: >
    cd {{ .Values.credsPath }};
    /opt/app/aaf_config/bin/agent.sh local showpass {{.Values.fqi}} {{ .Values.fqdn }} | grep cadi_keystore_password_jks= | cut -d= -f 2 > {{ .Values.credsPath }}/.pass 2>&1;
    find ./ -type f -exec sed -i -e 's/\/opt\/app\/osaaf\/local/\/share\/etc\/osaaf\/local/g' {} \;

oof-cmso-service:
  enabled: true
  certInitializer:
    << : *certInitConfig
    nameOverride: oof-cmso-service-cert-initializer
  mariadb-galera: *localMariadb
  config:
    db:
      userCredentialsExternalSecret: *serviceDbCreds
      mysqlDatabase: cmso
    aaf:
      userCredentialsExternalSecret: *aafCreds

oof-cmso-optimizer:
  enabled: true
  certInitializer:
    << : *certInitConfig
    nameOverride: oof-cmso-optimizer-cert-initializer
  mariadb-galera: *localMariadb
  config:
    enabled: true
    db:
      userCredentialsExternalSecret: *optimizerDbCreds
      mysqlDatabase: optimizer
    aaf:
      userCredentialsExternalSecret: *aafCreds

oof-cmso-topology:
  enabled: true
  certInitializer:
    << : *certInitConfig
    nameOverride: oof-cmso-topology-cert-initializer

oof-cmso-ticketmgt:
  enabled: true
  certInitializer:
    << : *certInitConfig
    nameOverride: oof-cmso-ticketmgt-cert-initializer
