class Kstats::Node::Probe

Attributes

registered[RW]
category[RW]
command[RW]
command_block[RW]
id[R]
name[RW]
type[RW]
variables[RW]

Public Class Methods

get_format(probe) click to toggle source
# File lib/kstats/node/probe.rb, line 12
def get_format probe
  probe = @fixed_registered.select{|x| x.id == probe }.first
  if probe.nil?
    return nil
  else
    {
      type: probe.type,
      variables: probe.variables.inject({}){ |h, x|
        h[x.name] = {}
        h[x.name][:desc] = x.desc
        h[x.name][:color] = x.color
        h
      }
    }
  end
end
list() click to toggle source
# File lib/kstats/node/probe.rb, line 60
def list
  probe_categories = {}
  @fixed_registered.each do |probe|
    probe_categories[probe.category] ||= []
    probe_categories[probe.category] << { name: probe.name, id: probe.id }
  end

  probe_categories
end
new(id) click to toggle source
# File lib/kstats/node/probe.rb, line 117
def initialize id
  @variables = []
  @id = id
end
register(name, &block) click to toggle source
# File lib/kstats/node/probe.rb, line 8
def register name, &block
  @registered << Probe.new(name).from_dsl(&block)
end
reload_and_test!() click to toggle source
# File lib/kstats/node/probe.rb, line 29
def reload_and_test!
  @fixed_registered = @registered
  @registered = []

  dir = Kstats::Node::Config['probes_dir']

  Dir[File.join(dir, "*.rb")].each do |probe_file|
    begin
      load(probe_file)
    rescue => e
      puts "Unable to load #{probe_file}: #{e}"
      puts "*\t#{e.backtrace.join("\n*\t")}"
    end
  end

  probes = {}

    @registered.each do |probe|
      begin
        probes[probe.id] = probe.test
      rescue => e
        puts "Exception for probe #{probe.id} : #{e.message}"
        puts "*\t#{e.backtrace.join("\n*\t")}"
      end
    end

  @fixed_registered  = @registered

  probes
end

Public Instance Methods

add_variable(var) click to toggle source
# File lib/kstats/node/probe.rb, line 128
def add_variable var
  @variables << var
end
from_dsl(&block) click to toggle source
# File lib/kstats/node/probe.rb, line 122
def from_dsl &block
  DSL.new(self).instance_eval(&block)

  return self
end
test() click to toggle source
# File lib/kstats/node/probe.rb, line 132
def test
  @command = self.command_block.call unless self.command_block.nil?

  @variables.inject({}){|h, x| h[x.name] = x.test; h }
end