summaryrefslogtreecommitdiff
path: root/app/services/projects/prometheus/metrics/base_service.rb
blob: be1783dde705719e2a5c4ffef190f41ed99ed33c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# frozen_string_literal: true

module Projects
  module Prometheus
    module Metrics
      class BaseService
        include Gitlab::Utils::StrongMemoize

        def initialize(metric, params = {})
          @metric = metric
          @project = metric.project
          @params = params.dup
        end

        protected

        attr_reader :metric, :project, :params

        def application
          alert.environment.cluster_prometheus_adapter
        end

        def schedule_alert_update
          return unless alert
          return unless alert.environment

          ::Clusters::Applications::ScheduleUpdateService.new(
            alert.environment.cluster_prometheus_adapter, project).execute
        end

        def alert
          strong_memoize(:alert) { find_alert(metric) }
        end

        def find_alert(metric)
          Projects::Prometheus::AlertsFinder
            .new(project: project, metric: metric)
            .execute
            .first
        end

        def has_alert?
          alert.present?
        end
      end
    end
  end
end