# 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
  persistence:
    enabled: true
  # Standard OOM
  pullPolicy: "Always"

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


flavor: small

#################################################################
# Application configuration defaults.
#################################################################
# application image

replicaCount: 1

binary: oauth

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-oauth
  type: ClusterIP
  ports:
    - name: api
      protocol: http
      port: 8140

ingress:
  enabled: false
  service:
    - baseaddr: "aafoauth"
      name: "aaf-oauth"
      port: 8140
  config:
    ssl: "redirect"

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