#########
##  ============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"
  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: {}
