# Copyright (c) 2021 J. F. Lucas.  All rights reserved.
# Copyright (c) 2021 AT&T. All rights reserved.
# Modifications Copyright (C) 2021 Nordix Foundation.
#
# 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:
  centralizedLoggingEnabled: true
  hvVesKafkaUser: dcae-hv-ves-kafka-user

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

# Control deployment of DCAE microservices at ONAP installation time
dcae-ves-openapi-manager:
  enabled: true
dcae-datafile-collector:
  enabled: false
  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
dcae-datalake-admin-ui:
  enabled: false
  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
dcae-datalake-des:
  enabled: false
  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
dcae-datalake-feeder:
  enabled: false
  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
dcae-heartbeat:
  enabled: false
  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
dcae-hv-ves-collector:
  enabled: true
  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
  config:
    jaasConfExternalSecret: '{{ include "common.release" . }}-{{ .Values.global.hvVesKafkaUser }}'
dcae-kpi-ms:
  enabled: false
  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
dcae-ms-healthcheck:
  enabled: true
  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
dcae-pm-mapper:
  enabled: false
  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
dcae-pmsh:
  enabled: false
  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
dcae-prh:
  enabled: true
  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
dcae-restconf-collector:
  enabled: false
  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
dcae-slice-analysis-ms:
  enabled: false
  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
dcae-snmptrap-collector:
  enabled: false
  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
dcae-son-handler:
  enabled: false
  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
dcae-tcagen2:
  enabled: true
  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
dcae-ves-collector:
  enabled: true
  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
dcae-ves-mapper:
  enabled: false
  logConfigMapNamePrefix: '{{ include "common.release" . }}-dcaegen2-services'
