diff --git a/Netdisco/Changes b/Netdisco/Changes index 0b115c39..07427f07 100644 --- a/Netdisco/Changes +++ b/Netdisco/Changes @@ -1,3 +1,9 @@ +2.012006 - 2013-08-23 + + [BUG FIXES] + + * Duplicate port names are handled without error + 2.012005 - 2013-08-16 [ENHANCEMENTS] diff --git a/Netdisco/lib/App/Netdisco/Core/Discover.pm b/Netdisco/lib/App/Netdisco/Core/Discover.pm index 17b5b728..cab35353 100644 --- a/Netdisco/lib/App/Netdisco/Core/Discover.pm +++ b/Netdisco/lib/App/Netdisco/Core/Discover.pm @@ -189,7 +189,7 @@ sub store_interfaces { } # build device interfaces suitable for DBIC - my @interfaces; + my %interfaces; foreach my $entry (keys %$interfaces) { my $port = $interfaces->{$entry}; @@ -231,7 +231,7 @@ sub store_interfaces { } } - push @interfaces, { + $interfaces{$port} = { port => $port, descr => $i_descr->{$entry}, up => $i_up->{$entry}, @@ -255,9 +255,9 @@ sub store_interfaces { debug sprintf ' [%s] interfaces - removed %s interfaces', $device->ip, $gone; $device->update_or_insert(undef, {for => 'update'}); - $device->ports->populate(\@interfaces); + $device->ports->populate([values %interfaces]); debug sprintf ' [%s] interfaces - added %d new interfaces', - $device->ip, scalar @interfaces; + $device->ip, scalar values %interfaces; }); }