# Copyright (c) 2023 VEXXHOST, Inc.
#
# 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.

_loki_helm_values:
  deploymentMode: SingleBinary
  loki:
    server:
      log_level: warn
    image:
      registry: "{{ atmosphere_images['loki'] | vexxhost.kubernetes.docker_image('domain') }}"
      repository: "{{ atmosphere_images['loki'] | vexxhost.kubernetes.docker_image('path') }}"
      tag: "{{ atmosphere_images['loki'] | vexxhost.kubernetes.docker_image('tag') }}"
    auth_enabled: false
    commonConfig:
      replication_factor: 1
    limits_config:
      max_label_names_per_series: 25
    rulerConfig:
      alertmanager_url: http://alertmanager-operated.monitoring:9093
      enable_alertmanager_v2: true
      enable_api: true
      rule_path: /var/loki/rules-temp
      ring:
        kvstore:
          store: inmemory
      storage:
        type: local
        local:
          directory: /var/loki/rulestorage
    storage:
      type: filesystem
    schemaConfig:
      configs:
        - from: 2024-04-01
          store: tsdb
          object_store: filesystem
          schema: v13
          index:
            prefix: index_
            period: 24h
  memcached:
    image:
      repository: "{{ atmosphere_images['memcached'] | vexxhost.kubernetes.docker_image('name') }}"
      tag: "{{ atmosphere_images['memcached'] | vexxhost.kubernetes.docker_image('tag') }}"
  memcachedExporter:
    image:
      repository: "{{ atmosphere_images['prometheus_memcached_exporter'] | vexxhost.kubernetes.docker_image('name') }}"
      tag: "{{ atmosphere_images['prometheus_memcached_exporter'] | vexxhost.kubernetes.docker_image('tag') }}"
  test:
    enabled: false
  singleBinary:
    replicas: 1
    nodeSelector:
      openstack-control-plane: enabled
    persistence:
      size: 256Gi
    extraVolumeMounts:
      - name: rules
        mountPath: /var/loki/rulestorage/fake
    extraVolumes:
      - name: rules
        configMap:
          name: loki-alerting-rules
  write:
    replicas: 0
  read:
    replicas: 0
  backend:
    replicas: 0
  gateway:
    image:
      registry: "{{ atmosphere_images['loki_gateway'] | vexxhost.kubernetes.docker_image('domain') }}"
      repository: "{{ atmosphere_images['loki_gateway'] | vexxhost.kubernetes.docker_image('path') }}"
      tag: "{{ atmosphere_images['loki_gateway'] | vexxhost.kubernetes.docker_image('tag') }}"
    nodeSelector:
      openstack-control-plane: enabled
  lokiCanary:
    enabled: false
  extraObjects:
    - apiVersion: v1
      kind: ConfigMap
      metadata:
        name: loki-alerting-rules
        labels:
          loki_rule: "atmosphere"
      data:
        loki-alerting-rules.yaml: |-
          groups:
            - name: additional-loki-rules
              rules:
                - alert: NovaCellNotResponding
                  expr: 'count_over_time({pod_label_component="compute"} |= "not responding and hence is being omitted from the results" [1m]) > 0'
                  labels:
                    severity: critical
                  annotations:
                    summary: Nova Cell is not responding. It can cause port deletion in CAPI.
