lib/logstash/inputs/snmp/client.rb in logstash-input-snmp-0.1.0.beta2 vs lib/logstash/inputs/snmp/client.rb in logstash-input-snmp-0.1.0.beta3

- old
+ new

@@ -12,26 +12,34 @@ java_import "org.snmp4j.smi.GenericAddress" java_import "org.snmp4j.smi.OID" java_import "org.snmp4j.smi.OctetString" java_import "org.snmp4j.smi.VariableBinding" java_import "org.snmp4j.transport.DefaultUdpTransportMapping" +java_import "org.snmp4j.transport.DefaultTcpTransportMapping" java_import "org.snmp4j.util.TreeUtils" java_import "org.snmp4j.util.DefaultPDUFactory" java_import "org.snmp4j.asn1.BER" module LogStash class SnmpClientError < StandardError end class SnmpClient - def initialize(address, community, version, retries, timeout, mib) - @target = build_target(address, community, version, retries, timeout) + def initialize(protocol, address, port, community, version, retries, timeout, mib) + transport = case protocol.to_s + when "udp" + DefaultUdpTransportMapping.new + when "tcp" + DefaultTcpTransportMapping.new + else + raise(SnmpClientError, "invalid transport protocol specified '#{protocol.to_s}', expecting 'udp' or 'tcp'") + end + + @target = build_target("#{protocol}:#{address}/#{port}", community, version, retries, timeout) @mib = mib - # for now hardwired udp transport - transport = DefaultUdpTransportMapping.new @snmp = Snmp.new(transport) transport.listen() end def get(oids, strip_root = 0) @@ -126,10 +134,16 @@ target.setVersion(parse_version(version)) target end def parse_version(version) - # TODO implement - SnmpConstants.version2c + case version.to_s + when "2c" + SnmpConstants.version2c + when "1" + SnmpConstants.version1 + else + raise(SnmpClientError, "protocol version '#{version}' is not supported, expected versions are '1' and '2c'") + end end end end