summaryrefslogtreecommitdiff
path: root/app/models/performance_monitoring/prometheus_panel_group.rb
blob: e672545fce3f2b024e1f8a4601924ba1d020ea53 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# frozen_string_literal: true

module PerformanceMonitoring
  class PrometheusPanelGroup
    include ActiveModel::Model

    attr_accessor :group, :priority, :panels

    validates :group, presence: true
    validates :panels, presence: true

    def self.from_json(json_content)
      panel_group = new(
        group: json_content['group'],
        priority: json_content['priority'],
        panels: json_content['panels'].map { |panel| PrometheusPanel.from_json(panel) }
      )

      panel_group.tap(&:validate!)
    end
  end
end