From 58d0fbddda85f01c2607e708725bc364740602d7 Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Sat, 7 Oct 2017 13:21:13 +0100 Subject: [PATCH] do not run discover parts if properties failed to complete --- .../Worker/Plugin/Discover/CanonicalIP.pm | 3 +- .../Worker/Plugin/Discover/Entities.pm | 1 + .../Worker/Plugin/Discover/Neighbors.pm | 3 +- .../Worker/Plugin/Discover/PortPower.pm | 1 + .../Worker/Plugin/Discover/Properties.pm | 1 + .../Netdisco/Worker/Plugin/Discover/VLANs.pm | 1 + .../Worker/Plugin/Discover/Wireless.pm | 3 +- .../Worker/Plugin/Discover/WithNodes.pm | 36 +++++++++---------- .../Worker/Plugin/Macsuck/WirelessNodes.pm | 4 +-- 9 files changed, 27 insertions(+), 26 deletions(-) diff --git a/lib/App/Netdisco/Worker/Plugin/Discover/CanonicalIP.pm b/lib/App/Netdisco/Worker/Plugin/Discover/CanonicalIP.pm index 48be3949..ecd0c7c4 100644 --- a/lib/App/Netdisco/Worker/Plugin/Discover/CanonicalIP.pm +++ b/lib/App/Netdisco/Worker/Plugin/Discover/CanonicalIP.pm @@ -13,6 +13,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub { my ($job, $workerconf) = @_; my $device = $job->device; + return unless $device->in_storage; my $snmp = App::Netdisco::Transport::SNMP->reader_for($device) or return Status->defer("discover failed: could not SNMP connect to $device"); @@ -59,7 +60,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub { } # ALIAS } - return true if $new_ip eq $old_ip; + return if $new_ip eq $old_ip; schema('netdisco')->txn_do(sub { # delete target device with the same vendor and serial number diff --git a/lib/App/Netdisco/Worker/Plugin/Discover/Entities.pm b/lib/App/Netdisco/Worker/Plugin/Discover/Entities.pm index a7a5de68..60d49cb1 100644 --- a/lib/App/Netdisco/Worker/Plugin/Discover/Entities.pm +++ b/lib/App/Netdisco/Worker/Plugin/Discover/Entities.pm @@ -12,6 +12,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub { my ($job, $workerconf) = @_; my $device = $job->device; + return unless $device->in_storage; my $snmp = App::Netdisco::Transport::SNMP->reader_for($device) or return Status->defer("discover failed: could not SNMP connect to $device"); diff --git a/lib/App/Netdisco/Worker/Plugin/Discover/Neighbors.pm b/lib/App/Netdisco/Worker/Plugin/Discover/Neighbors.pm index 65eed0e0..aecec0e9 100644 --- a/lib/App/Netdisco/Worker/Plugin/Discover/Neighbors.pm +++ b/lib/App/Netdisco/Worker/Plugin/Discover/Neighbors.pm @@ -34,6 +34,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub { my ($job, $workerconf) = @_; my $device = $job->device; + return unless $device->in_storage; my $snmp = App::Netdisco::Transport::SNMP->reader_for($device) or return Status->defer("discover failed: could not SNMP connect to $device"); @@ -60,8 +61,6 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub { subaction => 'with-nodes', }); } - - return true; }); =head2 store_neighbors( $device ) diff --git a/lib/App/Netdisco/Worker/Plugin/Discover/PortPower.pm b/lib/App/Netdisco/Worker/Plugin/Discover/PortPower.pm index 9e00de70..af122da1 100644 --- a/lib/App/Netdisco/Worker/Plugin/Discover/PortPower.pm +++ b/lib/App/Netdisco/Worker/Plugin/Discover/PortPower.pm @@ -11,6 +11,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub { my ($job, $workerconf) = @_; my $device = $job->device; + return unless $device->in_storage; my $snmp = App::Netdisco::Transport::SNMP->reader_for($device) or return Status->defer("discover failed: could not SNMP connect to $device"); diff --git a/lib/App/Netdisco/Worker/Plugin/Discover/Properties.pm b/lib/App/Netdisco/Worker/Plugin/Discover/Properties.pm index 1ffd228c..b8a50ab7 100644 --- a/lib/App/Netdisco/Worker/Plugin/Discover/Properties.pm +++ b/lib/App/Netdisco/Worker/Plugin/Discover/Properties.pm @@ -106,6 +106,7 @@ register_worker({ phase => 'early', driver => 'snmp' }, sub { my ($job, $workerconf) = @_; my $device = $job->device; + return unless $device->in_storage; my $snmp = App::Netdisco::Transport::SNMP->reader_for($device) or return Status->defer("discover failed: could not SNMP connect to $device"); diff --git a/lib/App/Netdisco/Worker/Plugin/Discover/VLANs.pm b/lib/App/Netdisco/Worker/Plugin/Discover/VLANs.pm index 13db7b2c..02401389 100644 --- a/lib/App/Netdisco/Worker/Plugin/Discover/VLANs.pm +++ b/lib/App/Netdisco/Worker/Plugin/Discover/VLANs.pm @@ -11,6 +11,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub { my ($job, $workerconf) = @_; my $device = $job->device; + return unless $device->in_storage; my $snmp = App::Netdisco::Transport::SNMP->reader_for($device) or return Status->defer("discover failed: could not SNMP connect to $device"); diff --git a/lib/App/Netdisco/Worker/Plugin/Discover/Wireless.pm b/lib/App/Netdisco/Worker/Plugin/Discover/Wireless.pm index 699718e7..f19579ea 100644 --- a/lib/App/Netdisco/Worker/Plugin/Discover/Wireless.pm +++ b/lib/App/Netdisco/Worker/Plugin/Discover/Wireless.pm @@ -11,11 +11,12 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub { my ($job, $workerconf) = @_; my $device = $job->device; + return unless $device->in_storage; my $snmp = App::Netdisco::Transport::SNMP->reader_for($device) or return Status->defer("discover failed: could not SNMP connect to $device"); my $ssidlist = $snmp->i_ssidlist; - return true unless scalar keys %$ssidlist; + return unless scalar keys %$ssidlist; my $interfaces = $snmp->interfaces; my $ssidbcast = $snmp->i_ssidbcast; diff --git a/lib/App/Netdisco/Worker/Plugin/Discover/WithNodes.pm b/lib/App/Netdisco/Worker/Plugin/Discover/WithNodes.pm index cbdc2a05..3f2d2598 100644 --- a/lib/App/Netdisco/Worker/Plugin/Discover/WithNodes.pm +++ b/lib/App/Netdisco/Worker/Plugin/Discover/WithNodes.pm @@ -12,28 +12,26 @@ register_worker({ phase => 'main' }, sub { # if requested, and the device has not yet been # arpniped/macsucked, queue those jobs now - if ($device->in_storage - and $job->subaction and $job->subaction eq 'with-nodes') { - if (!defined $device->last_macsuck and $device->has_layer(2)) { - jq_insert({ - device => $device->ip, - action => 'macsuck', - username => $job->username, - userip => $job->userip, - }); - } + return unless $device->in_storage + and $job->subaction and $job->subaction eq 'with-nodes'; - if (!defined $device->last_arpnip and $device->has_layer(3)) { - jq_insert({ - device => $device->ip, - action => 'arpnip', - username => $job->username, - userip => $job->userip, - }); - } + if (!defined $device->last_macsuck and $device->has_layer(2)) { + jq_insert({ + device => $device->ip, + action => 'macsuck', + username => $job->username, + userip => $job->userip, + }); } - return true; + if (!defined $device->last_arpnip and $device->has_layer(3)) { + jq_insert({ + device => $device->ip, + action => 'arpnip', + username => $job->username, + userip => $job->userip, + }); + } }); true; diff --git a/lib/App/Netdisco/Worker/Plugin/Macsuck/WirelessNodes.pm b/lib/App/Netdisco/Worker/Plugin/Macsuck/WirelessNodes.pm index 2a711e5a..d11c5f5e 100644 --- a/lib/App/Netdisco/Worker/Plugin/Macsuck/WirelessNodes.pm +++ b/lib/App/Netdisco/Worker/Plugin/Macsuck/WirelessNodes.pm @@ -18,7 +18,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub { my $now = 'to_timestamp('. (join '.', gettimeofday) .')'; my $cd11_txrate = $snmp->cd11_txrate; - return true unless $cd11_txrate and scalar keys %$cd11_txrate; + return unless $cd11_txrate and scalar keys %$cd11_txrate; if (setting('store_wireless_clients')) { debug sprintf ' [%s] macsuck - gathering wireless client info', @@ -77,8 +77,6 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub { }); }); } - - return true; }); true;