#============LICENSE_START========================================================
#=================================================================================
# Copyright (c) 2018 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
  readinessRepository: oomk8s
  readinessImage: readiness-check:2.0.0
  loggingRepository: docker.elastic.co
  loggingImage: beats/filebeat:5.5.0

config:
  logstashServiceName: log-ls
  logstashPort: 5044
  # Addresses of ONAP components
  address:
    consul:
      host: consul-server
      port: 8500
    cm: dcae-cloudify-manager
    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
    ves:
      port: 30235
  # redisCaching is a string not a boolean!
  redisCaching: "false"

# postgres values--overriding defaults in the postgres subchart
postgres:
  nameOverride: dcae-db
  service:
    name: dcae-postgres
    name2: dcae-pg-primary
    name3: dcae-pg-replica
  container:
    name:
      primary: dcae-pg-primary
      replica: dcae-pg-replica
  config:
    pgPrimaryPassword: onapdemodb
    pgRootPassword: onapdemodb
  persistence:
    mountSubPath: dcae/data
    mountInitPath: dcae
  pgpool:
    nameOverride: dcae-pgpool
    service:
      name: dcae-pgpool
    credentials:
      pgpassword: onapdemodb
    container:
      name:
        primary: dcae-pgpool-primary
        replica: dcae-pgpool-replica

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

# DCAE component images to be deployed via Cloudify Manager
# Use to override default setting in blueprints
componentImages:
  datafile_collector: onap/org.onap.dcaegen2.collectors.datafile.datafile-app-server:1.1.1
  deployment_handler: onap/org.onap.dcaegen2.platform.deployment-handler:3.1.0
  holmes_rules: onap/holmes/rule-management:1.2.3
  holmes_engine: onap/holmes/engine-management:1.2.2
  policy_handler: onap/org.onap.dcaegen2.platform.policy-handler:4.6.0
  tca: onap/org.onap.dcaegen2.deployments.tca-cdap-container:1.1.0
  ves: onap/org.onap.dcaegen2.collectors.ves.vescollector:1.3.1
  snmptrap: onap/org.onap.dcaegen2.collectors.snmptrap:1.4.0
  prh: onap/org.onap.dcaegen2.services.prh.prh-app-server:1.2.0-SNAPSHOT
  hv_ves: onap/org.onap.dcaegen2.collectors.hv-ves.hv-collector-main:1.1.0-SNAPSHOT

# 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"
