# Copyright (C) 2021 Bell Canada
# Modifications Copyright © 2022-2023 Nordix Foundation
#
# 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 configuration defaults.
#################################################################
secrets:
  - uid: core-app-user-creds
    name: &core-creds-secret '{{ include "common.release" . }}-cps-core-app-user-creds'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.coreUserExternalSecret) . }}'
    login: '{{ .Values.config.coreUserName }}'
    password: '{{ .Values.config.coreUserPassword }}'
    passwordPolicy: generate
  - uid: dmi-plugin-user-creds
    name: &dmi-plugin-creds-secret '{{ include "common.release" . }}-cps-dmi-plugin-user-creds'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.dmiPluginUserExternalSecret) . }}'
    login: '{{ .Values.config.dmiPluginUserName }}'
    password: '{{ .Values.config.dmiPluginUserPassword }}'
    passwordPolicy: generate

passwordStrengthOverride: basic

standaloneDeployment: false

global:
  ingress:
    virtualhost:
      baseurl: "simpledemo.onap.org"

  kafkaBootstrap: strimzi-kafka-bootstrap
  cpsKafkaUser: cps-kafka-user

config:
  coreUserName: cpsuser
  dmiPluginUserName: dmiuser
  useStrimziKafka: true
  ncmpEventsTopic:
    name: ncmp-events
    retentionMs: 7200000
    consumer:
      groupId: ncmp-group
  ncmpAsyncM2MTopic:
    name: ncmp-async-m2m
    retentionMs: 600000
    consumer:
      groupId: ncmp-group
  dmiCmEventsTopic:
    name: dmi-cm-events
    retentionMs: 7200000
    consumer:
      groupId: ncmp-group

# Enable all CPS components by default
cps-core:
  enabled: true
  config:
    appUserExternalSecret: *core-creds-secret
    dmiPluginUserExternalSecret: *dmi-plugin-creds-secret
    jaasConfExternalSecret: '{{ include "common.release" . }}-{{ .Values.global.cpsKafkaUser }}'

cps-temporal:
  enabled: true
  config:
    jaasConfExternalSecret: '{{ include "common.release" . }}-{{ .Values.global.cpsKafkaUser }}'

ncmp-dmi-plugin:
  enabled: true
  config:
    appUserExternalSecret: *dmi-plugin-creds-secret
    cpsCore:
      credsExternalSecret: *core-creds-secret
