# Copyright 2019 Intel Corporation, Inc
#
# 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:
  nodePortPrefixExt: 304
  persistence: {}
  artifactImage: onap/multicloud/framework-artifactbroker:1.9.0
  multicloudK8sKafkaUser: mc-k8s-sdc-list-kafka-user

#################################################################
# Secrets metaconfig
#################################################################
secrets:
  - uid: multicloud-k8s-sdc-kafka-secret
    externalSecret: '{{ tpl (default "" .Values.config.jaasConfExternalSecret) . }}'
    type: genericKV
    envs:
      - name: sasl.jaas.config
        value: '{{ .Values.config.someConfig }}'
        policy: generate

#################################################################
# Application configuration defaults.
#################################################################
# application image
image: onap/multicloud/k8s:0.10.1
pullPolicy: Always

config:
  someConfig: blah
  kafka:
    securityProtocol: SASL_PLAINTEXT
    saslMechanism: SCRAM-SHA-512
    authType: simple
    sdcTopic:
      pattern: SDC-DIST
      consumerGroup: multicloud
      clientId: multicloud-k8s

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

# application configuration is via config files

# default number of instances
replicaCount: 1

nodeSelector: {}

affinity: {}

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

readiness:
  initialDelaySeconds: 10
  periodSeconds: 30

service:
  type: ClusterIP
  name: multicloud-k8s
  portName: http
  internalPort: 9015
  externalPort: 9015
  nodePort: 98

#Mongo chart overrides for k8splugin
mongo:
  nameOverride: multicloud-k8s-mongo
  service:
    name: multicloud-k8s-mongo
    internalPort: 27017
  nfsprovisionerPrefix: multicloud-k8s
  sdnctlPrefix: multicloud-k8s
  persistence:
    mountSubPath: multicloud-k8s/mongo/data
    enabled: true
  disableNfsProvisioner: true
  flavor: &storage_flavor large
  resources: &storage_resources
    small:
      limits:
        cpu: 100m
        memory: 300Mi
      requests:
        cpu: 10m
        memory: 75Mi
    large:
      limits:
        cpu: 200m
        memory: 1Gi
      requests:
        cpu: 50m
        memory: 300Mi
    unlimited: {}

#etcd chart overrides for k8splugin
etcd:
  nameOverride: multicloud-k8s-etcd
  service:
    name: multicloud-k8s-etcd
  persistence:
    mountSubPath: multicloud-k8s/etcd/data
    enabled: true
  flavor: *storage_flavor
  resources: *storage_resources

# No persistence right now as we rely on Mongo to handle that
persistence:
  enabled: false
  volumeReclaimPolicy: Retain
  accessMode: ReadWriteOnce
  size: 1Gi
  mountPath: /dockerdata-nfs
  mountSubPath: multicloud-k8s/data

ingress:
  enabled: false

artifactbroker:
  internalPort: 9014

# Configure resource requests and limits
flavor: large
resources:
  small:
    limits:
      cpu: 200m
      memory: 500Mi
    requests:
      cpu: 10m
      memory: 10Mi
  large:
    limits:
      cpu: 400m
      memory: 1Gi
    requests:
      cpu: 10m
      memory: 100Mi
  unlimited: {}

#Pods Service Account
serviceAccount:
  nameOverride: multicloud-k8s
  roles:
    - read
