#============LICENSE_START========================================================
#=================================================================================
# Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved.
# Modifications Copyright © 2018 Amdocs, Bell Canada
# ================================================================================
# 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.
# ============LICENSE_END=========================================================

#################################################################
# Global configuration defaults.
#################################################################
global:
  nodePortPrefix: 302
  nodePortPrefixExt: 304
  readinessImage: onap/oom/readiness:3.0.1
  loggingRepository: docker.elastic.co
  loggingImage: beats/filebeat:5.5.0
  tlsRepository: nexus3.onap.org:10001
  tlsImage: onap/org.onap.dcaegen2.deployments.tls-init-container:2.1.0
  envsubstImage: dibi/envsubst

secrets:
  - uid: pg-root-pass
    name: &pgRootPassSecretName '{{ include "common.release" . }}-dcae-bootstrap-pg-root-pass'
    type: password
    externalSecret: '{{ ternary "" (tpl (default "" .Values.postgres.config.pgRootPasswordExternalSecret) .) (hasSuffix "dcae-bootstrap-pg-root-pass" .Values.postgres.config.pgRootPasswordExternalSecret) }}'
    password: '{{ .Values.postgres.config.pgRootpassword }}'
    policy: generate
  - uid: 'cm-pass'
    type: password
    externalSecret: '{{ tpl (default "" .Values.config.cloudifyManagerPasswordExternalSecret) . }}'
    password: '{{ .Values.config.cloudifyManagerPassword }}'

config:
  logstashServiceName: log-ls
  logstashPort: 5044
  # Addresses of ONAP components
  address:
    consul:
      host: consul-server
      port: 8500
    consul_ui: consul-server-ui
    cm:
      host: dcae-cloudify-manager
      port: 443
      proto: https
    #Temporary assignment to avoid conflict
    #To be removed after bootstrap changes done to remove dashboard
    dashboard:
      port: 30473
      portSecure: 30474
    datafile_collector:
      port: 30223
      portSecure: 30262
    dmaap_dr_prov: dmaap-dr-prov
    message_router: message-router
    msb_discovery: msb-discovery
    msb_iag: msb-iag
    policy_pdp: pdp
    sdc: sdc-be
    snmptrap:
      port: 30470
    ves:
      port: 30235
      portSecure: 30417

# postgres values--overriding defaults in the postgres subchart
postgres:
  nameOverride: dcae-db
  service:
    name: dcae-postgres
    name2: dcae-pg-primary
    name3: dcae-pg-replica
  suffix: svc.cluster.local
  container:
    name:
      primary: dcae-pg-primary
      replica: dcae-pg-replica
  config:
    pgRootPasswordExternalSecret: *pgRootPassSecretName
  persistence:
    mountSubPath: dcae/data
    mountInitPath: dcae

mongo:
  nameOverride: dcae-mongo
  config:
    dbName: dcaecommondb
  service:
    name: dcae-mongohost
    internalPort: 27017
  nfsprovisionerPrefix: dcaemongo
  sdnctlPrefix: tcagen2
  persistence:
    mountSubPath: dcae/mongo/data
    enabled: true
  disableNfsProvisioner: true

# application image
repository: nexus3.onap.org:10001
image: onap/org.onap.dcaegen2.deployments.k8s-bootstrap-container:2.1.7
default_k8s_location: central

# DCAE component images to be deployed via Cloudify Manager
# Use to override default setting in blueprints
componentImages:
  holmes_rules: onap/holmes/rule-management:1.2.8
  holmes_engine: onap/holmes/engine-management:1.2.8
  tcagen2: onap/org.onap.dcaegen2.analytics.tca-gen2.dcae-analytics-tca-web:1.2.1
  ves: onap/org.onap.dcaegen2.collectors.ves.vescollector:1.7.8
  snmptrap: onap/org.onap.dcaegen2.collectors.snmptrap:1.4.0
  prh: onap/org.onap.dcaegen2.services.prh.prh-app-server:1.5.4
  hv_ves: onap/org.onap.dcaegen2.collectors.hv-ves.hv-collector-main:1.5.0

# Resource Limit flavor -By Default using small
flavor: small
# Segregation for Different environment (Small and Large)
resources:
  small:
    limits:
      cpu: 2
      memory: 2Gi
    requests:
      cpu: 1
      memory: 1Gi
  large:
    limits:
      cpu: 4
      memory: 4Gi
    requests:
      cpu: 2
      memory: 2Gi
  unlimited: {}
# Kubernetes namespace for components deployed via Cloudify manager
# If empty, use the common namespace
# dcae_ns: "onap"
