
# Copyright 2017-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.


---
sources:
    - name: all_meters
      interval: 600
      meters:
          - "*"
          - "!switch"
          - "!switch.*"
          - "!vcpe"
          - "!vcpe.*"
          - "!cpu"
          - "!cpu_util"
          - "!instance"
          - "!network.incoming.bytes"
          - "!network.incoming.packets"
          - "!network.outgoing.bytes"
          - "!network.outgoing.packets"
      sinks:
          - all_meters_sink
    - name: sdn_source1
      interval: 600
      meters:
          - "switch"
          - "switch.*"
      resources:
          - onos://10.11.10.60:8181?auth=basic&user=onos&password=rocks&scheme=http
          - onos://10.11.10.61:8181?auth=basic&user=onos&password=rocks&scheme=http
      sinks:
          - sdn_sink
    - name: vcpe_source
      interval: 600
      meters:
          - "vcpe"
          - "vcpe.*"
      sinks:
          - vcpe_sink
    - name: memory_source
      interval: 600
      meters:
          - "memory"
      sinks:
          - memory_sink
    - name: cpu_source
      interval: 600
      meters:
          - "cpu"
      sinks:
          - cpu_sink
    - name: cpu_util_source
      interval: 600
      meters:
          - "cpu_util"
      sinks:
          - cpu_util_sink
    - name: compute_instance_meters
      interval: 600
      meters:
            - "instance"
      sinks:
          - compute_sink
    - name: network_source
      interval: 600
      meters:
          - "network.incoming.bytes"
          - "network.incoming.packets"
          - "network.outgoing.bytes"
          - "network.outgoing.packets"
      sinks:
          - network_sink
sinks:
    - name: all_meters_sink
      transformers:
      publishers:
          - notifier://
    - name: sdn_sink
      transformers:
      publishers:
          - notifier://
    - name: vcpe_sink
      transformers:
      publishers:
          - notifier://
    - name: memory_sink
      transformers:
      publishers:
          - notifier://
    - name: cpu_sink
      transformers:
          - name: "rate_of_change"
            parameters:
                target:
                    name: "cpu_util"
                    unit: "%"
                    type: "gauge"
                    scale: "100.0 / (10**9 * (resource_metadata.cpu_number or 1))"
      publishers:
          - notifier://
    - name: cpu_util_sink
      transformers:
      publishers:
          - notifier://
    - name: compute_sink
      publishers:
          - notifier://

    - name: network_sink
      transformers:
          - name: "rate_of_change"
            parameters:
                source:
                   map_from:
                       name: "network\\.(incoming|outgoing)\\.(bytes|packets)"
                       unit: "(B|packet)"
                target:
                    map_to:
                        name: "network.\\1.\\2.rate"
                        unit: "\\1/s"
                    type: "gauge"
      publishers:
          - notifier://
