change SNMP to be a cached transport singleton

This commit is contained in:
Oliver Gorwits
2017-07-25 20:53:56 +01:00
parent c31030ef70
commit 4056831f99
7 changed files with 302 additions and 247 deletions

View File

@@ -1,6 +1,6 @@
package App::Netdisco::Backend::Worker::Interactive::DeviceActions;
use App::Netdisco::Util::SNMP 'snmp_connect_rw';
use App::Netdisco::Core::Transport::SNMP;
use App::Netdisco::Util::Device 'get_device';
use App::Netdisco::Backend::Util ':all';
@@ -22,7 +22,7 @@ sub _set_device_generic {
$data ||= '';
# snmp connect using rw community
my $info = snmp_connect_rw($ip)
my $info = App::Netdisco::Core::Transport::SNMP->instance->writer_for($ip)
or return job_defer("Failed to connect to device [$ip] to update $slot");
my $method = 'set_'. $slot;

View File

@@ -1,7 +1,7 @@
package App::Netdisco::Backend::Worker::Interactive::PortActions;
use App::Netdisco::Util::Port ':all';
use App::Netdisco::Util::SNMP 'snmp_connect_rw';
use App::Netdisco::Core::Transport::SNMP;
use App::Netdisco::Util::Device 'get_device';
use App::Netdisco::Backend::Util ':all';
@@ -74,7 +74,7 @@ sub _set_port_generic {
if ($device->vendor ne 'netdisco') {
# snmp connect using rw community
my $info = snmp_connect_rw($ip)
my $info = App::Netdisco::Core::Transport::SNMP->instance->writer_for($ip)
or return job_defer("Failed to connect to device [$ip] to control port");
my $iid = get_iid($info, $port)
@@ -127,7 +127,7 @@ sub power {
$data = 'false' if $data =~ m/^(off|no|down)$/;
# snmp connect using rw community
my $info = snmp_connect_rw($ip)
my $info = App::Netdisco::Core::Transport::SNMP->instance->writer_for($ip)
or return job_defer("Failed to connect to device [$ip] to control power");
my $powerid = get_powerid($info, $port)

View File

@@ -2,7 +2,7 @@ package App::Netdisco::Backend::Worker::Poller::Common;
use Dancer qw/:moose :syntax :script/;
use App::Netdisco::Util::SNMP 'snmp_connect';
use App::Netdisco::Core::Transport::SNMP;
use App::Netdisco::Util::Device 'get_device';
use App::Netdisco::Backend::Util ':all';
use App::Netdisco::JobQueue qw/jq_queued jq_insert/;
@@ -63,7 +63,7 @@ sub _single_body {
return job_defer("$job_type deferred: $host is not ${job_type}able");
}
my $snmp = snmp_connect($device);
my $snmp = App::Netdisco::Core::Transport::SNMP->instance->reader_for($device);
if (!defined $snmp) {
return job_defer("$job_type failed: could not SNMP connect to $host");
}

View File

@@ -2,7 +2,7 @@ package App::Netdisco::Backend::Worker::Poller::Device;
use Dancer qw/:moose :syntax :script/;
use App::Netdisco::Util::SNMP 'snmp_connect';
use App::Netdisco::Core::Transport::SNMP;
use App::Netdisco::Util::Device qw/get_device is_discoverable_now/;
use App::Netdisco::Core::Discover ':all';
use App::Netdisco::Backend::Util ':all';
@@ -59,7 +59,7 @@ sub discover {
return job_defer("discover deferred: $host is not discoverable");
}
my $snmp = snmp_connect($device);
my $snmp = App::Netdisco::Core::Transport::SNMP->instance->reader_for($device);
if (!defined $snmp) {
return job_defer("discover failed: could not SNMP connect to $host");
}