# ============= LICENSE_START ================================================
# ============================================================================
# Copyright (C) 2021-2022 Wipro Limited.
# Copyright (c) 2022-2023 J. F. Lucas. 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 ==================================================

#################################################################
# Global Configuration Defaults.
#################################################################
global:
  nodePortPrefix: 302
  nodePortPrefixExt: 304
  centralizedLoggingEnabled: true

#################################################################
# Filebeat Configuration Defaults.
#################################################################
filebeatConfig:
  logstashServiceName: log-ls
  logstashPort: 5044

#################################################################
# Secrets Configuration.
#################################################################
secrets:
  - uid: &cpsCredsUID cpscreds
    type: basicAuth
    login: '{{ .Values.cpsCreds.identity }}'
    password: '{{ .Values.cpsCreds.password }}'
    passwordPolicy: required
  - uid: &pgUserCredsSecretUid pg-user-creds
    name: &pgUserCredsSecretName '{{ include "common.release" . }}-sonhms-pg-user-creds'
    type: basicAuth
    externalSecret: '{{ ternary "" (tpl (default "" .Values.postgres.config.pgUserExternalSecret) .) (hasSuffix "sonhms-pg-user-creds" .Values.postgres.config.pgUserExternalSecret) }}'
    login: '{{ .Values.postgres.config.pgUserName }}'
    password: '{{ .Values.postgres.config.pgUserPassword }}'
    passwordPolicy: generate

#################################################################
# Application Configuration Defaults.
#################################################################
# Application Image
image: onap/org.onap.dcaegen2.services.son-handler:2.1.11
pullPolicy: Always

# Log directory where logging sidecar should look for log files
# if path is set to null sidecar won't be deployed in spite of
# global.centralizedLoggingEnabled setting.
log:
  path: /var/log/ONAP/dcaegen2/services/sonhms
logConfigMapNamePrefix: '{{ include "common.fullname" . }}'

# Optional Policy configuration properties
# if present, policy-sync side car will be deployed
#dcaePolicySyncImage: onap/org.onap.dcaegen2.deployments.dcae-services-policy-sync:1.0.1
#policies:
#  policyID: |
#    '["com.Config_PCIMS_CONFIG_POLICY"]'

# Dependencies
readinessCheck:
  wait_for:
    - &postgresName dcae-sonhms-postgres
    - message-router

# Probe Configuration
readiness:
  initialDelaySeconds: 10
  periodSeconds: 15
  timeoutSeconds: 1
  path: /healthcheck
  scheme: HTTP
  port: 8080

# Service Configuration
service:
  type: ClusterIP
  name: dcae-son-handler
  ports:
    - name: http
      port: 8080
      port_protocol: http

# Credentials
cpsCreds:
  identity: cps
  password: cpsr0cks!

credentials:
- name: CPS_IDENTITY
  uid: *cpsCredsUID
  key: login
- name: CPS_PASSWORD
  uid: *cpsCredsUID
  key: password
- name: PG_USERNAME
  uid:  *pgUserCredsSecretUid
  key: login
- name: PG_PASSWORD
  uid: *pgUserCredsSecretUid
  key: password


# Initial Application Configuration
applicationConfig:
  postgres.host: &dcaeSonhmsPgPrimary dcae-sonhms-pg-primary
  postgres.port: 5432
  postgres.username: ${PG_USERNAME}
  postgres.password: ${PG_PASSWORD}
  cps.username: ${CPS_IDENTITY}
  cps.password: ${CPS_PASSWORD}
  sonhandler.pollingInterval: 20
  sonhandler.pollingTimeout: 60
  cbsPollingInterval: 60
  sonhandler.numSolutions: 5
  sonhandler.minCollision: 5
  sonhandler.minConfusion: 5
  sonhandler.maximumClusters: 5
  sonhandler.badThreshold: 50
  sonhandler.poorThreshold: 70
  sonhandler.namespace: onap
  sonhandler.sourceId: SONHMS
  sonhandler.dmaap.server: ["message-router"]
  sonhandler.bufferTime: 60
  sonhandler.cg: sonhms-cg
  sonhandler.cid: sonhms-cid
  sonhandler.clientType: cps
  sonhandler.nearRtricUrl: "https://a1-policy-management:30294/a1-policy/v2/policies"
  cps.service.url: http://cps-tbdmt:8080
  cps.get.celldata: execute/cps-ran-schemaset/get-cell-data
  cps.get.nbr.list.url: execute/cps-ran-schemaset/get-nbr-list
  cps.get.pci.url: execute/ran-network-schemaset/get-pci
  cps.get.pnf.url: execute/ran-network-schemaset/get-pnf
  sonhandler.configDb.service: http://configdb:8080
  sonhandler.oof.service: https://oof-osdf:8698
  sonhandler.oof.endpoint: /api/oof/v1/pci
  sonhandler.pciOptimizer: pci
  sonhandler.pciAnrOptimizer: pci_anr
  sonhandler.poorCountThreshold: 3
  sonhandler.badCountThreshold: 3
  sonhandler.oofTriggerCountTimer: 30
  sonhandler.oofTriggerCountThreshold: 5
  sonhandler.policyRespTimer: 10
  sonhandler.policyNegativeAckThreshold: 3
  sonhandler.policyFixedPciTimeInterval: 30000
  sonhandler.nfNamingCode: RansimAgent
  streams_publishes:
    CL_topic:
      type: message-router
      dmaap_info:
        topic_url: http://message-router:3904/events/unauthenticated.DCAE_CL_OUTPUT
  streams_subscribes:
    performance_management_topic:
      type: message-router
      dmaap_info:
        topic_url: http://message-router:3904/events/unauthenticated.VES_MEASUREMENT_OUTPUT
    fault_management_topic:
      type: message-router
      dmaap_info:
        topic_url: http://message-router:3904/events/unauthenticated.SEC_FAULT_OUTPUT
    nbr_list_change_topic:
      type: message-router
      dmaap_info:
        topic_url: http://message-router:3904/events/PCI-NOTIF-TOPIC-NGHBR-LIST-CHANGE-INFO
    dcae_cl_response_topic:
      type: message-router
      dmaap_info:
        topic_url: http://message-router:3904/events/DCAE_CL_RSP
  service_calls:
      sdnr-getpnfname: []
      sdnr-getpci: []
      sdnr-getnbrlist: []
      sdnr-getcelllist: []
      oof-req: []
      policy-req: []

applicationEnv:
  CBS_CLIENT_CONFIG_PATH: '/app-config-input/application_config.yaml'
  #Temporary Dummy CBS Port Value until internal SDK library is updated
  CONFIG_BINDING_SERVICE_SERVICE_PORT: '0000'
  STANDALONE: 'false'

# 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: 1
      memory: 1Gi
  large:
    limits:
      cpu: 2
      memory: 2Gi
    requests:
      cpu: 2
      memory: 2Gi
  unlimited: {}

#################################################################
# Application configuration Overriding Defaults in the Postgres.
#################################################################
postgres:
  nameOverride: *postgresName
  service:
    name: *postgresName
    name2: *dcaeSonhmsPgPrimary
    name3: dcae-sonhms-pg-replica
  container:
    name:
      primary: dcae-sonhms-pg-primary
      replica: dcae-sonhms-pg-replica
  persistence:
    mountSubPath: sonhms/data
    mountInitPath: sonhms
  config:
    pgUserName: sonhms
    pgDatabase: sonhms
    pgUserExternalSecret: *pgUserCredsSecretName

#Pods Service Account
serviceAccount:
  nameOverride: dcae-son-handler
  roles:
    - read
