diff options
Diffstat (limited to 'app/workers/incident_management/pager_duty/process_incident_worker.rb')
-rw-r--r-- | app/workers/incident_management/pager_duty/process_incident_worker.rb | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/app/workers/incident_management/pager_duty/process_incident_worker.rb b/app/workers/incident_management/pager_duty/process_incident_worker.rb new file mode 100644 index 00000000000..3f378b012a1 --- /dev/null +++ b/app/workers/incident_management/pager_duty/process_incident_worker.rb @@ -0,0 +1,42 @@ +# frozen_string_literal: true + +module IncidentManagement + module PagerDuty + class ProcessIncidentWorker # rubocop:disable Scalability/IdempotentWorker + include ApplicationWorker + + queue_namespace :incident_management + feature_category :incident_management + + def perform(project_id, incident_payload) + return unless project_id + + project = find_project(project_id) + return unless project + + result = create_issue(project, incident_payload) + + log_error(result) if result.error? + end + + private + + def find_project(project_id) + Project.find_by_id(project_id) + end + + def create_issue(project, incident_payload) + ::IncidentManagement::PagerDuty::CreateIncidentIssueService + .new(project, incident_payload) + .execute + end + + def log_error(result) + Gitlab::AppLogger.warn( + message: 'Cannot create issue for PagerDuty incident', + issue_errors: result.message + ) + end + end + end +end |