# Copyright © 2017 Amdocs, Bell Canada
# Modifications Copyright © 2018 AT&T, ZTE
#
# 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
  aafEnabled: true
  persistence: {}
  sdc_cassandra:
    #This flag allows SDC to instantiate its own cluster, serviceName
    #should be sdc-cs if this flag is enabled
    localCluster: false
    #The cassandra service name to connect to (default: shared cassandra service)
    serviceName: cassandra
    #Shared cassandra cluster replicaCount, should be changed if localCluster is enabled
    #to match with its own cluster replica
    replicaCount: 3
    clusterName: cassandra
    dataCenter: Pod

#################################################################
# AAF Part
#################################################################
certInitializer:
  nameOverride: sdc-onboarding-be-cert-init
  aafDeployFqi: deployer@people.osaaf.org
  aafDeployPass: demo123456!
  fqdn: sdc
  fqi: sdc@sdc.onap.org
  public_fqdn: sdc.onap.org
  cadi_longitude: "0.0"
  cadi_latitude: "0.0"
  app_ns: org.osaaf.aaf
  credsPath: /opt/app/osaaf/local
  addconfig: true
  keystoreFile: "org.onap.sdc.p12"
  truststoreFile: "org.onap.sdc.trust.jks"
  permission_user: 352070
  permission_group: 35953
  aaf_add_config: |
    echo "cadi_keystore_password_p12=$cadi_keystore_password_p12" > {{ .Values.credsPath }}/mycreds.prop
    echo "cadi_truststore_password=$cadi_truststore_password" >> {{ .Values.credsPath }}/mycreds.prop

#################################################################
# Application configuration defaults.
#################################################################
# application image
image: onap/sdc-onboard-backend:1.12.2
onboardingInitImage: onap/sdc-onboard-cassandra-init:1.12.2
pullPolicy: Always

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

config:
  javaOptions: "-Xmx1g -Xms1g"
  cassandraSslEnabled: "false"

#environment file
env:
  name: AUTO

# default number of instances
replicaCount: 1

nodeSelector: {}

affinity: {}

# probe configuration parameters
liveness:
  initialDelaySeconds: 1
  periodSeconds: 10
  timeoutSeconds: 15
  successThreshold: 1
  failureThreshold: 3
  # necessary to disable liveness probe when setting breakpoints
  # in debugger so K8s doesn't restart unresponsive container
  enabled: true

readiness:
  initialDelaySeconds: 1
  periodSeconds: 10
  timeoutSeconds: 15
  successThreshold: 1
  failureThreshold: 3

startup:
  initialDelaySeconds: 10
  periodSeconds: 10
  timeoutSeconds: 15
  successThreshold: 1
  failureThreshold: 60

service:
  type: ClusterIP
  name: sdc-onboarding-be
  portName: http
  internalPort: 8445
  externalPort: 8445

  internalPort2: 8081
  externalPort2: 8081

## 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)
  ##
  # storageClass: "-"
  accessMode: ReadWriteOnce
  size: 2Gi
  mountPath: /dockerdata-nfs
  mountSubPath: /sdc/sdc-cs/CS

##Certificate storage persistence
##This is temporary solution for SDC-1980
cert:
  certDir: /app/jetty/cert
  persistence:
    enabled: true
    size: 10Mi
    accessMode: ReadWriteOnce
    volumeReclaimPolicy: Retain
    mountSubPath: /sdc/onbaording/cert

securityContext:
  fsGroup: 35953
  runAsUser: 352070

ingress:
  enabled: false

# Resource Limit flavor -By Default using small
flavor: small
# Segregation for Different environment (Small and Large)
resources:
  small:
    limits:
      cpu: 500m
      memory: 2Gi
    requests:
      cpu: 40m
      memory: 1Gi
  large:
    limits:
      cpu: 1
      memory: 4Gi
    requests:
      cpu: 80m
      memory: 2Gi
  unlimited: {}

#Pods Service Account
serviceAccount:
  nameOverride: sdc-onboarding-be
  roles:
    - read

wait_for_job_container:
  containers:
    - '{{ include "common.name" . }}-job'

#Log configuration
log:
  path: /var/log/onap
logConfigMapNamePrefix: '{{ include "common.fullname" . }}'
