# Copyright © 2017 Amdocs, Bell Canada
# Modifications © 2020 AT&T, Orange
#
# 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:
  nodePortPrefix: 302
  # Readiness image
  readinessImage: onap/oom/readiness:3.0.1
  # Ubuntu Init image
  ubuntuInitRepository: registry.hub.docker.com
  ubuntuInitImage: oomk8s/ubuntu-init:2.0.0
  # Logging image
  loggingRepository: docker.elastic.co
  loggingImage: beats/filebeat:5.5.0
  # BusyBox image
  busyboxRepository: registry.hub.docker.com
  busyboxImage: library/busybox:1.31
  persistence:
    enabled: true
  # Standard OOM
  pullPolicy: "Always"
  repository: "nexus3.onap.org:10001"

  aaf:
    config:
      image: onap/aaf/aaf_config:2.1.23


flavor: small

#################################################################
# Application configuration defaults.
#################################################################
# application image
replicaCount: 1

binary: cm

sequence_order:
  - service
  - locate

nodeSelector: {}

affinity: {}

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

readiness:
  initialDelaySeconds: 5
  periodSeconds: 10
  port: api

service:
  name: aaf-cm
  type: ClusterIP
  ports:
    - name: api
      protocol: http
      port: 8150

ingress:
  enabled: false
  service:
    - baseaddr: "aafcm"
      name: "aaf-cm"
      port: 8150
  config:
    ssl: "redirect"

# Configure resource requests and limits
resources:
  small:
    limits:
      cpu: 400m
      memory: 300Mi
    requests:
      cpu: 1m
      memory: 200Mi
  large:
    limits:
      cpu: 400m
      memory: 1Gi
    requests:
      cpu: 40m
      memory: 600Mi
  unlimited: {}
