# Copyright © 2017 Amdocs, Bell Canada
# Modifications Copyright © 2018 AT&T
#
# 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: # global defaults
  nodePortPrefix: 302
  readinessRepository: oomk8s
  readinessImage: readiness-check:2.0.0
  loggingRepository: docker.elastic.co
  loggingImage: beats/filebeat:5.5.0

subChartsOnly:
  enabled: true

flavor: small

# application image
repository: nexus3.onap.org:10001
image: onap/clamp:4.0-STAGING-latest
pullPolicy: Always

# flag to enable debugging - application support required
debugEnabled: false

#################################################################
# Application configuration defaults.
#################################################################
config:
  log:
    logstashServiceName: log-ls
    logstashPort: 5044
  mysqlPassword: strong_pitchou
  dataRootDir: /dockerdata-nfs
  springApplicationJson: >
    {
        "spring.datasource.cldsdb.url": "jdbc:mariadb:sequential://clampdb.{{ include "common.namespace" . }}:3306/cldsdb4?autoReconnect=true&connectTimeout=10000&socketTimeout=10000&retriesAllDown=3",
        "clamp.config.sdc.catalog.url": "http://sdc-be.{{ include "common.namespace" . }}:8080/sdc/v1/catalog/",
        "clamp.config.sdc.hostUrl": "http://sdc-be.{{ include "common.namespace" . }}:8080/",
        "clamp.config.sdc.serviceUrl": "http://sdc-be.{{ include "common.namespace" . }}:8080/sdc/v1/catalog/services",
        "clamp.config.sdc.serviceUsername": "clamp",
        "clamp.config.sdc.servicePassword": "b7acccda32b98c5bb7acccda32b98c5b05D511BD6D93626E90D18E9D24D9B78CD34C7EE8012F0A189A28763E82271E50A5D4EC10C7D93E06E0A2D27CAE66B981",
        "clamp.config.files.sdcController": "file:/opt/clamp/sdc-controllers-config.json",
        "clamp.config.dcae.inventory.url": "http://inventory.{{ include "common.namespace" . }}:8080",
        "clamp.config.dcae.dispatcher.url": "https4://deployment-handler.{{ include "common.namespace" . }}:8443",
        "clamp.config.dcae.dispatcher.userName":"test",
        "clamp.config.dcae.dispatcher.password":"test",
        "clamp.config.policy.api.url": "http4://policy-api.{{ include "common.namespace" . }}:6969",
        "clamp.config.policy.api.userName": "healthcheck",
        "clamp.config.policy.api.password": "zb!XztG34",
        "clamp.config.policy.pap.url": "http4://policy-pap.{{ include "common.namespace" . }}:6969",
        "clamp.config.policy.pap.userName": "healthcheck",
        "clamp.config.policy.pap.password": "zb!XztG34",
        "clamp.config.policy.pdpUrl1": "https://pdp.{{ include "common.namespace" . }}:8081/pdp/ , testpdp, alpha123",
        "clamp.config.policy.pdpUrl2": "https://pdp.{{ include "common.namespace" . }}:8081/pdp/ , testpdp, alpha123",
        "clamp.config.policy.papUrl": "https://pap.{{ include "common.namespace" . }}:9091/pap/ , testpap, alpha123",
        "clamp.config.policy.clientKey": "dGVzdA==",
        "clamp.config.cadi.aafLocateUrl": "https://aaf-locate.{{ include "common.namespace" . }}:8095",
        "com.att.eelf.logging.path": "/opt/clamp",
        "com.att.eelf.logging.file": "logback.xml"
    }

# subchart configuration
mariadb:
  nameOverride: clampdb


# default number of instances
replicaCount: 1

nodeSelector: {}

affinity: {}

# probe configuration parameters
liveness:
  initialDelaySeconds: 120
  periodSeconds: 10
  # necessary to disable liveness probe when setting breakpoints
  # in debugger so K8s doesn't restart unresponsive container
  enabled: true

readiness:
  initialDelaySeconds: 10
  periodSeconds: 10


service:
  type: NodePort
  name: clamp
  portName: clamp
  internalPort: 8443
  externalPort: 8443
  nodePort: 58
  # as of 20180904 port 58 is reserved for clamp from log/logdemonode
  # see https://wiki.onap.org/display/DW/OOM+NodePort+List


ingress:
  enabled: false

#resources: {}
  # We usually recommend not to specify default resources and to leave this as a conscious
  # choice for the user. This also increases chances charts run on environments with little
  # resources, such as Minikube. If you do want to specify resources, uncomment the following
  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
  #
  # Example:
  # Configure resource requests and limits
  # ref: http://kubernetes.io/docs/user-guide/compute-resources/
  # Minimum memory for development is 2 CPU cores and 4GB memory
  # Minimum memory for production is 4 CPU cores and 8GB memory
resources:
  small:
    limits:
      cpu: 1
      memory: 1.2Gi
    requests:
      cpu: 10m
      memory: 800Mi
  large:
    limits:
      cpu: 1
      memory: 1.2Gi
    requests:
      cpu: 10m
      memory: 800Mi
  unlimited: {}
