[#212] Discover SQL error on returning multiple rows
This commit is contained in:
@@ -8,6 +8,7 @@
|
|||||||
[BUG FIXES]
|
[BUG FIXES]
|
||||||
|
|
||||||
* [#211] Additional check for undefined SNMP::Info instance
|
* [#211] Additional check for undefined SNMP::Info instance
|
||||||
|
* [#212] Discover SQL error on returning multiple rows
|
||||||
* Re-set hostname on device after renumber
|
* Re-set hostname on device after renumber
|
||||||
|
|
||||||
2.032002 - 2015-04-03
|
2.032002 - 2015-04-03
|
||||||
|
|||||||
@@ -848,21 +848,30 @@ sub store_neighbors {
|
|||||||
manual_topo => \"false",
|
manual_topo => \"false",
|
||||||
});
|
});
|
||||||
|
|
||||||
if (defined $portrow->slave_of and
|
# update master of our aggregate to be a neighbor of
|
||||||
my $master = schema('netdisco')->resultset('DevicePort')
|
# the master on our peer device (a lot of iffs to get there...).
|
||||||
->single({ip => $device->ip, port => $portrow->slave_of})) {
|
# & cannot use ->neighbor prefetch because this is the port insert!
|
||||||
|
if (defined $portrow->slave_of) {
|
||||||
|
|
||||||
if (not ($portrow->is_master or defined $master->slave_of)) {
|
my $peer_device = get_device($remote_ip);
|
||||||
# TODO needs refactoring - this is quite expensive
|
my $master = schema('netdisco')->resultset('DevicePort')->single({
|
||||||
my $peer = schema('netdisco')->resultset('DevicePort')->find({
|
ip => $device->ip,
|
||||||
ip => $portrow->neighbor->ip,
|
port => $portrow->slave_of
|
||||||
port => $portrow->remote_port,
|
});
|
||||||
}) if $portrow->neighbor;
|
|
||||||
|
if ($peer_device and $peer_device->in_storage and $master
|
||||||
|
and not ($portrow->is_master or defined $master->slave_of)) {
|
||||||
|
|
||||||
|
my $peer_port = schema('netdisco')->resultset('DevicePort')->single({
|
||||||
|
ip => $peer_device->ip,
|
||||||
|
port => $portrow->remote_port,
|
||||||
|
});
|
||||||
|
|
||||||
$master->update({
|
$master->update({
|
||||||
remote_ip => ($peer ? $peer->ip : $remote_ip),
|
remote_ip => ($peer_device->ip || $remote_ip),
|
||||||
remote_port => ($peer ? $peer->slave_of : undef ),
|
remote_port => ($peer_port ? $peer_port->slave_of : undef ),
|
||||||
is_uplink => \"true",
|
is_uplink => \"true",
|
||||||
|
is_master => \"true",
|
||||||
manual_topo => \"false",
|
manual_topo => \"false",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user