On June 18, 2025 3:01 pm, Fiona Ebner wrote: > 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.eb...@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};
should we log this? chances are this is a one-time operation to make an old config compatible with a new schema without dropping whole property strings, so it might be nice to inform the user that this happened, just like we do if we drop the whole line? > 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 > > > > _______________________________________________ > pve-devel mailing list > pve-devel@lists.proxmox.com > https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel > > > _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel