From 22210b26b7351f07f979e82ded9b413181d6f89b Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Sun, 11 Dec 2022 16:54:07 +0000 Subject: [PATCH] keep port custom_fields in place across device discovery --- lib/App/Netdisco/Worker/Plugin/Discover/Properties.pm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/App/Netdisco/Worker/Plugin/Discover/Properties.pm b/lib/App/Netdisco/Worker/Plugin/Discover/Properties.pm index 7ac0df5a..6efad9c1 100644 --- a/lib/App/Netdisco/Worker/Plugin/Discover/Properties.pm +++ b/lib/App/Netdisco/Worker/Plugin/Discover/Properties.pm @@ -371,6 +371,12 @@ register_worker({ phase => 'early', driver => 'snmp' }, sub { vars->{'hook_data'}->{'ports'} = [values %deviceports]; schema('netdisco')->resultset('DevicePort')->txn_do_locked(sub { + # backup the custom_fields + my @fields = grep {exists $deviceports{$_->{port}}} $device->ports + ->search(undef, {columns => [qw/port custom_fields/]})->hri->all; + $deviceports{$_->{port}}->{custom_fields} = $_->{custom_fields} + for @fields; + my $gone = $device->ports->delete({keep_nodes => 1}); debug sprintf ' [%s] interfaces - removed %d interfaces', $device->ip, $gone;