diff --git a/Changes b/Changes index ddd5bda6..463547e8 100644 --- a/Changes +++ b/Changes @@ -8,6 +8,7 @@ * #320 DNS subroutines are redefined * #318 ACLs with RegExp are very slow - aggressive resolver timeouts + * #317 when renumbering on discover, delete likely duplicate devices 2.036001 - 2017-06-22 diff --git a/lib/App/Netdisco/Core/Discover.pm b/lib/App/Netdisco/Core/Discover.pm index 25e5e0f4..1cc4b73d 100644 --- a/lib/App/Netdisco/Core/Discover.pm +++ b/lib/App/Netdisco/Core/Discover.pm @@ -98,6 +98,12 @@ sub set_canonical_ip { return if $new_ip eq $old_ip; schema('netdisco')->txn_do(sub { + # delete target device with the same vendor and serial number + schema('netdisco')->resultset('Device')->search({ + ip => $new_ip, vendor => $device->vendor, serial => $device->serial, + })->delete; + + # if target device exists then this will die $device->renumber($new_ip) or die "cannot renumber to: $new_ip"; # rollback