# Copyright © 2017 Amdocs, AT&T, Bell Canada, VMware
#
# 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 configuration defaults.
#################################################################
global:
  nodePortPrefix: 302
  readinessRepository: oomk8s
  readinessImage: readiness-check:2.0.0
  loggingRepository: docker.elastic.co
  loggingImage: beats/filebeat:5.5.0
  persistence: {}
#################################################################
# Application configuration defaults.
#################################################################
# application image
repository: nexus3.onap.org:10001
image: onap/optf-osdf:2.0.3
pullPolicy: Always

# flag to enable debugging - application support required
debugEnabled: false

# application configuration
config:
  msbgateway: msb-iag
  msbPort: 80
  placementVersioningEnabled: True
  # Placement API latest version numbers to be set in HTTP header
  placementMajorVersion: "1"
  placementMinorVersion: "0"
  placementPatchVersion: "0"
  # Placement API default version numbers to be set in HTTP header
  placementDefaultMajorVersion: "1"
  placementDefaultMinorVersion: "0"
  placementDefaultPatchVersion: "0"

  # Url and credentials for Conductor.
  conductorUrl: https://oof-has-api:8091/v1/plans/
  conductorPingWaitTime: 60
  conductorMaxRetries: 30
  # versions to be set in HTTP header
  conductorMinorVersion: 0
  # Url and credentials for the Policy Platform
  policyPlatformUrl: https://policy-xacml-pdp:6969/policy/pdpx/v1/decision  # Policy Dev platform URL
  policyPlatformEnv: TEST # Environment for policy platform
  # Credentials for the message reader - A placeholder.
  messageReaderHosts: NA
  messageReaderTopic: NA
  # Credentials for the SDC interface - A placeholder.
  sdcUrl: NA
  sdcONAPInstanceID: NA
  #AAF Authentication
  is_aaf_enabled: False
  aaf_cache_expiry_mins: 5
  aaf_url: https://aaf-service:8100
  aaf_user_roles:
      - '/placement:org.onap.oof.access|*|read ALL'
      - '/pci:org.onap.oof.access|*|read ALL'
  # Secret Management Service from AAF
  aaf_sms_url: https://aaf-sms
  aaf_sms_port: 10443
  aaf_sms_timeout: 30
  secret_domain: osdf
  aaf_ca_certs: /opt/app/ssl_cert/aaf_root_ca.cer
  # config db api
  configDbUrl: http://config.db.url:8080
  configDbGetCellListUrl: 'SDNCConfigDBAPI/getCellList'
  configDbGetNbrListUrl: 'SDNCConfigDBAPI/getNbrList'
# default number of instances
replicaCount: 1
nodeSelector: {}
affinity: {}
# Resource Limit flavor -By Default using small
flavor: small
# Segregation for Different environment (Small and Large)
resources:
  small:
    limits:
      memory: 2Gi
      cpu: 1000m
    requests:
      memory: 1Gi
      cpu: 500m
  large:
    limits:
      memory: 4Gi
      cpu: 2000m
    requests:
      memory: 2Gi
      cpu: 1000m
  unlimited: {}
# probe configuration parameters
liveness:
  initialDelaySeconds: 10
  periodSeconds: 10
  # necessary to disable liveness probe when setting breakpoints
  # in debugger so K8s doesn't restart unresponsive container
  enabled: true
readiness:
  initialDelaySeconds: 10
  periodSeconds: 10
service:
  type: NodePort
  name: oof-osdf
  externalPort: 8698
  internalPort: 8699
  nodePort: 48
ingress:
  enabled: false
  service:
    - baseaddr: "oofosdf"
      name: "oof-osdf"
      port: 8698
  config:
    ssl: "redirect"
