summaryrefslogtreecommitdiff
path: root/db/post_migrate/20210519220019_backfill_escalation_policies_for_oncall_schedules.rb
diff options
context:
space:
mode:
Diffstat (limited to 'db/post_migrate/20210519220019_backfill_escalation_policies_for_oncall_schedules.rb')
-rw-r--r--db/post_migrate/20210519220019_backfill_escalation_policies_for_oncall_schedules.rb89
1 files changed, 0 insertions, 89 deletions
diff --git a/db/post_migrate/20210519220019_backfill_escalation_policies_for_oncall_schedules.rb b/db/post_migrate/20210519220019_backfill_escalation_policies_for_oncall_schedules.rb
deleted file mode 100644
index f972815cf67..00000000000
--- a/db/post_migrate/20210519220019_backfill_escalation_policies_for_oncall_schedules.rb
+++ /dev/null
@@ -1,89 +0,0 @@
-# frozen_string_literal: true
-
-class BackfillEscalationPoliciesForOncallSchedules < ActiveRecord::Migration[6.0]
- include Gitlab::Database::MigrationHelpers
-
- # Creates a single new escalation policy for projects which have
- # existing on-call schedules. Only one schedule is expected
- # per project, but it is possible to have multiple.
- #
- # An escalation rule is created for each existing schedule,
- # configured to immediately notify the schedule of an incoming
- # alert payload unless the alert has already been acknowledged.
- # For projects with multiple schedules, the name of the first saved
- # schedule will be used for the policy's description.
- #
- # Skips projects which already have escalation policies & schedules.
- #
- # EX)
- # For these existing records:
- # Project #3
- # IncidentManagement::OncallSchedules #13
- # project_id: 3
- # name: 'Awesome Schedule'
- # description: null
- # IncidentManagement::OncallSchedules #14
- # project_id: 3
- # name: '2ndary sched'
- # description: 'Backup on-call'
- #
- # These will be inserted:
- # EscalationPolicy #1
- # project_id: 3
- # name: 'On-call Escalation Policy'
- # description: 'Immediately notify Awesome Schedule'
- # EscalationRule #1
- # policy_id: 1,
- # oncall_schedule_id: 13
- # status: 1 # Acknowledged status
- # elapsed_time_seconds: 0
- # EscalationRule #2
- # policy_id: 1,
- # oncall_schedule_id: 14
- # status: 1 # Acknowledged status
- # elapsed_time_seconds: 0
- def up
- ApplicationRecord.connection.exec_query(<<~SQL.squish)
- WITH new_escalation_policies AS (
- INSERT INTO incident_management_escalation_policies (
- project_id,
- name,
- description
- )
- SELECT
- DISTINCT ON (project_id) project_id,
- 'On-call Escalation Policy',
- CONCAT('Immediately notify ', name)
- FROM incident_management_oncall_schedules
- WHERE project_id NOT IN (
- SELECT DISTINCT project_id
- FROM incident_management_escalation_policies
- )
- ORDER BY project_id, id
- RETURNING id, project_id
- )
-
- INSERT INTO incident_management_escalation_rules (
- policy_id,
- oncall_schedule_id,
- status,
- elapsed_time_seconds
- )
- SELECT
- new_escalation_policies.id,
- incident_management_oncall_schedules.id,
- 1,
- 0
- FROM new_escalation_policies
- INNER JOIN incident_management_oncall_schedules
- ON new_escalation_policies.project_id = incident_management_oncall_schedules.project_id
- SQL
- end
-
- # There is no way to distinguish between policies created
- # via the backfill or as a result of a user creating a new
- # on-call schedule.
- def down
- # no-op
- end
-end