#
#   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/alert_vdu
    - name: scaleout-webhook
      webhook_configs:
       - url: http://webhook-translator/scaleout_vdu
    - name: scalein-webhook
      webhook_configs:
       - url: http://webhook-translator/scalein_vdu
  route:
    group_wait: 10s
    group_interval: 2m
    receiver: default-receiver
    repeat_interval: 3h
    routes:
    - receiver: vdu-webhook
      matchers:
      - alertname = "vdu_down"
    - receiver: 'scaleout-webhook'
      matchers:
      - alertname =~ "^scaleout_.*"
    - receiver: 'scalein-webhook'
      matchers:
      - alertname =~ "^scalein_.*"
