class NetAtlas::Plugin::SNMP

Public Class Methods

new(*args) click to toggle source
Calls superclass method
# File lib/netatlas/plugin/snmp.rb, line 11
def initialize(*args)
  @sessions = {}
  super *args
end

Public Instance Methods

poll(data_source, &block) click to toggle source
# File lib/netatlas/plugin/snmp.rb, line 17
def poll(data_source, &block)
  arguments = data_source.arguments ? data_source.arguments.attributes : {:community => "public", :version => "1"}
  session = @@sessions[data_source.ip_address] ||= SNMP4EM::SNMPv1.new(:host => data_source.ip_address, :community => arguments[:community] || "public", :version => arguments[:version])
  oid = Smi.translate(data_source.arguments.oid)
  request = session.get([oid])
  request.callback { |response|
    block.call :ok, response[oid]
  }
  request.errback {|error|
    puts "SNMP ERROR: #{error.inspect}"
    puts data_source.attributes.inspect
    block.call :error, nil
  }
end