# 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
  # Docker Repository used by RepositoryGenerator
  dockerHubRepository: docker.io
  # Additions for MongoDB****************************
  # If dockerHubRepository is changes the following entry needs
  # to be changed as well
  imageRegistry: docker.io
  imagePullSecrets:
    - '{{ include "common.names.namespace" . }}-docker-registry-key'
  # *************************************************

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

# Strimzi KafkaUser config
kafkaUser:
  acls:
    - name: multicloud
      type: group
      operations: [Read]
    - name: SDC-DISTR
      type: topic
      patternType: prefix
      operations: [Read, Write]

# 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: NodePort
  internalPort: 9015
  ports:
    - name: http
      port: 9015
      nodePort: '98'
      useNodePortExt: true
  annotations:
    msb.onap.org/service-info: |
      {{ if .Values.global.msbEnabled -}}[
        {
          "serviceName": "multicloud-k8s",
          "version": "v1",
          "url": "/",
          "protocol": "REST",
          "port": "{{ .Values.service.internalPort }}",
          "enable_ssl": false,
          "visualRange": "1"
        }
      ]{{ end }}

ingress:
  enabled: false
  service:
    - baseaddr: 'multicloud-k8s-api'
      name: 'multicloud-k8s'
      port: 9015

#Mongo chart overrides for k8splugin
mongodb:
  nameOverride: multicloud-k8s-mongo
  service:
    nameOverride: multicloud-k8s-mongo
    port: 27017
  auth:
    enabled: false
  resources:
    limits:
      cpu: "2"
      memory: "2Gi"
    requests:
      cpu: "500m"
      memory: "2Gi"

#etcd chart overrides for k8splugin
etcd:
  nameOverride: multicloud-k8s-etcd
  service:
    name: multicloud-k8s-etcd
    clientPortName: tcp-etcd-client
    peerPortName: tcp-etcd-server
  persistence:
    mountSubPath: multicloud-k8s/etcd/data
    enabled: true
  flavor: large
  resources:
    small:
      limits:
        cpu: "100m"
        memory: "300Mi"
      requests:
        cpu: "10m"
        memory: "70Mi"
    large:
      limits:
        cpu: "200m"
        memory: "1Gi"
      requests:
        cpu: "50m"
        memory: "300Mi"
    unlimited: {}


# 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

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
