1package App::Netdisco::Worker::Plugin::Discover::WithNodes; 2 3use Dancer ':syntax'; 4use App::Netdisco::Worker::Plugin; 5use aliased 'App::Netdisco::Worker::Status'; 6 7use App::Netdisco::JobQueue 'jq_insert'; 8use Dancer::Plugin::DBIC 'schema'; 9 10register_worker({ phase => 'main' }, sub { 11 my ($job, $workerconf) = @_; 12 my $device = $job->device; 13 14 # if requested, and the device has not yet been 15 # arpniped/macsucked, queue those jobs now 16 return unless $device->in_storage and $job->subaction eq 'with-nodes'; 17 18 if (!defined $device->last_macsuck and $device->has_layer(2)) { 19 jq_insert({ 20 device => $device->ip, 21 action => 'macsuck', 22 username => $job->username, 23 userip => $job->userip, 24 }); 25 } 26 27 if (!defined $device->last_arpnip and $device->has_layer(3)) { 28 jq_insert({ 29 device => $device->ip, 30 action => 'arpnip', 31 username => $job->username, 32 userip => $job->userip, 33 }); 34 } 35 36 return Status->info("Queued macsuck and arpnip for $device."); 37}); 38 39true; 40