[pve-devel] applied: [PATCH qemu-server 1/2] clone: use better default for parameter 'full'

Wolfgang Bumiller w.bumiller at proxmox.com
Tue Mar 20 11:12:38 CET 2018


applied both patches

On Fri, Mar 16, 2018 at 11:05:55AM +0100, Dietmar Maurer wrote:
> template => linked clone
> normal VM => full clone
> 
> Signed-off-by: Dietmar Maurer <dietmar at proxmox.com>
> ---
>  PVE/API2/Qemu.pm | 20 ++++++++++++++------
>  1 file changed, 14 insertions(+), 6 deletions(-)
> 
> diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
> index b1c6896..300e347 100644
> --- a/PVE/API2/Qemu.pm
> +++ b/PVE/API2/Qemu.pm
> @@ -2476,12 +2476,10 @@ __PACKAGE__->register_method({
>              }),
>  	    storage => get_standard_option('pve-storage-id', {
>  		description => "Target storage for full clone.",
> -		requires => 'full',
>  		optional => 1,
>  	    }),
>  	    'format' => {
> -		description => "Target format for file storage.",
> -		requires => 'full',
> +		description => "Target format for file storage. Only valid for full clone.",
>  		type => 'string',
>  		optional => 1,
>  	        enum => [ 'raw', 'qcow2', 'vmdk'],
> @@ -2489,9 +2487,8 @@ __PACKAGE__->register_method({
>  	    full => {
>  		optional => 1,
>  	        type => 'boolean',
> -	        description => "Create a full copy of all disk. This is always done when " .
> +	        description => "Create a full copy of all disks. This is always done when " .
>  		    "you clone a normal VM. For VM templates, we try to create a linked clone by default.",
> -		default => 0,
>  	    },
>  	    target => get_standard_option('pve-node', {
>  		description => "Target node. Only allowed if the original VM is on shared storage.",
> @@ -2572,6 +2569,17 @@ __PACKAGE__->register_method({
>  	    die "snapshot '$snapname' does not exist\n"
>  		if $snapname && !defined( $conf->{snapshots}->{$snapname});
>  
> +	    my $full = extract_param($param, 'full');
> +	    if (!defined($full)) {
> +		$full = !PVE::QemuConfig->is_template($conf);
> +	    }
> +
> +	    die "parameter 'storage' not allowed for linked clones\n"
> +		if defined($storage) && !$full;
> +
> +	    die "parameter 'format' not allowed for linked clones\n"
> +		if defined($format) && !$full;
> +
>  	    my $oldconf = $snapname ? $conf->{snapshots}->{$snapname} : $conf;
>  
>  	    my $sharedvm = &$check_storage_access_clone($rpcenv, $authuser, $storecfg, $oldconf, $storage);
> @@ -2610,7 +2618,7 @@ __PACKAGE__->register_method({
>  		    if (PVE::QemuServer::drive_is_cdrom($drive, 1)) {
>  			$newconf->{$opt} = $value; # simply copy configuration
>  		    } else {
> -			if ($param->{full} || PVE::QemuServer::drive_is_cloudinit($drive)) {
> +			if ($full || PVE::QemuServer::drive_is_cloudinit($drive)) {
>  			    die "Full clone feature is not supported for drive '$opt'\n"
>  				if !PVE::Storage::volume_has_feature($storecfg, 'copy', $drive->{file}, $snapname, $running);
>  			    $fullclone->{$opt} = 1;
> -- 
> 2.11.0




More information about the pve-devel mailing list