summaryrefslogtreecommitdiff
path: root/lib/gitlab/prometheus/metric.rb
blob: d7cd4237a7baf3ee4c2870d13ccdcc82fdd4d8a8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
module Gitlab::Prometheus
  class Metric
    attr_reader :group, :title, :required_metrics, :weight, :y_label, :queries

    def initialize(title, required_metrics, weight, y_label, queries = [])
      @title = title
      @required_metrics = required_metrics
      @weight = weight
      @y_label = y_label || 'Values'
      @queries = queries
    end

    def self.metric_from_entry(entry)
      missing_fields = [:title, :required_metrics, :weight, :queries].select { |key| !entry.has_key?(key) }
      raise ParsingError.new("entry missing required fields #{missing_fields}") unless missing_fields.empty?

      Metric.new(entry[:title], entry[:required_metrics], entry[:weight], entry[:y_label], entry[:queries])
    end

    def self.metrics_from_list(list)
      list.map { |entry| metric_from_entry(entry) }
    end
  end
end