From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 652EA60B26 for ; Mon, 19 Oct 2020 12:53:06 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 5B5E32B94E for ; Mon, 19 Oct 2020 12:53:06 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [212.186.127.180]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 95EA02B946 for ; Mon, 19 Oct 2020 12:53:05 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 5B3CF45E02 for ; Mon, 19 Oct 2020 12:53:05 +0200 (CEST) From: Fabian Ebner To: pve-devel@lists.proxmox.com Date: Mon, 19 Oct 2020 12:53:00 +0200 Message-Id: <20201019105300.17898-1-f.ebner@proxmox.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.044 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH manager] get_included_guests: handle non-existing guests X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Oct 2020 10:53:06 -0000 If a guest is removed without purge, the ID will remain in the backup configuration. Avoid using the variable $node when it is potentially undefined. Instead, skip non-existing guests and warn the user. Reported here: https://forum.proxmox.com/threads/purge-backup-does-not-remove-vm-from-datacenter-backup-list.77609/ Signed-off-by: Fabian Ebner --- PVE/VZDump.pm | 5 +++++ test/vzdump_guest_included_test.pl | 12 +++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/PVE/VZDump.pm b/PVE/VZDump.pm index 542228d6..6dbb6a44 100644 --- a/PVE/VZDump.pm +++ b/PVE/VZDump.pm @@ -1217,6 +1217,11 @@ sub get_included_guests { $vmids = check_vmids(@$vmids); for my $vmid (@$vmids) { + if (!defined($vmlist->{ids}->{$vmid})) { + debugmsg('warn', "no guest with ID '$vmid' exists in the cluster!"); + next; + } + my $node = $vmlist->{ids}->{$vmid}->{node}; next if (defined $job->{node} && $job->{node} ne $node); diff --git a/test/vzdump_guest_included_test.pl b/test/vzdump_guest_included_test.pl index a0f40a55..0494d40e 100755 --- a/test/vzdump_guest_included_test.pl +++ b/test/vzdump_guest_included_test.pl @@ -9,7 +9,7 @@ use warnings; use lib '..'; -use Test::More tests => 9; +use Test::More tests => 10; use Test::MockModule; use PVE::VZDump; @@ -178,6 +178,16 @@ $addtest->('Test selected VMIDs on other nodes', { } }); +$addtest->('Test VMID not present in vmlist', { + expected => { + node1 => [ 100 ], + node2 => [ 201, 212 ], + }, + param => { + vmid => '100, 201, 212, 7654', + } +}); + for my $test (@{$tests}) { my $testname = $test->{name}; -- 2.20.1