diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-10-20 15:08:54 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-10-20 15:08:54 +0300 |
commit | be2142bf5e03af8ba9bb96e4bf0b4781184ae01b (patch) | |
tree | b40aab281b29a56bd398757564d271c8b3aa8662 /lib/gitlab/alert_management | |
parent | bc12365ae0254332f97299138f019bea3ff12351 (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 | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/lib/gitlab/alert_management/payload/base.rb b/lib/gitlab/alert_management/payload/base.rb index 74e47e5226e..0fd593a3780 100644 --- a/lib/gitlab/alert_management/payload/base.rb +++ b/lib/gitlab/alert_management/payload/base.rb @@ -88,19 +88,19 @@ module Gitlab # AlertManagement::Alert directly for read operations. def alert_params { - description: description, + description: description&.truncate(::AlertManagement::Alert::DESCRIPTION_MAX_LENGTH), ended_at: ends_at, environment: environment, fingerprint: gitlab_fingerprint, - hosts: Array(hosts), - monitoring_tool: monitoring_tool, + hosts: truncate_hosts(Array(hosts).flatten), + monitoring_tool: monitoring_tool&.truncate(::AlertManagement::Alert::TOOL_MAX_LENGTH), payload: payload, project_id: project.id, prometheus_alert: gitlab_alert, - service: service, + service: service&.truncate(::AlertManagement::Alert::SERVICE_MAX_LENGTH), severity: severity, started_at: starts_at, - title: title + title: title&.truncate(::AlertManagement::Alert::TITLE_MAX_LENGTH) }.transform_values(&:presence).compact end @@ -135,6 +135,18 @@ module Gitlab def plain_gitlab_fingerprint; end + def truncate_hosts(hosts) + return hosts if hosts.join.length <= ::AlertManagement::Alert::HOSTS_MAX_LENGTH + + hosts.inject([]) do |new_hosts, host| + remaining_length = ::AlertManagement::Alert::HOSTS_MAX_LENGTH - new_hosts.join.length + + break new_hosts unless remaining_length > 0 + + new_hosts << host.to_s.truncate(remaining_length, omission: '') + end + end + def value_for_paths(paths) target_path = paths.find { |path| payload&.dig(*path) } |