[pve-devel] [PATCH common v2 01/32] schema: parse property string: support skipping keys

Fabian Grünbichler f.gruenbichler at proxmox.com
Fri Jun 20 13:00:55 CEST 2025


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.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};

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 at lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 
> 
> 




More information about the pve-devel mailing list