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 B4A7E61471 for ; Wed, 9 Feb 2022 14:07:55 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id AE183153D for ; Wed, 9 Feb 2022 14:07:55 +0100 (CET) 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 D35B61571 for ; Wed, 9 Feb 2022 14:07:54 +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 AA3C846D9E for ; Wed, 9 Feb 2022 14:07:54 +0100 (CET) From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= To: pve-devel@lists.proxmox.com Date: Wed, 9 Feb 2022 14:07:32 +0100 Message-Id: <20220209130750.902245-4-f.gruenbichler@proxmox.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220209130750.902245-1-f.gruenbichler@proxmox.com> References: <20220209130750.902245-1-f.gruenbichler@proxmox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.204 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 v5 container 2/3] config: add strict parser 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: Wed, 09 Feb 2022 13:07:55 -0000 as safeguard when migrating across clusters, which might have different versions installed. Signed-off-by: Fabian Grünbichler --- Notes: new in v5 src/PVE/LXC/Config.pm | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/PVE/LXC/Config.pm b/src/PVE/LXC/Config.pm index 6c2acd6..16739a8 100644 --- a/src/PVE/LXC/Config.pm +++ b/src/PVE/LXC/Config.pm @@ -877,7 +877,7 @@ for (my $i = 0; $i < $MAX_UNUSED_DISKS; $i++) { } sub parse_pct_config { - my ($filename, $raw) = @_; + my ($filename, $raw, $strict) = @_; return undef if !defined($raw); @@ -887,6 +887,16 @@ sub parse_pct_config { pending => {}, }; + my $handle_error = sub { + my ($msg) = @_; + + if ($strict) { + die $msg; + } else { + warn $msg; + } + }; + $filename =~ m|/lxc/(\d+).conf$| || die "got strange filename '$filename'"; @@ -926,9 +936,9 @@ sub parse_pct_config { if ($validity eq 1) { push @{$conf->{lxc}}, [$key, $value]; } elsif (my $errmsg = $validity) { - warn "vm $vmid - $key: $errmsg\n"; + $handle_error->("vm $vmid - $key: $errmsg\n"); } else { - warn "vm $vmid - unable to parse config: $line\n"; + $handle_error->("vm $vmid - unable to parse config: $line\n"); } } elsif ($line =~ m/^(description):\s*(.*\S)\s*$/) { $descr .= PVE::Tools::decode_text($2); @@ -939,16 +949,16 @@ sub parse_pct_config { if ($section eq 'pending') { $conf->{delete} = $value; } else { - warn "vm $vmid - property 'delete' is only allowed in [pve:pending]\n"; + $handle_error->("vm $vmid - property 'delete' is only allowed in [pve:pending]\n"); } } elsif ($line =~ m/^([a-z][a-z_]*\d*):\s*(.+?)\s*$/) { my $key = $1; my $value = $2; eval { $value = PVE::LXC::Config->check_type($key, $value); }; - warn "vm $vmid - unable to parse value of '$key' - $@" if $@; + $handle_error->("vm $vmid - unable to parse value of '$key' - $@") if $@; $conf->{$key} = $value; } else { - warn "vm $vmid - unable to parse config: $line\n"; + $handle_error->("vm $vmid - unable to parse config: $line\n"); } } -- 2.30.2