From ed5add1c2f001c9bd54e664b32f212de172eca6a Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Fri, 10 Apr 2020 18:09:32 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- .../performance_monitoring/prometheus_dashboard.rb | 34 +++++++++++++++------- app/models/prometheus_alert.rb | 3 +- 2 files changed, 26 insertions(+), 11 deletions(-) (limited to 'app/models') diff --git a/app/models/performance_monitoring/prometheus_dashboard.rb b/app/models/performance_monitoring/prometheus_dashboard.rb index 5f2df444fd0..30fb1935a27 100644 --- a/app/models/performance_monitoring/prometheus_dashboard.rb +++ b/app/models/performance_monitoring/prometheus_dashboard.rb @@ -4,27 +4,41 @@ module PerformanceMonitoring class PrometheusDashboard include ActiveModel::Model - attr_accessor :dashboard, :panel_groups + attr_accessor :dashboard, :panel_groups, :path, :environment, :priority validates :dashboard, presence: true validates :panel_groups, presence: true - def self.from_json(json_content) - dashboard = new( - dashboard: json_content['dashboard'], - panel_groups: json_content['panel_groups'].map { |group| PrometheusPanelGroup.from_json(group) } - ) - - dashboard.tap(&:validate!) + class << self + def from_json(json_content) + dashboard = new( + dashboard: json_content['dashboard'], + panel_groups: json_content['panel_groups'].map { |group| PrometheusPanelGroup.from_json(group) } + ) + + dashboard.tap(&:validate!) + end + + def find_for(project:, user:, path:, options: {}) + dashboard_response = Gitlab::Metrics::Dashboard::Finder.find(project, user, options.merge(dashboard_path: path)) + return unless dashboard_response[:status] == :success + + new( + { + path: path, + environment: options[:environment] + }.merge(dashboard_response[:dashboard]) + ) + end end def to_yaml - self.as_json(only: valid_attributes).to_yaml + self.as_json(only: yaml_valid_attributes).to_yaml end private - def valid_attributes + def yaml_valid_attributes %w(panel_groups panels metrics group priority type title y_label weight id unit label query query_range dashboard) end end diff --git a/app/models/prometheus_alert.rb b/app/models/prometheus_alert.rb index a1303f59129..fbc0281296f 100644 --- a/app/models/prometheus_alert.rb +++ b/app/models/prometheus_alert.rb @@ -56,7 +56,8 @@ class PrometheusAlert < ApplicationRecord "for" => "5m", "labels" => { "gitlab" => "hook", - "gitlab_alert_id" => prometheus_metric_id + "gitlab_alert_id" => prometheus_metric_id, + "gitlab_prometheus_alert_id" => id } } end -- cgit v1.2.3