From fe3e8e3ef26bf230d8d3b8205a38b8aa8a8b6398 Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Mon, 13 Jan 2014 13:57:31 +0000 Subject: [PATCH] do not set master neigh if master is a slave --- Netdisco/lib/App/Netdisco/Core/Discover.pm | 24 ++++++++++++---------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/Netdisco/lib/App/Netdisco/Core/Discover.pm b/Netdisco/lib/App/Netdisco/Core/Discover.pm index eb64f1ca..a546aa39 100644 --- a/Netdisco/lib/App/Netdisco/Core/Discover.pm +++ b/Netdisco/lib/App/Netdisco/Core/Discover.pm @@ -792,18 +792,20 @@ sub store_neighbors { my $master = schema('netdisco')->resultset('DevicePort') ->single({ip => $device->ip, port => $portrow->slave_of})) { - # TODO needs refactoring - this is quite expensive - my $peer = schema('netdisco')->resultset('DevicePort')->find({ - ip => $portrow->neighbor->ip, - port => $portrow->remote_port, - }) if $portrow->neighbor; + if (not ($portrow->is_master or defined $master->slave_of)) { + # TODO needs refactoring - this is quite expensive + my $peer = schema('netdisco')->resultset('DevicePort')->find({ + ip => $portrow->neighbor->ip, + port => $portrow->remote_port, + }) if $portrow->neighbor; - $master->update({ - remote_ip => ($peer ? $peer->ip : $remote_ip), - remote_port => ($peer ? $peer->slave_of : undef ), - is_uplink => \"true", - manual_topo => \"false", - }); + $master->update({ + remote_ip => ($peer ? $peer->ip : $remote_ip), + remote_port => ($peer ? $peer->slave_of : undef ), + is_uplink => \"true", + manual_topo => \"false", + }); + } } }