Class: Salus::BaseRenderer

Inherits:
Object
  • Object
show all
Includes:
Logging
Defined in:
lib/salus/renderer/base.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Logging

#log

Constructor Details

#initialize(opts = {}) ⇒ BaseRenderer

Returns a new instance of BaseRenderer.



13
14
15
16
# File 'lib/salus/renderer/base.rb', line 13

def initialize(opts={})
  @separator  = opts.fetch(:separator, '.')
  @allow_mute = opts.fetch(:allow_mute, false)
end

Class Method Details

.descendantsObject



9
10
11
# File 'lib/salus/renderer/base.rb', line 9

def self.descendants
  @@descendants || []
end

.inherited(subclass) ⇒ Object



4
5
6
7
# File 'lib/salus/renderer/base.rb', line 4

def self.inherited(subclass)
  @@descendants ||= []
  @@descendants << subclass
end

Instance Method Details

#iterate(node, prefix = "", &block) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/salus/renderer/base.rb', line 23

def iterate(node, prefix="", &block)
  case node
  when Hash
    node.each do |name, item|
      iterate(item, join_name(prefix, name), &block)
    end
  when Salus::Group
    node.each(@allow_mute) do |name, metric|
      iterate(metric, join_name(prefix, name), &block)
    end
    if node.has_subgroups?
      node.groups.each do |name, group|
        iterate(group, join_name(prefix, name), &block)
      end
    end
  when Salus::Metric
    block.call(prefix, node) unless node.expired?
  else
    log WARN, "Unknown node type #{node.class}"
  end
end

#render(data) ⇒ Object



18
19
20
21
# File 'lib/salus/renderer/base.rb', line 18

def render(data)
  # Implement renderer
  raise "Unimplemented"
end