multi worker actions need not return done from all workers

This commit is contained in:
Oliver Gorwits
2017-10-07 09:35:14 +01:00
parent ee38bae48a
commit 256c10bae5
13 changed files with 32 additions and 49 deletions

View File

@@ -25,7 +25,7 @@ register_worker({ stage => 'check' }, sub {
return Status->defer("arpnip deferred: $device is not arpnipable")
unless is_arpnipable_now($device);
return Status->done('Arpnip is able to run');
return Status->done('arpnip is able to run');
});
true;

View File

@@ -22,12 +22,10 @@ register_worker({ stage => 'main', driver => 'snmp' }, sub {
# TODO: IPv6 subnets
my $now = 'to_timestamp('. (join '.', gettimeofday) .')';
store_subnet($_, $now) for @subnets;
debug sprintf ' [%s] arpnip - processed %s Subnet entries',
$device->ip, scalar @subnets;
return Status->done("Ended arpnip for $device");
return Status->noop(sprintf ' [%s] arpnip - processed %s Subnet entries',
$device->ip, scalar @subnets);
});
# gathers device subnets

View File

@@ -59,8 +59,7 @@ register_worker({ stage => 'main', driver => 'snmp' }, sub {
} # ALIAS
}
return Status->done("Ended discover for $device")
if $new_ip eq $old_ip;
return true if $new_ip eq $old_ip;
schema('netdisco')->txn_do(sub {
# delete target device with the same vendor and serial number
@@ -72,11 +71,9 @@ register_worker({ stage => 'main', driver => 'snmp' }, sub {
$device->renumber($new_ip)
or die "cannot renumber to: $new_ip"; # rollback
debug sprintf ' [%s] device - changed IP to %s (%s)',
$old_ip, $device->ip, ($device->dns || '');
return Status->noop(sprintf ' [%s] device - changed IP to %s (%s)',
$old_ip, $device->ip, ($device->dns || ''));
});
return Status->done("Ended discover for $device");
});
true;

View File

@@ -40,11 +40,9 @@ register_worker({ stage => 'main', driver => 'snmp' }, sub {
});
});
debug
return Status->noop(
sprintf ' [%s] modules - 0 chassis components (added one pseudo for chassis)',
$device->ip;
return Status->done("Ended discover for $device");
$device->ip);
}
my $e_descr = $snmp->e_descr;
@@ -86,11 +84,10 @@ register_worker({ stage => 'main', driver => 'snmp' }, sub {
debug sprintf ' [%s] modules - removed %d chassis modules',
$device->ip, $gone;
$device->modules->populate(\@modules);
debug sprintf ' [%s] modules - added %d new chassis modules',
$device->ip, scalar @modules;
});
return Status->done("Ended discover for $device");
return Status->noop(sprintf ' [%s] modules - added %d new chassis modules',
$device->ip, scalar @modules);
});
});
true;

View File

@@ -141,11 +141,10 @@ register_worker({ stage => 'early', driver => 'snmp' }, sub {
$device->ip, $gone;
$device->update_or_insert(undef, {for => 'update'});
$device->ports->populate([values %interfaces]);
debug sprintf ' [%s] interfaces - added %d new interfaces',
$device->ip, scalar values %interfaces;
});
return Status->done("Ended discover for $device");
return Status->noop(sprintf ' [%s] interfaces - added %d new interfaces',
$device->ip, scalar values %interfaces);
});
});
true;

View File

@@ -61,7 +61,7 @@ register_worker({ stage => 'main', driver => 'snmp' }, sub {
});
}
return Status->done("Ended discover for $device");
return true;
});
=head2 store_neighbors( $device )

View File

