--- Begin Message ---
When the move_disk endpoint is used to reassign a disk image from one
vm to another, the target-filename of the image is typically chosen
automatically with the known naming schema.

This patch adds the optional parameter target-filename, allowing
to manually specify a filename for the disk image when doing a vm
to vm reassignment. It's not currently implemented for storage to
storage moving.

Signed-off-by: Markus Ebner <i...@ebner-markus.de>
---
 PVE/API2/Qemu.pm | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
index 38bdaab..f4414e9 100644
--- a/PVE/API2/Qemu.pm
+++ b/PVE/API2/Qemu.pm
@@ -3886,6 +3886,14 @@ __PACKAGE__->register_method({
                maxLength => 40,
                optional => 1,
            },
+           'target-filename' => {
+               type => 'string',
+               description => "Specify a custom target filename to which the 
moved disk will be"
+                   ." renamed as part of the moving (only supported for 
reassign at the moment)."
+                   ." Caution: Will be normalized",
+               optional => 1,
+               default => "automatically determined with vm-<vmid>-disk-<nr> 
schema"
+           },
        },
     },
     returns => {
@@ -3907,6 +3915,9 @@ __PACKAGE__->register_method({
        my $target_disk = extract_param($param, 'target-disk') // $disk;
        my $storeid = extract_param($param, 'storage');
        my $format = extract_param($param, 'format');
+       my $target_filename = extract_param($param, 'target-filename');
+       $target_filename = 
PVE::Storage::normalize_content_filename($target_filename)
+           if $target_filename;
 
        my $storecfg = PVE::Storage::config();
 
@@ -4148,6 +4159,7 @@ __PACKAGE__->register_method({
                        $storecfg,
                        $source_volid,
                        $target_vmid,
+                       $target_filename # undef if no custom filename was 
requested -> automatically chosen
                    );
 
                    $drive->{file} = $new_volid;
@@ -4226,6 +4238,8 @@ __PACKAGE__->register_method({
                $disk_reassignfn
            );
        } elsif ($storeid) {
+           my $msg = "target-filename option not yet supported when moving to 
a different storage";
+           raise_param_exc({ 'target-filename' => $msg }) if $target_filename;
            $rpcenv->check($authuser, "/storage/$storeid", 
['Datastore.AllocateSpace']);
 
            die "cannot move disk '$disk', only configured disks can be moved 
to another storage\n"
-- 
2.42.0



--- End Message ---
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to