Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-02-12 18:08:43 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-02-12 18:08:43 +0300
commitf44248b613e94534fd6a1b1f8fb6df179f1bbf56 (patch)
treef54a3ff32ff39eaf001a1a46eb1c699f00f794ac /lib/gitlab/alert_management
parent49d26b2348f2eb9e345eb1f66214678f42f15dd3 (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.rb28
-rw-r--r--lib/gitlab/alert_management/payload/generic.rb5
-rw-r--r--lib/gitlab/alert_management/payload/prometheus.rb22
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