1package App::Netdisco::Worker::Plugin::Macwalk; 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('macsuck'); 14 my @devices = schema('netdisco')->resultset('Device') 15 ->has_layer('2')->get_column('ip')->all; 16 my @filtered_devices = grep {!exists $queued{$_}} @devices; 17 18 jq_insert([ 19 map {{ 20 device => $_, 21 action => 'macsuck', 22 username => $job->username, 23 userip => $job->userip, 24 }} (@filtered_devices) 25 ]); 26 27 return Status->done('Queued macsuck job for all devices'); 28}); 29 30true; 31