# 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: docker.io
  ubuntuInitImage: oomk8s/ubuntu-init:2.0.0
  # Logging image
  loggingRepository: docker.elastic.co
  loggingImage: beats/filebeat:5.5.0
  # BusyBox image
  busyboxRepository: docker.io
  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
pullPolicy: Always

replicaCount: 1

binary: fs

sequence_order:
  - service
  - locate

nodeSelector: {}

affinity: {}

# probe configuration parameters
liveness:
  initialDelaySeconds: 120
  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-fs
  type: ClusterIP
  ports:
    - name: api
      port: 8096
      protocol: http

ingress:
  enabled: false
  service:
    - baseaddr: "aaffs"
      name: "aaf-fs"
      port: 8096
  config:
    ssl: "none"

# Configure resource requests and limits
resources:
  small:
    limits:
      cpu: 200m
      memory: 110Mi
    requests:
      cpu: 1m
      memory: 80Mi
  large:
    limits:
      cpu: 500m
      memory: 700Mi
    requests:
      cpu: 100m
      memory: 400Mi
  unlimited: {}
