register_worker({
phase
=>
'late'
},
sub
{
my
(
$job
,
$workerconf
) =
@_
;
my
$device
=
$job
->device;
my
$snmp
= App::Netdisco::Transport::SNMP->reader_for(
$device
)
or
return
Status->defer(
"discover failed: could not SNMP connect to $device"
);
return
unless
$device
->in_storage
and not
$device
->oids->count and
$snmp
->offline;
dump_cache_to_browserdata(
$device
,
$snmp
);
my
$frozen
= encode_base64( nfreeze(
$snmp
->cache ) );
$device
->update_or_create_related(
'snapshot'
, {
cache
=>
$frozen
});
return
Status
->info(
sprintf
' [%s] discover - oids and cache stored'
,
$device
);
});
true;