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 8AF2970A59 for ; Mon, 9 May 2022 12:34:48 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 5B5582B6B8 for ; Mon, 9 May 2022 12:34:19 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (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 4A8B52B684 for ; Mon, 9 May 2022 12:34:17 +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 18E114324D for ; Mon, 9 May 2022 12:34:17 +0200 (CEST) From: Fabian Ebner To: pve-devel@lists.proxmox.com Date: Mon, 9 May 2022 12:34:11 +0200 Message-Id: <20220509103413.68248-5-f.ebner@proxmox.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220509103413.68248-1-f.ebner@proxmox.com> References: <20220509103413.68248-1-f.ebner@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.077 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - Subject: [pve-devel] [PATCH v2 manager 4/6] vzdump: avoid 'requires' constraint when parsing defaults 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, 09 May 2022 10:34:48 -0000 to avoid warnings like parse error in '/etc/vzdump.conf' - 'storage': missing property - 'notes-template' requires this property when there is no default for the required property configured. In new(), the defaults are mixed in with the regular CLI/API parameters, so re-check if the required property is set. If it's not, the defaults do not apply to the current run, and can be dropped. Signed-off-by: Fabian Ebner --- New in v2. PVE/VZDump.pm | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/PVE/VZDump.pm b/PVE/VZDump.pm index 86d5a232..7237823e 100644 --- a/PVE/VZDump.pm +++ b/PVE/VZDump.pm @@ -3,6 +3,7 @@ package PVE::VZDump; use strict; use warnings; +use Clone; use Fcntl ':flock'; use File::Basename; use File::Path; @@ -35,6 +36,9 @@ my @plugins = qw(); my $confdesc = PVE::VZDump::Common::get_confdesc(); +my $confdesc_for_defaults = Clone::clone($confdesc); +delete $confdesc_for_defaults->{$_}->{requires} for qw(notes-template protected); + # Load available plugins my @pve_vzdump_classes = qw(PVE::VZDump::QemuServer PVE::VZDump::LXC); foreach my $plug (@pve_vzdump_classes) { @@ -254,7 +258,7 @@ sub read_vzdump_defaults { map { my $default = $confdesc->{$_}->{default}; defined($default) ? ($_ => $default) : () - } keys %$confdesc + } keys %$confdesc_for_defaults }; $parse_prune_backups_maxfiles->($defaults, "defaults in VZDump schema"); @@ -262,7 +266,7 @@ sub read_vzdump_defaults { eval { $raw = PVE::Tools::file_get_contents($fn); }; return $defaults if $@; - my $conf_schema = { type => 'object', properties => $confdesc, }; + my $conf_schema = { type => 'object', properties => $confdesc_for_defaults }; my $res = PVE::JSONSchema::parse_config($conf_schema, $fn, $raw); if (my $excludes = $res->{'exclude-path'}) { $res->{'exclude-path'} = PVE::Tools::split_args($excludes); @@ -546,6 +550,11 @@ sub new { $opts->{storage} = 'local'; } + # Enforced by the API too, but these options might come in via defaults. Drop them if necessary. + if (!$opts->{storage}) { + delete $opts->{$_} for qw(notes-template protected); + } + my $errors = ''; my $add_error = sub { my ($error) = @_; -- 2.30.2