2017-05-10 09:25:30 +00:00
|
|
|
module Gitlab::Prometheus
|
|
|
|
class Metric
|
2017-05-31 17:36:07 +00:00
|
|
|
attr_reader :group, :title, :required_metrics, :weight, :y_label, :queries
|
2017-05-10 09:25:30 +00:00
|
|
|
|
2017-05-31 17:36:07 +00:00
|
|
|
def initialize(title, required_metrics, weight, y_label, queries = [])
|
2017-05-10 09:25:30 +00:00
|
|
|
@title = title
|
2017-05-31 17:36:07 +00:00
|
|
|
@required_metrics = required_metrics
|
2017-05-10 09:25:30 +00:00
|
|
|
@weight = weight
|
2017-05-30 11:17:13 +00:00
|
|
|
@y_label = y_label || 'Values'
|
2017-05-10 09:25:30 +00:00
|
|
|
@queries = queries
|
|
|
|
end
|
|
|
|
|
2017-05-31 17:36:07 +00:00
|
|
|
def self.metric_from_entry(entry)
|
|
|
|
missing_fields = [:title, :required_metrics, :weight, :queries].select { |key| !entry.has_key?(key) }
|
2017-05-10 09:25:30 +00:00
|
|
|
raise ParsingError.new("entry missing required fields #{missing_fields}") unless missing_fields.empty?
|
|
|
|
|
2017-05-31 17:36:07 +00:00
|
|
|
Metric.new(entry[:title], entry[:required_metrics], entry[:weight], entry[:y_label], entry[:queries])
|
2017-05-10 09:25:30 +00:00
|
|
|
end
|
|
|
|
|
2017-05-31 17:36:07 +00:00
|
|
|
def self.metrics_from_list(list)
|
|
|
|
list.map { |entry| metric_from_entry(entry) }
|
2017-05-10 09:25:30 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|