diff --git a/lib/App/Netdisco/Web/Plugin/AdminTask/PseudoDevice.pm b/lib/App/Netdisco/Web/Plugin/AdminTask/PseudoDevice.pm index bf4b9d38..15d3f15d 100644 --- a/lib/App/Netdisco/Web/Plugin/AdminTask/PseudoDevice.pm +++ b/lib/App/Netdisco/Web/Plugin/AdminTask/PseudoDevice.pm @@ -73,9 +73,19 @@ ajax '/ajax/control/admin/pseudodevice/update' => require_role admin => sub { } elsif (param('ports') < $count) { my $start = param('ports') + 1; - $device->ports - ->single({port => "Port$_"})->delete - for ($start .. $count); + + foreach my $port ($start .. $count) { + $device->ports + ->single({port => "Port${port}"})->delete; + + # clear outdated manual topology links + schema('netdisco')->resultset('Topology')->search({ + -or => [ + { dev1 => $device->ip, port1 => "Port${port}" }, + { dev2 => $device->ip, port2 => "Port${port}" }, + ], + })->delete; + } } }); };