Skip to content

Add escalation status for incident issues

Sarah Yasonik requested to merge 330277-issue-escalation-status-table into master

What does this MR do?

Related issue: #330277 (closed)

  • Adds an IssuableEscalationStatus model for issues.
    • This will allow incident issues to be marked as triggered/acknowledged/resolved. (GitLab Core)
    • Ultimately, the status will be used to indicate whether paging should occur for the issue (GitLab Premium ) [comparable to alerts]
  • Refactor status-related logic from AlertManagement::Alert & specs into an Escalatable module which both alerts & the IssuableEscalationStatus model

Migration Info

Up output
% bin/rails db:migrate
== 20210729202143 CreateIncidentManagementIssuableEscalationStatuses: migrating 
-- create_table(:incident_management_issuable_escalation_statuses)
   -> 0.0457s
== 20210729202143 CreateIncidentManagementIssuableEscalationStatuses: migrated (0.0458s) 
% gdk psql
psql (12.7)
Type "help" for help.

gitlabhq_development=# \d incident_management_issuable_escalation_statuses
                                             Table "public.incident_management_issuable_escalation_statuses"
         Column         |           Type           | Collation | Nullable |                                   Default                                    
------------------------+--------------------------+-----------+----------+------------------------------------------------------------------------------
 id                     | bigint                   |           | not null | nextval('incident_management_issuable_escalation_statuses_id_seq'::regclass)
 created_at             | timestamp with time zone |           | not null | 
 updated_at             | timestamp with time zone |           | not null | 
 issue_id               | bigint                   |           | not null | 
 policy_id              | bigint                   |           |          | 
 escalations_started_at | timestamp with time zone |           |          | 
 resolved_at            | timestamp with time zone |           |          | 
 status                 | smallint                 |           | not null | 0
Indexes:
    "incident_management_issuable_escalation_statuses_pkey" PRIMARY KEY, btree (id)
    "index_uniq_im_issuable_escalation_statuses_on_issue_id" UNIQUE, btree (issue_id)
    "index_im_issuable_escalation_statuses_on_policy_id" btree (policy_id)
Foreign-key constraints:
    "fk_rails_29abffe3b9" FOREIGN KEY (policy_id) REFERENCES incident_management_escalation_policies(id) ON DELETE SET NULL
    "fk_rails_f4c811fd28" FOREIGN KEY (issue_id) REFERENCES issues(id) ON DELETE CASCADE
Down output
% bin/rails db:migrate:down VERSION=20210729202143
== 20210729202143 CreateIncidentManagementIssuableEscalationStatuses: reverting 
-- drop_table(:incident_management_issuable_escalation_statuses)
   -> 0.0275s
== 20210729202143 CreateIncidentManagementIssuableEscalationStatuses: reverted (0.0354s) 

Screenshots (strongly suggested)

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

Does this MR contain changes to processing or storing of credentials or tokens, authorization and authentication methods or other items described in the security review guidelines? If not, then delete this Security section.

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team

Related to #330277 (closed)

Edited by Sarah Yasonik

Merge request reports

Loading