# ================================ LICENSE_START ==========================
# =========================================================================
#  Copyright (C) 2021 Nordix Foundation.
#  Copyright (c) 2022 Nokia.  All rights reserved.
#  Copyright (c) 2022-2023 J. F. Lucas. All rights reserved.
#  Copyright (c) 2023 Deutsche Telekom AG. 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: &drSubCredsUID drsubcreds
    type: basicAuth
    login: '{{ .Values.drSubscriberCreds.username }}'
    password: '{{ .Values.drSubscriberCreds.password }}'
    passwordPolicy: required

#################################################################
# Application Configuration Defaults.
#################################################################
# Application Image
image: onap/org.onap.dcaegen2.services.pm-mapper:1.10.1
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/pm-mapper
logConfigMapNamePrefix: '{{ include "common.fullname" . }}'

# Dependencies
readinessCheck:
  wait_for:
    containers:
      - dmaap-bc
      - dmaap-provisioning-job
      - dcae-datafile-collector
      - message-router

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

# Service Configuration
service:
  type: ClusterIP
  name: dcae-pm-mapper
  both_tls_and_plain: true
  ports:
    - name: http
      port: 8443
      plain_port: 8081
      port_protocol: http

# Data Router Subscriber Credentials
drSubscriberCreds:
  username: username
  password: password

credentials:
- name: DR_USERNAME
  uid: *drSubCredsUID
  key: login
- name: DR_PASSWORD
  uid: *drSubCredsUID
  key: password

# Initial Application Configuration
applicationConfig:
  enable_tls: false
  enable_http: true
  aaf_identity: ""
  aaf_password: ""
  pm-mapper-filter: "{ \"filters\":[] }"
  #key_store_path: /opt/app/pm-mapper/etc/cert/cert.jks
  #key_store_pass_path: /opt/app/pm-mapper/etc/cert/jks.pass
  trust_store_path: /opt/app/pm-mapper/etc/cert/trust.jks
  trust_store_pass_path: /opt/app/pm-mapper/etc/cert/trust.pass
  dmaap_dr_delete_endpoint: http://dmaap-dr-node:8080/delete
  streams_publishes:
    dmaap_publisher:
      type: message_router
      dmaap_info:
        client_id: ${MR_FILES_PUBLISHER_CLIENT_ID_0}
        location: san-francisco
        client_role: org.onap.dcae.pmPublisher
        topic_url: http://message-router:3904/events/unauthenticated.PERFORMANCE_MEASUREMENTS
  streams_subscribes:
    dmaap_subscriber:
      type: data_router
      dmaap_info:
        subscriber_id: ${DR_FILES_SUBSCRIBER_ID_0}
        decompress: true
        privileged: true
        username: ${DR_USERNAME}
        password: ${DR_PASSWORD}
        location: san-francisco
        delivery_url: http://dcae-pm-mapper:8081/delivery

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'

# DataRouter Feed Configuration
drFeedConfig:
  - feedName: bulk_pm_feed
    owner: dcaecm
    feedVersion: "0.0"
    asprClassification: unclassified
    feedDescription: DFC Feed Creation

# DataRouter Subscriber Configuration
drSubConfig:
  - feedName: bulk_pm_feed
    decompress: true
    username: ${DR_USERNAME}
    userpwd: ${DR_PASSWORD}
    dcaeLocationName: loc00
    privilegedSubscriber: true
    deliveryURL: http://dcae-pm-mapper:8081/delivery

# ConfigMap Configuration for Dr Feed, Subscriber, MR Topics
volumes:
  - name: feeds-config
    path: /opt/app/config/feeds
  - name: drsub-config
    path: /opt/app/config/dr_subs

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

#Pods Service Account
serviceAccount:
  nameOverride: dcae-pm-mapper
  roles:
    - read
