[pve-devel] [PATCH common v2 01/32] schema: parse property string: support skipping keys
Fiona Ebner
f.ebner at proxmox.com
Wed Jun 18 15:01:38 CEST 2025
In certain situations like restoring a backup, it can be useful to
skip certain properties. This allows to drop outdated properties from
the schema while still being able to parse property strings that
contain them, but without allowing all additional properties.
Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
---
New in v2.
src/PVE/JSONSchema.pm | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/PVE/JSONSchema.pm b/src/PVE/JSONSchema.pm
index 8c90986..e617fc1 100644
--- a/src/PVE/JSONSchema.pm
+++ b/src/PVE/JSONSchema.pm
@@ -1033,7 +1033,7 @@ sub parse_boolean {
}
sub parse_property_string {
- my ($format, $data, $path, $additional_properties) = @_;
+ my ($format, $data, $path, $additional_properties, $options) = @_;
# In property strings we default to not allowing additional properties
$additional_properties = 0 if !defined($additional_properties);
@@ -1057,6 +1057,7 @@ sub parse_property_string {
}
my $default_key;
+ my $skip = $options->{skip} ? { map { $_ => 1 } $options->{skip}->@* } : {};
my $res = {};
foreach my $part (split(/,/, $data)) {
@@ -1064,6 +1065,7 @@ sub parse_property_string {
if ($part =~ /^([^=]+)=(.+)$/) {
my ($k, $v) = ($1, $2);
+ next if $skip->{$k};
die "duplicate key in comma-separated list property: $k\n" if defined($res->{$k});
my $schema = $format->{$k};
if (my $alias = $schema->{alias}) {
--
2.39.5
More information about the pve-devel
mailing list