# Copyright © 2018 AT&T, 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.

# Global configuration default values that can be inherited by
# all subcharts.
#################################################################
global:
  # Change to an unused port prefix range to prevent port conflicts
  # with other instances running within the same k8s cluster
  nodePortPrefix: 302

  # image repositories
  repository: nexus3.onap.org:10001

  # readiness check
  readinessImage: onap/oom/readiness:3.0.1

  # logging agent
  loggingRepository: docker.elastic.co
  loggingImage: beats/filebeat:5.5.0

  # envsusbt
  envsubstImage: dibi/envsubst

  # image pull policy
  pullPolicy: Always

  # default mount path root directory referenced
  # by persistent volumes and log files
  persistence:
    mountPath: /dockerdata-nfs

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

#################################################################
# Secrets metaconfig
#################################################################
secrets:
  - uid: 'db-root-password'
    type: password
    externalSecret: '{{ tpl (default "" .Values.config.db.rootPasswordExternalSecret) . }}'
    password: '{{ .Values.config.db.rootPassword }}'
  - uid: 'db-user-creds'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.db.userCredentialsExternalSecret) . }}'
    login: '{{ .Values.config.db.userName }}'
    password: '{{ .Values.config.db.userPassword }}'
  - uid: 'http-user-creds'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.httpCredsExternalSecret) . }}'
    login: '{{ .Values.config.httpUser }}'
    password: '{{ .Values.config.dgUserPassword }}'
  - uid: 'admin-creds'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.adminCredsExternalSecret) . }}'
    login: '{{ .Values.config.adminUser }}'
    password: '{{ .Values.config.dgUserPassword }}'
  - uid: 'node-creds'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.nodeCredsExternalSecret) . }}'
    login: '{{ .Values.config.nodeUser }}'
    password: '{{ .Values.config.dgUserPassword }}'
  - uid: 'restconf-creds'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.restconfCredsExternalSecret) . }}'
    login: '{{ .Values.config.restconfUser }}'
    password: '{{ .Values.config.restconfPassword }}'

#################################################################
# Application configuration defaults.
#################################################################
# application image
repository: nexus3.onap.org:10001
image: onap/ccsdk-dgbuilder-image:0.7.4
pullPolicy: Always

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

# application configuration
config:
  db:
    dbName: sdnctl
    # unused for now to preserve the API
    rootPassword: openECOMP1.0
    # rootPasswordExternalSecret: some secret
    userName: sdnctl
    # unused for now to preserve the API
    userPassword: gamma
    # userCredentialsExternalSecret: some secret
  httpUser: dguser
  # unused for now to preserve the API
  httpPassword: cc03e747a6afbbcbf8be7668acfebee5
  # httpCredsExternalSecret: some secret
  adminUser: dguser
  # unused for now to preserve the API
  adminPassword: cc03e747a6afbbcbf8be7668acfebee5
  # adminCredsExternalSecret: some secret
  nodeUser: dguser
  # unused for now to preserve the API
  nodePassword: cc03e747a6afbbcbf8be7668acfebee5
  # nodeCredsExternalSecret: some secret
  restconfUser: admin
  # unused for now to preserve the API
  restconfPassword: admin
  # restconfCredsExternalSecret: some secret

  dbPodName: mysql-db
  dbServiceName: sdnc-dbhost
  # MD5 hash of dguser password ( default: test123 )
  dgUserPassword: cc03e747a6afbbcbf8be7668acfebee5

# default number of instances
replicaCount: 1

nodeSelector: {}

affinity: {}

# probe configuration parameters
liveness:
  initialDelaySeconds: 10
  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: dgbuilder
  portName: dgbuilder
  externalPort: 3000
  internalPort: 3100
  nodePort: 28

ingress:
  enabled: false
  service:
    - baseaddr: "dgbuilder"
      name: "dgbuilder"
      port: 3000
  config:
    ssl: "redirect"

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:
#  limits:
#    cpu: 2
#    memory: 4Gi
#  requests:
#    cpu: 2
#    memory: 4Gi
