routed neighbors only queue if not also l2 neighbor
This commit is contained in:
@@ -60,10 +60,10 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
|
|||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $device = get_device($ip);
|
my $newdev = get_device($ip);
|
||||||
next if $device->in_storage;
|
next if $newdev->in_storage;
|
||||||
|
|
||||||
if (not is_discoverable($device, $remote_type)) {
|
if (not is_discoverable($newdev, $remote_type)) {
|
||||||
debug sprintf
|
debug sprintf
|
||||||
' queue - skip: %s of type [%s] excluded by discover_* config',
|
' queue - skip: %s of type [%s] excluded by discover_* config',
|
||||||
$ip, ($remote_type || '');
|
$ip, ($remote_type || '');
|
||||||
@@ -80,8 +80,9 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
|
|||||||
($remote_id ? (device_key => $remote_id) : ()),
|
($remote_id ? (device_key => $remote_id) : ()),
|
||||||
});
|
});
|
||||||
|
|
||||||
debug sprintf ' queue - queued device %s (ID: [%s])',
|
vars->{'queued'}->{$ip} = true;
|
||||||
$ip, ($remote_id || '');
|
debug sprintf ' [%s] queue - queued %s for discovery (ID: [%s])',
|
||||||
|
$device, $ip, ($remote_id || '');
|
||||||
}
|
}
|
||||||
|
|
||||||
return Status->info(sprintf ' [%s] neigh - processed %s neighbors',
|
return Status->info(sprintf ' [%s] neigh - processed %s neighbors',
|
||||||
@@ -250,8 +251,7 @@ sub store_neighbors {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# what we came here to do.... discover the neighbor
|
# what we came here to do.... discover the neighbor
|
||||||
debug sprintf
|
debug sprintf ' [%s] neigh - %s with ID [%s] on %s',
|
||||||
' [%s] neigh - adding neighbor %s, ID [%s], on %s to discovery queue',
|
|
||||||
$device->ip, $remote_ip, ($remote_id || ''), $port;
|
$device->ip, $remote_ip, ($remote_id || ''), $port;
|
||||||
push @to_discover, [$remote_ip, $remote_type, $remote_id];
|
push @to_discover, [$remote_ip, $remote_type, $remote_id];
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
|
|||||||
foreach my $ip ((values %$ospf_peers), (values %$bgp_peers)) {
|
foreach my $ip ((values %$ospf_peers), (values %$bgp_peers)) {
|
||||||
my $peer = get_device($ip);
|
my $peer = get_device($ip);
|
||||||
next if $peer->in_storage or not is_discoverable($peer);
|
next if $peer->in_storage or not is_discoverable($peer);
|
||||||
|
next if vars->{'queued'}->{$ip};
|
||||||
|
|
||||||
jq_insert({
|
jq_insert({
|
||||||
device => $ip,
|
device => $ip,
|
||||||
@@ -34,7 +35,7 @@ register_worker({ phase => 'main', driver => 'snmp' }, sub {
|
|||||||
});
|
});
|
||||||
|
|
||||||
$count++;
|
$count++;
|
||||||
debug sprintf ' [%s] neigh - queued discovery of peer %s', $device, $ip;
|
debug sprintf ' [%s] queue - queued %s for discovery (peer)', $device, $ip;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Status->info(" [$device] neigh - $count peers added to queue.");
|
return Status->info(" [$device] neigh - $count peers added to queue.");
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ register_worker({ phase => 'early', driver => 'snmp' }, sub {
|
|||||||
if ($device->ip ne $db_device->ip) {
|
if ($device->ip ne $db_device->ip) {
|
||||||
return schema('netdisco')->txn_do(sub {
|
return schema('netdisco')->txn_do(sub {
|
||||||
$device->delete;
|
$device->delete;
|
||||||
return $job->cancel("fresh discover cancelled: $device already known");
|
return $job->cancel("fresh discover cancelled: $device already known as $db_device");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user