# Copyright © 2018 AT&T
#
# 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.

#################################################################
# Secrets metaconfig
#################################################################
secrets:
  - uid: cmso-db-root-password
    name: '{{ include "common.release" . }}-cmso-db-root-password'
    type: password
    password: ''
    policy: generate
  - uid: cmso-db-secret
    name: '{{ include "common.release" . }}-cmso-db-secret'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.db.userCredentialsExternalSecret) . }}'
    login: '{{ .Values.config.db.userName }}'
    password: '{{ .Values.config.db.userPassword }}'
    passwordPolicy: generate

mariadb-galera:
  replicaCount: 1
  nameOverride: cmso-db
  service:
    type: ClusterIP
    name: oof-cmso-dbhost
    portName: cmso-dbhost
  nfsprovisionerPrefix: cmso
  sdnctlPrefix: cmso
  persistence:
    mountSubPath: cmso/data
    enabled: true
  disableNfsProvisioner: true
  config:
    mariadbRootPasswordExternalSecret: '{{ include "common.release" . }}-cmso-db-root-password'
    userCredentialsExternalSecret: '{{ include "common.release" . }}-cmso-db-secret'
    mysqlDatabase: cmso
  externalConfig: |
    [mysqld]
    lower_case_table_names = 1

global:
  commonConfigPrefix: "oof-cmso"
  truststoreFile: "truststoreONAPall.jks"
  keystoreFile: "org.onap.oof.jks"
  loggingRepository: docker.elastic.co
  loggingImage: beats/filebeat:5.5.0
  keystorePassword: N{$tSp*U)RQzjqE;)%4z;Pv[
  truststorePassword:
  authentication: aaf-auth

flavor: small

config:
  log:
    logstashServiceName: log-ls
    logstashPort: 5044
  db:
    # userCredentialsExternalsecret: some secret
    userName: cmso-admin
    # userPassword: password

oof-cmso-service:
  config:
    db:
      userCredentialsExternalSecret: '{{ include "common.release" . }}-cmso-db-secret'
      rootPasswordExternalSecret: '{{ include "common.release" . }}-cmso-db-root-password'
      host: oof-cmso-dbhost
      container: cmso-db
      mysqlDatabase: cmso

oof-cmso-optimizer:
  config:
    db:
      userCredentialsExternalSecret: '{{ include "common.release" . }}-cmso-db-secret'
      rootPasswordExternalSecret: '{{ include "common.release" . }}-cmso-db-root-password'
      host: oof-cmso-dbhost
      container: cmso-db
      mysqlDatabase: optimizer
