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

#################################################################
# Application configuration defaults.
#################################################################
# application image
image: onap/optf-osdf:3.0.8
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:
    http: http://oof-has-api:8091/v1/plans/
  conductorPingWaitTime: 10
  conductorMaxRetries: 30
  # versions to be set in HTTP header
  conductorMinorVersion: 0
  # Url and credentials for the Policy Platform
  policyPlatformUrl:
    http: http://policy-xacml-pdp:8080/policy/pdpx/v1/decision
  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

  configClientType: cps

  # config db api
  configDbUrl: http://configdb:8080
  configDbGetCellListUrl: 'api/sdnc-config-db/v3/getCellList'
  configDbGetNbrListUrl: 'api/sdnc-config-db/v3/getNbrList'

  # cps api
  cps:
    url: cps-tbdmt:8080/execute
    cellListUrl: 'ran-network/getCellList'
    nbrListUrl: 'ran-network/getNbrList'

  #aai api
  aaiUrl:
    http: http://aai:80
  aaiGetLinksUrl: /aai/v16/network/logical-links
  aaiServiceInstanceUrl : /aai/v20/nodes/service-instances/service-instance/
  aaiGetControllersUrl: /aai/v19/external-system/esr-thirdparty-sdnc-list
  controllerQueryUrl: /aai/v19/query?format=resource
  aaiGetInterDomainLinksUrl: /aai/v19/network/logical-links?link-type=inter-domain&operational-status=up
  #des api
  desUrl:
    http: http://des.url:8080
  desApiPath: /datalake/v1/exposure/
  desUsername: ''
  desPassword: ''
# 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:
      cpu: "1"
      memory: "1Gi"
    requests:
      cpu: "0.5"
      memory: "1Gi"
  large:
    limits:
      cpu: "2"
      memory: "2Gi"
    requests:
      cpu: "1"
      memory: "2Gi"

  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
  internalPort: 8699
  ports:
    - name: http
      port: 8698
      nodePort: '48'
ingress:
  enabled: false
  service:
    - baseaddr: "oof-osdf-api"
      name: "oof-osdf"
      port: 8698
  config:
    ssl: "redirect"

#component overrides

oof-has:
  enabled: true

readinessCheck:
  wait_for:
    - policy-xacml-pdp

#Pods Service Account
serviceAccount:
  nameOverride: oof
  roles:
    - read