@@ -18,8 +18,7 @@ register_worker({ stage => 'main', driver => 'snmp' }, sub {
my $p_status = $snmp->peth_power_status;
if (!defined $p_watts) {
debug sprintf ' [%s] power - 0 power modules', $device->ip;
return Status->done("Ended discover for $device");
return Status->noop(sprintf ' [%s] power - 0 power modules', $device->ip);
}
# build device module power info suitable for DBIC
@@ -72,11 +71,10 @@ register_worker({ stage => 'main', driver => 'snmp' }, sub {
debug sprintf ' [%s] power - removed %d PoE capable ports',
$device->ip, $gone;
$device->powered_ports->populate(\@portpower);
debug sprintf ' [%s] power - added %d new PoE capable ports',
$device->ip, scalar @portpower;
});
return Status->done("Ended discover for $device");
return Status->noop(sprintf ' [%s] power - added %d new PoE capable ports',
$device->ip, scalar @portpower);
});
});
true;

View File

@@ -12,7 +12,7 @@ use Dancer::Plugin::DBIC 'schema';
use NetAddr::IP::Lite ':lower';
use Encode;
register_worker({ stage => 'check', driver => 'snmp' }, sub {
register_worker({ stage => 'main', driver => 'snmp' }, sub {
my ($job, $workerconf) = @_;
my $device = $job->device;

View File

@@ -85,11 +85,10 @@ register_worker({ stage => 'main', driver => 'snmp' }, sub {
debug sprintf ' [%s] vlans - removed %d port VLANs',
$device->ip, $gone;
$device->port_vlans->populate(\@portvlans);
debug sprintf ' [%s] vlans - added %d new port VLANs',
$device->ip, scalar @portvlans;
});
return Status->done("Ended discover for $device");
return Status->noop(sprintf ' [%s] vlans - added %d new port VLANs',
$device->ip, scalar @portvlans);
});
});
true;

View File

@@ -15,8 +15,7 @@ register_worker({ stage => 'main', driver => 'snmp' }, sub {
or return Status->defer("discover failed: could not SNMP connect to $device");
my $ssidlist = $snmp->i_ssidlist;
return Status->done("Ended discover for $device")
unless scalar keys %$ssidlist;
return true unless scalar keys %$ssidlist;
my $interfaces = $snmp->interfaces;
my $ssidbcast = $snmp->i_ssidbcast;
@@ -76,11 +75,10 @@ register_worker({ stage => 'main', driver => 'snmp' }, sub {
debug sprintf ' [%s] wireless - removed %d wireless channels',
$device->ip, $gone;
$device->wireless_ports->populate(\@channels);
debug sprintf ' [%s] wireless - added %d new wireless channels',
$device->ip, scalar @channels;
});
return Status->done("Ended discover for $device");
return Status->noop(sprintf ' [%s] wireless - added %d new wireless channels',
$device->ip, scalar @channels);
});
});
true;

View File

@@ -33,7 +33,7 @@ register_worker({ stage => 'main' }, sub {
}
}
return Status->done("Ended discover for $device");
return true;
});
true;

View File

@@ -18,17 +18,15 @@ register_worker({ stage => 'main', driver => 'snmp' }, sub {
my $now = 'to_timestamp('. (join '.', gettimeofday) .')';
my $cd11_txrate = $snmp->cd11_txrate;
return Status->done("Ended macsuck for $device")
unless $cd11_txrate and scalar keys %$cd11_txrate;
return true unless $cd11_txrate and scalar keys %$cd11_txrate;
if (setting('store_wireless_clients')) {
debug sprintf ' [%s] macsuck - gathering wireless client info',
$device->ip;
}
else {
debug sprintf ' [%s] macsuck - dot11 info available but skipped due to config',
$device->ip;
return Status->done("Ended macsuck for $device");
return Status->noop(sprintf ' [%s] macsuck - dot11 info available but skipped due to config',
$device->ip);
}
my $cd11_rateset = $snmp->cd11_rateset();
@@ -80,7 +78,7 @@ register_worker({ stage => 'main', driver => 'snmp' }, sub {
});
}
return Status->done("Ended macsuck for $device");
return true;
});
true;

View File

@@ -7,7 +7,6 @@ use aliased 'App::Netdisco::Worker::Status';
use App::Netdisco::Util::NodeMonitor ();
register_worker({ stage => 'main' }, sub {
my ($job, $workerconf) = @_;
App::Netdisco::Util::NodeMonitor::monitor();
return Status->done('Generated monitor data');
});