# ================================ LICENSE_START ==========================
# =========================================================================
#  Copyright (C) 2021 Nordix Foundation.
#  Copyright (c) 2022 Nokia.  All rights reserved.
#  Copyright (c) 2022 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: &aafCredsUID aafcreds
    type: basicAuth
    login: '{{ .Values.aafCreds.identity }}'
    password: '{{ .Values.aafCreds.password }}'
    passwordPolicy: required
  - uid: &drSubCredsUID drsubcreds
    type: basicAuth
    login: '{{ .Values.drSubscriberCreds.username }}'
    password: '{{ .Values.drSubscriberCreds.password }}'
    passwordPolicy: required

#################################################################
# InitContainer Images.
#################################################################
tlsImage: onap/org.onap.dcaegen2.deployments.tls-init-container:2.1.0

#################################################################
# Application Configuration Defaults.
#################################################################
# Application Image
image: onap/org.onap.dcaegen2.services.pm-mapper:1.8.0
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" . }}'

# Directory where TLS certs should be stored
# if absent, no certs will be retrieved and stored
certDirectory: /opt/app/pm-mapper/etc/cert

# TLS role -- set to true if microservice acts as server
# If true, an init container will retrieve a server cert
# and key from AAF and mount them in certDirectory.
tlsServer: true

# Dependencies
readinessCheck:
  wait_for:
    containers:
      - aaf-cm
      - dmaap-bc
      - dmaap-provisioning-job
      - dcae-datafile-collector

# 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: https
      port: 8443
      plain_port: 8081
      port_protocol: http

# AAF Credentials
aafCreds:
  identity: dcae@dcae.onap.org
  password: demo123456!

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

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

# Initial Application Configuration
applicationConfig:
  enable_tls: true
  enable_http: true
  aaf_identity: ""
  aaf_password: ""
  pm-mapper-filter: "{ \"filters\":[] }"
  key_store_path: ""
  key_store_pass_path: ""
  trust_store_path: ""
  trust_store_pass_path: ""
  dmaap_dr_delete_endpoint: https://dmaap-dr-node:8443/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: https://dcae-pm-mapper:8443/delivery

# 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: https://dcae-pm-mapper:8443/delivery

# MessageRouter Topic, Publisher Configuration
mrTopicsConfig:
  - topicName: PERFORMANCE_MEASUREMENTS
    topicDescription: PM Mapper publishes perf3gpp VES PM Events to authenticated MR topic
    owner: dcaecm
    tnxEnabled: false
    clients:
      - dcaeLocationName: san-francisco
        clientRole: org.onap.dcae.pmPublisher
        action:
          - pub
          - view

# 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
  - name: topics-config
    path: /opt/app/config/topics

# 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
