# 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:
  nodePortPrefix: 302
  centralizedLoggingEnabled: false
  persistence:
    mountPath: /dockerdata-nfs

#################################################################
# Secrets metaconfig
#################################################################
secrets:
  - uid: "db-root-pass"
    name: '{{ include "common.release" . }}-appc-db-root-pass'
    externalSecret: '{{ .Values.config.dbRootPassExternalSecret }}'
    type: password
    password: '{{ .Values.config.dbRootPass }}'
  - uid: 'appcdb-user-creds'
    name: '{{ include "common.release" . }}-appcdb-user-creds'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.appcdb.userCredentialsExternalSecret) . }}'
    login: '{{ .Values.config.appcdb.userName }}'
    password: '{{ .Values.config.appcdb.password }}'
  - uid: 'sdncdb-user-creds'
    name: '{{ include "common.release" . }}-sdncdb-user-creds'
    type: basicAuth
    externalSecret: '{{ tpl (default "" .Values.config.sdncdb.userCredentialsExternalSecret) . }}'
    login: '{{ .Values.config.sdncdb.userName }}'
    password: '{{ .Values.config.sdncdb.password }}'


#################################################################
# Application configuration defaults.
#################################################################
flavor: small
# application image
image: onap/appc-image:1.7.2
pullPolicy: Always

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

# log configuration
log:
  path: /var/log/onap

# application configuration
config:
#  dbRootPassExternalSecret: some secret
#  dbRootPass: password
  appcdb:
    # Warning: changing this config option may not work.
    # It seems that the DB name is hardcoded.
    dbName: appcctl
    userName: appcctl
    # password: appcctl
    # userCredsExternalSecret: some secret
  sdncdb:
    # Warning: changing this config option may not work.
    # It seems that the DB name is hardcoded.
    dbName: sdnctl
    userName: sdnctl
    # password: gamma
    # userCredsExternalSecret: some secret
  odlUid: 100
  odlGid: 101
  ansibleServiceName: appc-ansible-server
  ansiblePort: 8000
  mariadbGaleraSVCName: &appc-db appc-db
  mariadbGaleraContName: *appc-db
  enableAAF: true
  enableClustering: false
  configDir: /opt/onap/appc/data/properties
  dmaapTopic: SUCCESS
  dmaapTopicEnv: AUTO
  logstashServiceName: log-ls
  logstashPort: 5044
  odlPassword: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
  openStackType: OpenStackProvider
  openStackName: OpenStack
  openStackKeyStoneUrl: http://localhost:8181/apidoc/explorer/index.html
  openStackServiceTenantName: default
  openStackDomain: default
  openStackUserName: admin
  openStackEncryptedPassword: enc:LDEbHEAvTF1R
  odlUser: admin
  dmaapServiceUrl: http://localhost:8080/publish
  dmaapServiceUser: appc
  dmaapServicePassword: onapappc

appc-ansible-server:
  enabled: true
  service:
    name: appc-ansible-server
    internalPort: 8000
  config:
    mysqlServiceName: *appc-db

appc-cdt:
  enabled: true

mariadb-galera:
  nameOverride: *appc-db
  rootUser:
    externalSecret: '{{ include "common.release" . }}-appc-db-root-pass'
  service:
    name: *appc-db
  nfsprovisionerPrefix: appc
  sdnctlPrefix: appc
  persistence:
    mountSubPath: appc/data
    enabled: true
  disableNfsProvisioner: true
  serviceAccount:
    nameOverride: *appc-db
  replicaCount: 1

dgbuilder:
  nameOverride: appc-dgbuilder
  certInitializer:
    nameOverride: appc-dgbuilder-cert-initializer
  config:
    db:
      rootPasswordExternalSecret: '{{ include "common.release" . }}-appc-db-root-pass'
      userCredentialsExternalSecret: '{{ include "common.release" . }}-sdncdb-user-creds'
    dbPodName: *appc-db
    dbServiceName: *appc-db
  service:
    name: appc-dgbuilder
  serviceAccount:
    nameOverride: appc-dgbuilder
  ingress:
    enabled: false
    service:
      - baseaddr: "appc-dgbuilder"
        name: "appc-dgbuilder"
        port: 3000
    config:
      ssl: "redirect"

#passing value to cdt chart. value of nodePort3 will be same as appc.service.nodePort3.
appc-cdt:
  nodePort3: 11
# default number of instances
replicaCount: 1

nodeSelector: {}

affinity: {}

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

readiness:
  initialDelaySeconds: 300
  periodSeconds: 60

service:
  type: NodePort
  name: appc
  portName: appc

  internalPort: 8443
  externalPort: 8443
  nodePort: 30

  externalPort2: 1830
  nodePort2: 31
  clusterPort: 2550

  internalPort3: 9191
  externalPort3: 9090
  nodePort3: 11

## Persist data to a persitent volume
persistence:
  enabled: true

  ## A manually managed Persistent Volume and Claim
  ## Requires persistence.enabled: true
  ## If defined, PVC must be created manually before volume will be bound
  # existingClaim:
  volumeReclaimPolicy: Retain

  ## database data Persistent Volume Storage Class
  ## If defined, storageClassName: <storageClass>
  ## If set to "-", storageClassName: "", which disables dynamic provisioning
  ## If undefined (the default) or set to null, no storageClassName spec is
  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
  ##   GKE, AWS & OpenStack)
  accessMode: ReadWriteOnce
  size: 1Gi
  mountPath: /dockerdata-nfs
  mountSubPath: appc/mdsal
  mdsalPath: /opt/opendaylight/current/daexim

ingress:
  enabled: false
  service:
    - baseaddr: "appc.api"
      name: "appc"
      port: 8443
  config:
    ssl: "redirect"

# Configure resource requests and limits
# ref: http://kubernetes.io/docs/user-guide/compute-resources/
resources:
  small:
    limits:
      cpu: 2
      memory: 4Gi
    requests:
      cpu: 1
      memory: 2Gi
  large:
    limits:
      cpu: 4
      memory: 8Gi
    requests:
      cpu: 2
      memory: 4Gi
  unlimited: {}
