[pve-devel] applied: [PATCH container 1/2] Fix parse_volume for unused volumes

Fabian Grünbichler f.gruenbichler at proxmox.com
Wed Apr 15 09:11:18 CEST 2020


potential for follow-up inline

On April 14, 2020 2:02 pm, Fabian Ebner wrote:
> by extending the description. Also fixes the relevant for loop to
> iterate over MAX_UNUSED_DISKS instead of MAX_MOUNT_POINTS.
> 
> Signed-off-by: Fabian Ebner <f.ebner at proxmox.com>
> ---
>  src/PVE/LXC/Config.pm | 24 +++++++++++++++++-------
>  1 file changed, 17 insertions(+), 7 deletions(-)
> 
> diff --git a/src/PVE/LXC/Config.pm b/src/PVE/LXC/Config.pm
> index 1aab6d4..000a4a2 100644
> --- a/src/PVE/LXC/Config.pm
> +++ b/src/PVE/LXC/Config.pm
> @@ -745,10 +745,14 @@ my $mp_desc = {
>  };
>  PVE::JSONSchema::register_format('pve-ct-mountpoint', $mp_desc);
>  
> -my $unuseddesc = {
> -    optional => 1,
> -    type => 'string', format => 'pve-volume-id',
> -    description => "Reference to unused volumes. This is used internally, and should not be modified manually.",
> +my $unused_desc = {
> +    volume => {
> +	type => 'string',
> +	default_key => 1,
> +	format => 'pve-volume-id',
> +	format_description => 'volume',
> +	description => 'The volume that is not used currently.',
> +    }
>  };
>  
>  for (my $i = 0; $i < $MAX_MOUNT_POINTS; $i++) {
> @@ -760,8 +764,12 @@ for (my $i = 0; $i < $MAX_MOUNT_POINTS; $i++) {
>      };
>  }
>  
> -for (my $i = 0; $i < $MAX_MOUNT_POINTS; $i++) {
> -    $confdesc->{"unused$i"} = $unuseddesc;
> +for (my $i = 0; $i < $MAX_UNUSED_DISKS; $i++) {
> +    $confdesc->{"unused$i"} = {
> +	optional => 1,
> +	type => 'string', format => $unused_desc,
> +	description => "Reference to unused volumes. This is used internally, and should not be modified manually.",
> +    }
>  }
>  
>  sub parse_pct_config {
> @@ -1073,8 +1081,10 @@ sub parse_volume {
>  	my $res =  $parse_ct_mountpoint_full->($class, $rootfs_desc, $volume_string, $noerr);
>  	$res->{mp} = '/' if defined($res);
>  	return $res;
> -    } elsif ($key =~ m/^mp\d+$/ || $key =~ m/^unused\d+$/) {
> +    } elsif ($key =~ m/^mp\d+$/) {
>  	return $parse_ct_mountpoint_full->($class, $mp_desc, $volume_string, $noerr);
> +    } elsif ($key =~ m/^unused\d+$/) {
> +	return $parse_ct_mountpoint_full->($class, $unused_desc, $volume_string, $noerr);
>      }

if we refactor the rootfs, mpX and unusedX schemas into a separate hash 
(that we can directly inject into $confdesc, so no duplication) we can 
just inline parse_ct_mountpoint_full since the correct schema is 
available as $hash->{$key}->{format}.

this would be inline with the $drivedesc_hash in PVE::QemuServer::Drive, 
and merge the actual parsing and the sub everyone calls for parsing into 
a single sub ;)

>  
>      die "parse_volume - unknown type: $key\n";
> -- 
> 2.20.1
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel at pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 
> 




More information about the pve-devel mailing list