[pve-devel] [PATCH container v2 3/3] bwlimit: add parameter to API2 calls

Stoiko Ivanov s.ivanov at proxmox.com
Mon Apr 1 11:31:08 CEST 2019


for migrate_vm, clone_vm and move_volume. The 'migrate_vm' call passes it to
PVE::LXC::Migrate->migrate for handling.

Additionally the bwlimit option's description of the 'create_vm' call gets
consistent capitalization of I/O.

Signed-off-by: Stoiko Ivanov <s.ivanov at proxmox.com>
---
 src/PVE/API2/LXC.pm | 38 +++++++++++++++++++++++++++++++++-----
 1 file changed, 33 insertions(+), 5 deletions(-)

diff --git a/src/PVE/API2/LXC.pm b/src/PVE/API2/LXC.pm
index 6de121f..cbb437e 100644
--- a/src/PVE/API2/LXC.pm
+++ b/src/PVE/API2/LXC.pm
@@ -161,10 +161,11 @@ __PACKAGE__->register_method({
 				"OpenSSH format).",
 	    },
 	    bwlimit => {
-		description => "Override i/o bandwidth limit (in KiB/s).",
+		description => "Override I/O bandwidth limit (in KiB/s).",
 		optional => 1,
 		type => 'number',
 		minimum => '0',
+		default => 'restore limit from datacenter.cfg/storage.cfg',
 	    },
 	    start => {
 		optional => 1,
@@ -987,6 +988,13 @@ __PACKAGE__->register_method({
 		    " mounts. NOTE: deprecated, use 'shared' property of mount point instead.",
 		optional => 1,
 	    },
+	    bwlimit => {
+		description => "Override I/O bandwidth limit (in KiB/s).",
+		optional => 1,
+		type => 'number',
+		minimum => '0',
+		default => 'migrate limit from datacenter.cfg/storage.cfg',
+	    },
 	},
     },
     returns => {
@@ -1250,6 +1258,13 @@ __PACKAGE__->register_method({
 		description => "Target node. Only allowed if the original VM is on shared storage.",
 		optional => 1,
 	    }),
+	    bwlimit => {
+		description => "Override I/O bandwidth limit (in KiB/s).",
+		optional => 1,
+		type => 'number',
+		minimum => '0',
+		default => 'clone limit from datacenter.cfg/storage.cfg',
+	    },
         },
     },
     returns => {
@@ -1434,6 +1449,7 @@ __PACKAGE__->register_method({
 		    local $SIG{HUP} = sub { die "interrupted by signal\n"; };
 
 		PVE::Storage::activate_volumes($storecfg, $vollist, $snapname);
+		my $bwlimit = extract_param($param, 'bwlimit');
 
 		foreach my $opt (keys %$mountpoints) {
 		    my $mp = $mountpoints->{$opt};
@@ -1442,8 +1458,10 @@ __PACKAGE__->register_method({
 		    my $newvolid;
 		    if ($fullclone->{$opt}) {
 			print "create full clone of mountpoint $opt ($volid)\n";
-			my $target_storage = $storage // PVE::Storage::parse_volume_id($volid);
-			$newvolid = PVE::LXC::copy_volume($mp, $newid, $target_storage, $storecfg, $newconf, $snapname);
+			my $source_storage = PVE::Storage::parse_volume_id($volid);
+			my $target_storage = $storage // $source_storage;
+			my $clonelimit = PVE::Storage::get_bandwidth_limit('clone', [$source_storage, $target_storage], $bwlimit);
+			$newvolid = PVE::LXC::copy_volume($mp, $newid, $target_storage, $storecfg, $newconf, $snapname, $clonelimit);
 		    } else {
 			print "create linked clone of mount point $opt ($volid)\n";
 			$newvolid = PVE::Storage::vdisk_clone($storecfg, $volid, $newid, $snapname);
@@ -1690,7 +1708,14 @@ __PACKAGE__->register_method({
 		description => 'Prevent changes if current configuration file has different SHA1 digest. This can be used to prevent concurrent modifications.',
 		maxLength => 40,
 		optional => 1,
-	    }
+	    },
+	    bwlimit => {
+		description => "Override I/O bandwidth limit (in KiB/s).",
+		optional => 1,
+		type => 'number',
+		minimum => '0',
+		default => 'clone limit from datacenter.cfg/storage.cfg',
+	    },
 	},
     },
     returns => {
@@ -1747,7 +1772,10 @@ __PACKAGE__->register_method({
 
 		eval {
 		    PVE::Storage::activate_volumes($storage_cfg, [ $old_volid ]);
-		    $new_volid = PVE::LXC::copy_volume($mpdata, $vmid, $storage, $storage_cfg, $conf);
+		    my $bwlimit = extract_param($param, 'bwlimit');
+		    my $source_storage = PVE::Storage::parse_volume_id($old_volid);
+		    my $movelimit = PVE::Storage::get_bandwidth_limit('move', [$source_storage, $storage], $bwlimit);
+		    $new_volid = PVE::LXC::copy_volume($mpdata, $vmid, $storage, $storage_cfg, $conf, undef, $movelimit);
 		    $mpdata->{volume} = $new_volid;
 
 		    PVE::LXC::Config->lock_config($vmid, sub {
-- 
2.11.0





More information about the pve-devel mailing list