summaryrefslogtreecommitdiff
path: root/lib/gitlab/metrics_dashboard/processor.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/metrics_dashboard/processor.rb')
-rw-r--r--lib/gitlab/metrics_dashboard/processor.rb25
1 files changed, 16 insertions, 9 deletions
diff --git a/lib/gitlab/metrics_dashboard/processor.rb b/lib/gitlab/metrics_dashboard/processor.rb
index 3b8ab27a07b..ef9d75947f0 100644
--- a/lib/gitlab/metrics_dashboard/processor.rb
+++ b/lib/gitlab/metrics_dashboard/processor.rb
@@ -2,26 +2,33 @@
module Gitlab
module MetricsDashboard
+ # Responsible for processesing a dashboard hash, inserting
+ # relevantDB records & sorting for proper rendering in
+ # the UI. These includes shared metric info, custom metrics
+ # info, and alerts (only in EE).
class Processor
- def initialize(dashboard, project, environment)
- @dashboard = dashboard.deep_transform_keys(&:to_sym)
+ def initialize(project, environment)
@project = project
@environment = environment
end
- def stages
- @stages ||= [
+ def sequence
+ [
Stages::CommonMetricsInserter,
Stages::ProjectMetricsInserter,
Stages::Sorter
- ].freeze
+ ]
end
- def process
- stage_params = [@dashboard, @project, @environment]
- stages.each { |stage| stage.new(*stage_params).transform! }
+ # Returns a new dashboard hash with the results of
+ # running transforms on the dashboard.
+ def process(dashboard)
+ dashboard = dashboard.deep_transform_keys(&:to_sym)
- @dashboard
+ stage_params = [@project, @environment]
+ sequence.each { |stage| stage.new(*stage_params).transform!(dashboard) }
+
+ dashboard
end
end
end