32 lines
843 B
Perl
32 lines
843 B
Perl
package App::Netdisco::Worker::Plugin::DiscoverAll;
|
|
|
|
use Dancer ':syntax';
|
|
use App::Netdisco::Worker::Plugin;
|
|
use aliased 'App::Netdisco::Worker::Status';
|
|
|
|
use App::Netdisco::JobQueue qw/jq_queued jq_insert/;
|
|
use Dancer::Plugin::DBIC 'schema';
|
|
|
|
register_worker({ phase => 'main' }, sub {
|
|
my ($job, $workerconf) = @_;
|
|
|
|
my %queued = map {$_ => 1} jq_queued('discover');
|
|
my @devices = schema('netdisco')->resultset('Device')->search({
|
|
-or => [ 'vendor' => undef, 'vendor' => { '!=' => 'netdisco' }],
|
|
})->get_column('ip')->all;
|
|
my @filtered_devices = grep {!exists $queued{$_}} @devices;
|
|
|
|
jq_insert([
|
|
map {{
|
|
device => $_,
|
|
action => 'discover',
|
|
username => $job->username,
|
|
userip => $job->userip,
|
|
}} (@filtered_devices)
|
|
]);
|
|
|
|
return Status->done('Queued discover job for all devices');
|
|
});
|
|
|
|
true;
|