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 C517262994 for ; Mon, 21 Dec 2020 14:48:31 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id B61BE204D6 for ; Mon, 21 Dec 2020 14:48:31 +0100 (CET) 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 58D5A204AD for ; Mon, 21 Dec 2020 14:48:25 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 22BA74552B for ; Mon, 21 Dec 2020 14:48:25 +0100 (CET) From: Fabian Ebner To: pve-devel@lists.proxmox.com Cc: Thomas Lamprecht Date: Mon, 21 Dec 2020 14:48:19 +0100 Message-Id: <20201221134820.24038-5-f.ebner@proxmox.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20201221134820.24038-1-f.ebner@proxmox.com> References: <20201221134820.24038-1-f.ebner@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.008 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/RFC common 4/5] SectionConfig: parse_config: add errors to result 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, 21 Dec 2020 13:48:31 -0000 so that callers can know about them. This is useful in places where we'd rather abort then continue with a faulty configuration. For example, when reading the storage configuration before executing a backup job. Originally-by: Thomas Lamprecht Signed-off-by: Fabian Ebner --- I skimmed over the cascade of usages and could not find a problem with introducing the new key. Potentially problematic code would be something that's iterating over the keys for $cfg and do something bad with the new 'errors', but AFAICS, there is no such code. src/PVE/SectionConfig.pm | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/PVE/SectionConfig.pm b/src/PVE/SectionConfig.pm index b46b59e..af0af03 100644 --- a/src/PVE/SectionConfig.pm +++ b/src/PVE/SectionConfig.pm @@ -311,6 +311,7 @@ sub parse_config { } }; + my $errors = []; while (@lines) { my $line = $nextline->(); next if !$line; @@ -349,7 +350,15 @@ sub parse_config { die "duplicate attribute\n" if defined($config->{$k}); $config->{$k} = $plugin->check_value($type, $k, $v, $sectionId); }; - warn "$errprefix (section '$sectionId') - unable to parse value of '$k': $@" if $@; + if (my $err = $@) { + warn "$errprefix (section '$sectionId') - unable to parse value of '$k': $err"; + push @$errors, { + context => $errprefix, + section => $sectionId, + key => $k, + err => $err, + }; + } } else { warn "$errprefix (section '$sectionId') - ignore config line: $line\n"; @@ -368,8 +377,12 @@ sub parse_config { } } - - my $cfg = { ids => $ids, order => $order, digest => $digest}; + my $cfg = { + ids => $ids, + order => $order, + digest => $digest + }; + $cfg->{errors} = $errors if scalar(@$errors) > 0; return $cfg; } -- 2.20.1