# Copyright © 2018 Amdocs, Bell Canada
# Modifications Copyright © 2018-2019 AT&T
# Modifications Copyright © 2020 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 configuration defaults.
#################################################################
global:
  nodePortPrefix: 302
  tlsRepository: nexus3.onap.org:10001
  tlsImage: onap/org.onap.dcaegen2.deployments.tls-init-container:2.1.0
  consulLoaderRepository: nexus3.onap.org:10001
  consulLoaderImage: onap/org.onap.dcaegen2.deployments.consul-loader-container:1.0.0
  busyboxRepository: docker.io
  busyboxImage: library/busybox:1.30

#################################################################
# Secrets metaconfig
#################################################################
secrets:
- name: &cmPassSecretName '{{ include "common.release" . }}-dcaegen2-cm-pass'
  type: password
  externalSecret: '{{ tpl (default "" .Values.config.cloudifyManagerPasswordExternalSecret) . }}'
  password: '{{ .Values.config.cloudifyManagerPassword }}'

config: {}

# To work around DCAEGEN2-2450, set password strength to "basic"
# to ensure password contains only alphanumerics
passwordStrengthOverride: basic

# Enable all DCAE components by default
dcae-bootstrap:
  enabled: true
  config:
    cloudifyManagerPasswordExternalSecret: *cmPassSecretName
dcae-cloudify-manager:
  enabled: true
  config:
    cloudifyManagerPasswordExternalSecret: *cmPassSecretName
dcae-config-binding-service:
  enabled: true
dcae-dashboard:
  enabled: true
  config:
    cloudifyManagerPasswordExternalSecret: *cmPassSecretName
dcae-deployment-handler:
  enabled: true
  config:
    cloudifyManagerPasswordExternalSecret: *cmPassSecretName
dcae-healthcheck:
  enabled: true
dcae-inventory-api:
  enabled: true
dcae-policy-handler:
  enabled: true
  config:
    cloudifyManagerPasswordExternalSecret: *cmPassSecretName
dcae-servicechange-handler:
  enabled: true
