only set layer if successful action
This commit is contained in:
@@ -34,10 +34,7 @@ register_worker({ phase => 'store' }, sub {
|
|||||||
debug sprintf ' [%s] arpnip - processed %s IPv6 Neighbor Cache entries',
|
debug sprintf ' [%s] arpnip - processed %s IPv6 Neighbor Cache entries',
|
||||||
$device->ip, scalar @{ vars->{'v6arps'} };
|
$device->ip, scalar @{ vars->{'v6arps'} };
|
||||||
|
|
||||||
$device->update({
|
$device->update({last_arpnip => \$now});
|
||||||
last_arpnip => \$now,
|
|
||||||
layers => \[q{overlay(layers placing '1' from 6 for 1)}],
|
|
||||||
});
|
|
||||||
|
|
||||||
my $status = $job->best_status;
|
my $status = $job->best_status;
|
||||||
return Status->$status("Ended arpnip for $device");
|
return Status->$status("Ended arpnip for $device");
|
||||||
@@ -58,6 +55,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
|
|||||||
push @{ vars->{'v6arps'} },
|
push @{ vars->{'v6arps'} },
|
||||||
@{get_arps_snmp($device, $snmp->ipv6_n2p_mac, $snmp->ipv6_n2p_addr) };
|
@{get_arps_snmp($device, $snmp->ipv6_n2p_mac, $snmp->ipv6_n2p_addr) };
|
||||||
|
|
||||||
|
$device->update({layers => \[q{overlay(layers placing '1' from 6 for 1)}]});
|
||||||
return Status->done("Gathered arp caches from $device");
|
return Status->done("Gathered arp caches from $device");
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -85,24 +83,25 @@ sub get_arps_snmp {
|
|||||||
}
|
}
|
||||||
|
|
||||||
register_worker({ phase => 'main', driver => 'cli' }, sub {
|
register_worker({ phase => 'main', driver => 'cli' }, sub {
|
||||||
my ($job, $workerconf) = @_;
|
my ($job, $workerconf) = @_;
|
||||||
|
|
||||||
my $device = $job->device;
|
my $device = $job->device;
|
||||||
my $cli = App::Netdisco::Transport::SSH->session_for($device)
|
my $cli = App::Netdisco::Transport::SSH->session_for($device)
|
||||||
or return Status->defer("arpnip failed: could not SSH connect to $device");
|
or return Status->defer("arpnip failed: could not SSH connect to $device");
|
||||||
|
|
||||||
# should be both v4 and v6
|
# should be both v4 and v6
|
||||||
my @arps = @{ get_arps_cli($device, [$cli->arpnip]) };
|
my @arps = @{ get_arps_cli($device, [$cli->arpnip]) };
|
||||||
|
|
||||||
# cache v4 arp table
|
# cache v4 arp table
|
||||||
push @{ vars->{'v4arps'} },
|
push @{ vars->{'v4arps'} },
|
||||||
grep { NetAddr::IP::Lite->new($_->{ip})->bits == 32 } @arps;
|
grep { NetAddr::IP::Lite->new($_->{ip})->bits == 32 } @arps;
|
||||||
|
|
||||||
# cache v6 neighbor cache
|
# cache v6 neighbor cache
|
||||||
push @{ vars->{'v6arps'} },
|
push @{ vars->{'v6arps'} },
|
||||||
grep { NetAddr::IP::Lite->new($_->{ip})->bits == 128 } @arps;
|
grep { NetAddr::IP::Lite->new($_->{ip})->bits == 128 } @arps;
|
||||||
|
|
||||||
return Status->done("Gathered arp caches from $device");
|
$device->update({layers => \[q{overlay(layers placing '1' from 6 for 1)}]});
|
||||||
|
return Status->done("Gathered arp caches from $device");
|
||||||
});
|
});
|
||||||
|
|
||||||
sub get_arps_cli {
|
sub get_arps_cli {
|
||||||
|
|||||||
@@ -92,10 +92,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
|
|||||||
debug sprintf ' [%s] macsuck - removed %d fwd table entries to archive',
|
debug sprintf ' [%s] macsuck - removed %d fwd table entries to archive',
|
||||||
$device->ip, $archived;
|
$device->ip, $archived;
|
||||||
|
|
||||||
$device->update({
|
$device->update({last_macsuck => \$now});
|
||||||
last_macsuck => \$now,
|
|
||||||
layers => \[q{overlay(layers placing '1' from 7 for 1)}],
|
|
||||||
});
|
|
||||||
return Status->done("Ended macsuck for $device");
|
return Status->done("Ended macsuck for $device");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user