# 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
  ncmpCmAvcSubscriptionTopic:
    name: cm-avc-subscription
    retentionMs: 7200000
    consumer:
      groupId: ncmp-group
  ncmpCmEventsTopic:
    name: cm-events
    retentionMs: 7200000
    consumer:
      groupId: ncmp-group
  dmiCmAvcSubscriptionTopic:
    name: ncmp-dmi-cm-avc-subscription-ncmp-dmi-plugin
    retentionMs: 7200000
    consumer:
      groupId: ncmp-group
  dmiCmAvcSubscriptionResponseTopic:
    name: dmi-ncmp-cm-avc-subscription
    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
