class PCPEasy::Agent

Attributes

host[R]

Public Class Methods

new(host) click to toggle source
# File lib/pcp_easy/agent.rb, line 8
def initialize(host)
  @host = host
end

Public Instance Methods

metric(name) click to toggle source
# File lib/pcp_easy/agent.rb, line 12
def metric(name)
  metrics([name]).first
end
metrics(names) click to toggle source
# File lib/pcp_easy/agent.rb, line 16
def metrics(names)
  raise ArgumentError, "array required for metrics" unless names.is_a? Array
  pmids = pmapi.pmLookupName(names)
  pmids_names = Hash[pmids.zip(names)]
  pmapi.pmFetch(pmids).vset.collect {|v| metric_from_vset(v, pmids_names)}
end

Private Instance Methods

metric_from_vset(pm_value_set, pmid_names) click to toggle source
# File lib/pcp_easy/agent.rb, line 25
def metric_from_vset(pm_value_set, pmid_names)
  pm_desc = pmapi.pmLookupDesc pm_value_set.pmid
  name = pmid_names[pm_value_set.pmid]

  if pm_desc.indom == PCPEasy::PMAPI::PM_INDOM_NULL
    metric_values = metric_value_for_no_indom(pm_value_set, pm_desc)
  else
    metric_values = metric_value_for_indoms(pm_value_set, pm_desc)
  end
  PCPEasy::Metric.new(name, pm_desc, metric_values)
end
metric_value_for_indoms(pm_value_set, pm_desc) click to toggle source
# File lib/pcp_easy/agent.rb, line 42
def metric_value_for_indoms(pm_value_set, pm_desc)
  indoms = pmapi.pmGetInDom(pm_desc.indom)
  pm_value_set.vlist.collect do |v|
    value = pmapi.pmExtractValue(pm_value_set.valfmt, pm_desc, v)
    PCPEasy::Metric::Value.new(value, indoms[v.inst])
  end
end
metric_value_for_no_indom(pm_value_set, pm_desc) click to toggle source
# File lib/pcp_easy/agent.rb, line 37
def metric_value_for_no_indom(pm_value_set, pm_desc)
  value = pmapi.pmExtractValue(pm_value_set.valfmt, pm_desc, pm_value_set.vlist.first)
  [PCPEasy::Metric::Value.new(value, nil)]
end
pmapi() click to toggle source
# File lib/pcp_easy/agent.rb, line 52
def pmapi
  @pmapi ||= PCPEasy::PMAPI.new(@host)
end