diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-04-10 21:09:32 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-04-10 21:09:32 +0300 |
commit | ed5add1c2f001c9bd54e664b32f212de172eca6a (patch) | |
tree | f9449cbecde36706f25a62f426b5398566ae5cca /app/models/performance_monitoring | |
parent | de2fb5b82c92c90f90ed67ced45143c04e934fb8 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/models/performance_monitoring')
-rw-r--r-- | app/models/performance_monitoring/prometheus_dashboard.rb | 34 |
1 files changed, 24 insertions, 10 deletions
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 |