From 8c974fd2560422ce1ac2be26e3425e609d20bd23 Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Mon, 1 Apr 2019 13:23:51 +0100 Subject: [PATCH] #549 clean manual topology after device ports change --- lib/App/Netdisco/Worker/Plugin/Discover/Neighbors.pm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/App/Netdisco/Worker/Plugin/Discover/Neighbors.pm b/lib/App/Netdisco/Worker/Plugin/Discover/Neighbors.pm index a546a58d..b8f0dee7 100644 --- a/lib/App/Netdisco/Worker/Plugin/Discover/Neighbors.pm +++ b/lib/App/Netdisco/Worker/Plugin/Discover/Neighbors.pm @@ -314,6 +314,18 @@ sub set_manual_topology { schema('netdisco')->resultset('DevicePort') ->search({ip => $device->ip})->update({manual_topo => \'false'}); + # clear outdated manual topology links + my $old_links = schema('netdisco')->resultset('Topology')->search({ + -or => [ + { dev1 => $device->ip, + port1 => { '-not_in' => $device->ports->get_column('port')->as_query } }, + { dev2 => $device->ip, + port2 => { '-not_in' => $device->ports->get_column('port')->as_query } }, + ], + })->delete; + debug sprintf ' [%s] neigh - removed %d outdated manual topology links', + $device->ip, $old_links; + my $topo_links = schema('netdisco')->resultset('Topology') ->search({-or => [dev1 => $device->ip, dev2 => $device->ip]}); debug sprintf ' [%s] neigh - setting manual topology links', $device->ip;