---
# Copyright 2018-present Open Networking 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:
  registry: ''

images:
  kpi_exporter:
    repository: 'opencord/kafka-topic-exporter'
    tag: '1.2.3'
    pullPolicy: 'Always'

kpi_exporter:
  nem_kpi_exporter_nodePort: 31080
  nem_kpi_exporter_replicas: 2
  kpi_broker: cord-kafka:9092
  topics:
    - voltha.kpis
    - onos.aaa.stats.kpis
    - onos.kpis

prometheus:
  alertmanager:
    persistentVolume:
      enabled: false
  server:
    persistentVolume:
      enabled: false
    service:
      type: NodePort
      nodePort: 31301
    # The labels to add to any time series or alerts when communicating with
    # external systems (federation, remote storage, Alertmanager).
    #global:
    #  external_labels:
    #    datacenter: onf-menlo

  extraScrapeConfigs: |
    - job_name: 'xos-core'
      metrics_path: /metrics
      scrape_interval: 15s
      static_configs:
        - targets:
            - xos-core-prometheus:8000
    - job_name: 'voltha-kpi'
      metrics_path: /metrics
      scrape_interval: 15s
      static_configs:
        - targets:
            - kpi-exporter:8080
    - job_name: 'node-exporter'
      metrics_path: /metrics
      scrape_interval: 15s
      static_configs:
        - targets:
          - nem-monitoring-prometheus-node-exporter:9100

grafana:
  adminUser: admin
  adminPassword: strongpassword
  service:
    type: NodePort
    nodePort: 31300
  sidecar:
    dashboards:
      enabled: true
      label: grafana_dashboard
  datasources:
    datasources.yaml:
      apiVersion: 1
      datasources:
        - name: Prometheus
          type: prometheus
          url: http://nem-monitoring-prometheus-server
          access: proxy
          isDefault: true

# Configure Grafana dashboard to import
dashboards:
  k8s: true
  nodeExporter: true
  xos: true
  onos: true
  aaa: true
  voltha: true
  omec: false
  aether: false
