#============LICENSE_START========================================================
# ================================================================================
# Copyright (c) 2018-2020 AT&T Intellectual Property. All rights reserved.
# Modifications Copyright © 2018 Amdocs, Bell Canada
# Copyright (c) 2020-2021 J. F. Lucas.  All rights reserved.
# ================================================================================
# 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
  persistence: {}
  tlsImage: onap/org.onap.dcaegen2.deployments.tls-init-container:2.1.0
  consulLoaderImage: onap/org.onap.dcaegen2.deployments.consul-loader-container:1.1.1
  repositoryCred:
    user: docker
    password: docker

cmpv2issuer:
  name: cmpv2-issuer-onap

secrets:
  - uid: 'cm-pass'
    type: password
    externalSecret: '{{ tpl (default "" .Values.config.cloudifyManagerPasswordExternalSecret) . }}'
    password: '{{ .Values.config.cloudifyManagerPassword }}'
    policy: required

config:
  cloudifyManagerPassword: "override me"
  logstashServiceName: log-ls
  logstashPort: 5044
  # Addresses of other ONAP entities
  address:
    consul:
      host: consul-server
      port: 8500

#################################################################
# Application configuration defaults.
#################################################################
# application image
image: onap/org.onap.dcaegen2.deployments.cm-container:4.6.1
pullPolicy: Always

# name of shared ConfigMap with kubeconfig for multiple clusters
multisiteConfigMapName: multisite-kubeconfig-configmap

# image for init container to initialize shared ConfigMap
multisiteInitImage: onap/org.onap.dcaegen2.deployments.multisite-init-container:1.0.0

# image for cleanup job container
cleanupImage: onap/org.onap.dcaegen2.deployments.dcae-k8s-cleanup-container:1.0.0

# default location for k8s deployments via Cloudify
default_k8s_location: central

# probe configuration parameters
liveness:
  initialDelaySeconds: 10
  periodSeconds: 10
  timeoutSeconds: 5
  # necessary to disable liveness probe when setting breakpoints
  # in debugger so K8s doesn't restart unresponsive container
  # liveness not desirable for Cloudify Manager container
  enabled: false

readiness:
  initialDelaySeconds: 60
  # In some environments we see CM coming up
  # properly but readiness probe timing out.
  # Increasing the timeout and adjusting the
  # period so it's longer than the timeout.
  # (DCAEGEN2-2465)
  periodSeconds: 30
  timeoutSeconds: 10

service:
  type: ClusterIP
  name: dcae-cloudify-manager
  externalPort: 443
  internalPort: 443

# Resource Limit flavor -By Default using small
flavor: small
# Segregation for Different environment (Small and Large)
# Due to memory issues in ONAP integration environment,
# we've increased the memory amounts for both flavors.
resources:
  small:
    limits:
      cpu: 2
      memory: 4Gi
    requests:
      cpu: 1
      memory: 2Gi
  large:
    limits:
      cpu: 4
      memory: 8Gi
    requests:
      cpu: 2
      memory: 4Gi
  unlimited: {}
# Kubernetes namespace for components deployed via Cloudify manager
# If empty, use the common namespace
# dcae_ns: "dcae"

# Parameters for persistent storage
persistence:
  enabled: true
  accessMode: ReadWriteOnce
  size: 4Gi
  mountPath: /dockerdata-nfs
  mountSubPath: dcae-cm/data
  volumeReclaimPolicy: Retain

#Pods Service Account
serviceAccount:
  nameOverride: dcae-cloudify-manager
  roles:
    - create

