# 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
  readinessRepository: oomk8s
  readinessImage: readiness-check:2.0.2
  loggingRepository: docker.elastic.co
  loggingImage: beats/filebeat:5.5.0

#################################################################
# Application configuration defaults.
#################################################################
# application image
repository: nexus3.onap.org:10001
image: onap/workflow-backend:1.5.2
configInitImage: onap/workflow-init:1.5.2
pullPolicy: Always

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

initJob:
  enabled: true

config:
  javaOptions: "-Xmx1536m -Xms1536m"
  cassandraAuthenticationEnabled: true
  cassandraThriftClientPort: 9160
  cassandraClientPort: 9042
  sdcProtocol: HTTPS
  sdcEndpoint: sdc-be:8443
  sdcExternalUser: workflow
  sdcExternalUserPassword: Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
  serverSSLEnabled: false
  serverSSLKeyStoreType: jks
  serverSSLKeyStorePath: etc/org.onap.sdc.p12
  serverSSLKeyPassword: "!ppJ.JvWn0hGh)oVF]([Kv)^"
  cassandraSSLEnabled: false
  cassandraTrustStorePath: /etc/cassandra-client-truststore/truststore
  cassandraTrustStorePassword: password

# default number of instances
replicaCount: 1

nodeSelector: {}

affinity: {}

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

readiness:
  initialDelaySeconds: 60
  periodSeconds: 10

service:
  type: NodePort
  internalPort: 8080
  externalPort: 8080
  internalPort2: 8443
  externalPort2: 8443
  portName: sdc-wfd-be
  nodePort: "57"

ingress:
  enabled: false
  service:
    - baseaddr: "sdcwfdbe"
      name: "sdc-wfd-be"
      port: 8443
  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
