#########
##  ============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:
  persistence:
    enabled: "true"

replicas:
  hello: 1

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/

service:
  agentImage: onap/aaf/aaf_agent:2.1.17-SNAPSHOT
  image: onap/aaf/aaf_hello:2.1.17-SNAPSHOT
  app_ns: "org.osaaf.aaf"
  fqi: "aaf@aaf.osaaf.org"
  fqdn: "aaf-hello"
  public_fqdn: "aaf.osaaf.org"
  port: "8130"
  public_port: "30086"
  cadi_latitude: "38.0"
  cadi_longitude: "-72.0"
  deploy_fqi: "deployer@people.osaaf.org"

persistence: 
  # Where on local disk to store
  mountPath: "/data/aaf/hello"
  volumeReclaimPolicy: Retain
  accessMode: ReadWriteOnce
  size: 10M
  storageClass: "manual"

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: {}
