fix another bug in device root_ip discovery
This commit is contained in:
@@ -127,24 +127,27 @@ sub set_canonical_ip {
|
|||||||
debug sprintf ' [%s] device - changing root IP to alt IP %s',
|
debug sprintf ' [%s] device - changing root IP to alt IP %s',
|
||||||
$oldip, $newip;
|
$oldip, $newip;
|
||||||
|
|
||||||
# remove old device and aliases
|
|
||||||
schema('netdisco')->txn_do(sub {
|
schema('netdisco')->txn_do(sub {
|
||||||
|
if ($device->in_storage) {
|
||||||
|
# remove old device and aliases
|
||||||
my $copy = schema('netdisco')->resultset('Device')
|
my $copy = schema('netdisco')->resultset('Device')
|
||||||
->find({ip => $oldip});
|
->find({ip => $oldip});
|
||||||
|
|
||||||
# our special delete which is more efficient
|
|
||||||
schema('netdisco')->resultset('Device')
|
schema('netdisco')->resultset('Device')
|
||||||
->search({ ip => $device->ip })->delete({keep_nodes => 1});
|
->search({ ip => $device->ip })->delete({keep_nodes => 1});
|
||||||
debug sprintf ' [%s] device - deleted self', $oldip;
|
debug sprintf ' [%s] device - deleted self', $oldip;
|
||||||
|
|
||||||
$device = schema('netdisco')->resultset('Device')
|
$device = schema('netdisco')->resultset('Device')
|
||||||
->create({ $copy->get_columns, ip => $newip })
|
->create({ $copy->get_columns, ip => $newip });
|
||||||
if defined $copy;
|
|
||||||
|
|
||||||
# make nodes follow device
|
# make nodes follow device
|
||||||
schema('netdisco')->resultset('Node')
|
schema('netdisco')->resultset('Node')
|
||||||
->search({switch => $oldip})
|
->search({switch => $oldip})
|
||||||
->update({switch => $newip});
|
->update({switch => $newip});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$device->set_column(ip => $newip);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user