diff options
Diffstat (limited to 'app/services/projects')
-rw-r--r-- | app/services/projects/alerting/notify_service.rb | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/app/services/projects/alerting/notify_service.rb b/app/services/projects/alerting/notify_service.rb index 4ca3b154e4b..d34d6f6a915 100644 --- a/app/services/projects/alerting/notify_service.rb +++ b/app/services/projects/alerting/notify_service.rb @@ -4,12 +4,14 @@ module Projects module Alerting class NotifyService < BaseService include Gitlab::Utils::StrongMemoize + include IncidentManagement::Settings def execute(token) return forbidden unless alerts_service_activated? return unauthorized unless valid_token?(token) - process_incident_issues + process_incident_issues if process_issues? + send_alert_email if send_email? ServiceResponse.success rescue Gitlab::Alerting::NotificationPayloadParser::BadPayloadError @@ -20,11 +22,21 @@ module Projects delegate :alerts_service, :alerts_service_activated?, to: :project + def send_email? + incident_management_setting.send_email? + end + def process_incident_issues IncidentManagement::ProcessAlertWorker .perform_async(project.id, parsed_payload) end + def send_alert_email + notification_service + .async + .prometheus_alerts_fired(project, [parsed_payload]) + end + def parsed_payload Gitlab::Alerting::NotificationPayloadParser.call(params.to_h) end |