summaryrefslogtreecommitdiff
path: root/app/services/alert_management/process_prometheus_alert_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/alert_management/process_prometheus_alert_service.rb')
-rw-r--r--app/services/alert_management/process_prometheus_alert_service.rb18
1 files changed, 16 insertions, 2 deletions
diff --git a/app/services/alert_management/process_prometheus_alert_service.rb b/app/services/alert_management/process_prometheus_alert_service.rb
index 90fcbd95e4b..573d3914c05 100644
--- a/app/services/alert_management/process_prometheus_alert_service.rb
+++ b/app/services/alert_management/process_prometheus_alert_service.rb
@@ -66,7 +66,11 @@ module AlertManagement
def process_resolved_alert_management_alert
return if am_alert.blank?
- return if am_alert.resolve(ends_at)
+
+ if am_alert.resolve(ends_at)
+ close_issue(am_alert.issue)
+ return
+ end
logger.warn(
message: 'Unable to update AlertManagement::Alert status to resolved',
@@ -75,12 +79,22 @@ module AlertManagement
)
end
+ def close_issue(issue)
+ return if issue.blank? || issue.closed?
+
+ Issues::CloseService
+ .new(project, User.alert_bot)
+ .execute(issue, system_note: false)
+
+ SystemNoteService.auto_resolve_prometheus_alert(issue, project, User.alert_bot) if issue.reset.closed?
+ end
+
def logger
@logger ||= Gitlab::AppLogger
end
def am_alert
- @am_alert ||= AlertManagement::Alert.for_fingerprint(project, gitlab_fingerprint).first
+ @am_alert ||= AlertManagement::Alert.not_resolved.for_fingerprint(project, gitlab_fingerprint).first
end
def bad_request