#########
##  ============LICENSE_START====================================================
##  org.onap.aaf
##  ===========================================================================
##  Copyright (c) 2017 AT&T Intellectual Property. All rights reserved.
##  ===========================================================================
##  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.
##  ============LICENSE_END====================================================
##
#
# Default values for aaf.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

global:
  common:
    namespace: "onap"

replicas:
  hello: 1

cadi:
  fqdn: "aaf-hello"
  port: 8130
  public_fqdn: "aaf.osaaf.org"
# DUBLIN ONLY - for M4 compatibility with Casablanca
  aaf_locator_name: "public.%NS.%N"
  aaf_locator_name_helm: "%NS.%N"
# EL ALTO and Beyond
#  aaf_locator_name: "%NS.%N"
#  aaf_locator_name_helm: "%CNS.%NS.%N"
  public_port: 30086
  fqi: "aaf@aaf.osaaf.org"
  app_ns: "org.osaaf.aaf"
  cadi_latitude: 38.0
  cadi_longitude: -72.0
  aaf_env: "DEV"

persistence: {}

image:
  # When using locally built Docker Container, set Repository to ""
  repository: ""
  # When using Docker Repo, add, and include trailing "/"
  # repository: nexus3.onap.org:10003/
  # repository: localhost:5000/
  version: 2.1.11-SNAPSHOT

resources: {}
  # We usually recommend not to specify default resources and to leave this as a conscious
  # choice for the user. This also increases chances charts run on environments with little
  # resources, such as Minikube. If you do want to specify resources, uncomment the following
  # lines, adjust them as necessary, and remove the curly braces after 'resources:'.
  # limits:
  #  cpu: 100m
  #  memory: 128Mi
  # requests:
  #  cpu: 100m
  #  memory: 128Mi

nodeSelector: {}

tolerations: []

affinity: {}
