49 lines
1.1 KiB
Ruby
49 lines
1.1 KiB
Ruby
|
# 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
|