diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-12 18:08:43 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-02-12 18:08:43 +0300 |
commit | f44248b613e94534fd6a1b1f8fb6df179f1bbf56 (patch) | |
tree | f54a3ff32ff39eaf001a1a46eb1c699f00f794ac /lib/gitlab/alert_management | |
parent | 49d26b2348f2eb9e345eb1f66214678f42f15dd3 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/alert_management')
-rw-r--r-- | lib/gitlab/alert_management/payload/base.rb | 28 | ||||
-rw-r--r-- | lib/gitlab/alert_management/payload/generic.rb | 5 | ||||
-rw-r--r-- | lib/gitlab/alert_management/payload/prometheus.rb | 22 |
3 files changed, 37 insertions, 18 deletions
diff --git a/lib/gitlab/alert_management/payload/base.rb b/lib/gitlab/alert_management/payload/base.rb index bfd91f0b53b..c8b8d6c259d 100644 --- a/lib/gitlab/alert_management/payload/base.rb +++ b/lib/gitlab/alert_management/payload/base.rb @@ -44,11 +44,25 @@ module Gitlab :title ].freeze + private_constant :EXPECTED_PAYLOAD_ATTRIBUTES + # Define expected API for a payload EXPECTED_PAYLOAD_ATTRIBUTES.each do |key| define_method(key) {} end + SEVERITY_MAPPING = { + 'critical' => :critical, + 'high' => :high, + 'medium' => :medium, + 'low' => :low, + 'info' => :info + }.freeze + + # Handle an unmapped severity value the same way we treat missing values + # so we can fallback to alert's default severity `critical`. + UNMAPPED_SEVERITY = nil + # Defines a method which allows access to a given # value within an alert payload # @@ -131,9 +145,21 @@ module Gitlab true end + def severity + severity_mapping.fetch(severity_raw.to_s.downcase, UNMAPPED_SEVERITY) + end + private - def plain_gitlab_fingerprint; end + def plain_gitlab_fingerprint + end + + def severity_raw + end + + def severity_mapping + SEVERITY_MAPPING + end def truncate_hosts(hosts) return hosts if hosts.join.length <= ::AlertManagement::Alert::HOSTS_MAX_LENGTH diff --git a/lib/gitlab/alert_management/payload/generic.rb b/lib/gitlab/alert_management/payload/generic.rb index e8e85155bef..0eb1bee8181 100644 --- a/lib/gitlab/alert_management/payload/generic.rb +++ b/lib/gitlab/alert_management/payload/generic.rb @@ -6,7 +6,6 @@ module Gitlab module Payload class Generic < Base DEFAULT_TITLE = 'New: Incident' - DEFAULT_SEVERITY = 'critical' attribute :description, paths: 'description' attribute :ends_at, paths: 'end_time', type: :time @@ -15,10 +14,12 @@ module Gitlab attribute :monitoring_tool, paths: 'monitoring_tool' attribute :runbook, paths: 'runbook' attribute :service, paths: 'service' - attribute :severity, paths: 'severity', fallback: -> { DEFAULT_SEVERITY } attribute :starts_at, paths: 'start_time', type: :time, fallback: -> { Time.current.utc } attribute :title, paths: 'title', fallback: -> { DEFAULT_TITLE } + attribute :severity_raw, paths: 'severity' + private :severity_raw + attribute :plain_gitlab_fingerprint, paths: 'fingerprint' private :plain_gitlab_fingerprint end diff --git a/lib/gitlab/alert_management/payload/prometheus.rb b/lib/gitlab/alert_management/payload/prometheus.rb index f278da7937b..4c36ebbf3aa 100644 --- a/lib/gitlab/alert_management/payload/prometheus.rb +++ b/lib/gitlab/alert_management/payload/prometheus.rb @@ -5,6 +5,8 @@ module Gitlab module Payload # Attribute mapping for alerts via prometheus alerting integration. class Prometheus < Base + extend Gitlab::Utils::Override + attribute :alert_markdown, paths: %w(annotations gitlab_incident_markdown) attribute :annotations, paths: 'annotations' attribute :description, paths: %w(annotations description) @@ -35,12 +37,7 @@ module Gitlab METRIC_TIME_WINDOW = 30.minutes - SEVERITY_MAP = { - 'critical' => :critical, - 'high' => :high, - 'medium' => :medium, - 'low' => :low, - 'info' => :info, + ADDITIONAL_SEVERITY_MAPPING = { 's1' => :critical, 's2' => :high, 's3' => :medium, @@ -65,10 +62,6 @@ module Gitlab 'page' => :high }.freeze - # Handle an unmapped severity value the same way we treat missing values - # so we can fallback to alert's default severity `critical`. - UNMAPPED_SEVERITY = nil - def monitoring_tool Gitlab::AlertManagement::Payload::MONITORING_TOOLS[:prometheus] end @@ -101,14 +94,13 @@ module Gitlab project && title && starts_at_raw end - def severity - return unless severity_raw + private - SEVERITY_MAP.fetch(severity_raw.to_s.downcase, UNMAPPED_SEVERITY) + override :severity_mapping + def severity_mapping + super.merge(ADDITIONAL_SEVERITY_MAPPING) end - private - def plain_gitlab_fingerprint [starts_at_raw, title, full_query].join('/') end |