#
#   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.
#
---
extraArgs:
  log.level: debug
service:
  type: NodePort
  nodePort: 9093
  port: 9093
config:
  receivers:
    - name: default-receiver
    - name: vdu-webhook
      webhook_configs:
       - url: http://webhook-translator:9998/vdu_down
    - name: scaleout-webhook
      webhook_configs:
       - url: http://webhook-translator:9998/scaleout_vdu
    - name: scalein-webhook
      webhook_configs:
       - url: http://webhook-translator:9998/scalein_vdu
    - name: alarm-webhook
      webhook_configs:
       - url: http://webhook-translator:9998/vdu_alarm
  route:
    group_wait: 10s
    group_interval: 2m
    receiver: default-receiver
    routes:
    - receiver: vdu-webhook
      repeat_interval: 15m
      matchers:
      - alertname = "vdu_down"
    - receiver: 'scaleout-webhook'
      repeat_interval: 5m
      matchers:
      - alertname =~ "^scaleout_.*"
    - receiver: 'scalein-webhook'
      repeat_interval: 5m
      matchers:
      - alertname =~ "^scalein_.*"
    - receiver: 'alarm-webhook'
      repeat_interval: 5m
      matchers:
      - alertname =~ "^vdu_alarm_.*"
