routed neighbors only queue if not also l2 neighbor

This commit is contained in:
Oliver Gorwits
2018-02-11 21:54:28 +00:00
parent a822675eb6
commit c1f9033125
3 changed files with 10 additions and 9 deletions

View File

@@ -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];

View File

@@ -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.");

View File

@@ -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");
}); });
} }