1package App::Netdisco::Worker::Plugin::DiscoverAll; 2 3use Dancer ':syntax'; 4use App::Netdisco::Worker::Plugin; 5use aliased 'App::Netdisco::Worker::Status'; 6 7use App::Netdisco::JobQueue qw/jq_queued jq_insert/; 8use Dancer::Plugin::DBIC 'schema'; 9 10register_worker({ phase => 'main' }, sub { 11 my ($job, $workerconf) = @_; 12 13 my %queued = map {$_ => 1} jq_queued('discover'); 14 my @devices = schema('netdisco')->resultset('Device')->search({ 15 -or => [ 'vendor' => undef, 'vendor' => { '!=' => 'netdisco' }], 16 })->get_column('ip')->all; 17 my @filtered_devices = grep {!exists $queued{$_}} @devices; 18 19 jq_insert([ 20 map {{ 21 device => $_, 22 action => 'discover', 23 username => $job->username, 24 userip => $job->userip, 25 }} (@filtered_devices) 26 ]); 27 28 return Status->done('Queued discover job for all devices'); 29}); 30 31true; 32