diff options
Diffstat (limited to 'lib/gitlab/alerting/alert.rb')
-rw-r--r-- | lib/gitlab/alerting/alert.rb | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/lib/gitlab/alerting/alert.rb b/lib/gitlab/alerting/alert.rb index f6f52e392c6..7d97bd1bb52 100644 --- a/lib/gitlab/alerting/alert.rb +++ b/lib/gitlab/alerting/alert.rb @@ -21,6 +21,12 @@ module Gitlab end end + def gitlab_prometheus_alert_id + strong_memoize(:gitlab_prometheus_alert_id) do + payload&.dig('labels', 'gitlab_prometheus_alert_id') + end + end + def title strong_memoize(:title) do gitlab_alert&.title || parse_title_from_payload @@ -120,12 +126,19 @@ module Gitlab end def parse_gitlab_alert_from_payload - return unless metric_id + alerts_found = matching_gitlab_alerts + + return if alerts_found.blank? || alerts_found.size > 1 + + alerts_found.first + end + + def matching_gitlab_alerts + return unless metric_id || gitlab_prometheus_alert_id Projects::Prometheus::AlertsFinder - .new(project: project, metric: metric_id) + .new(project: project, metric: metric_id, id: gitlab_prometheus_alert_id) .execute - .first end def parse_title_from_payload |