this is a simple filter which allows us to limit the actions to specific vmids
this makes it much simpler to start/stop/migrate a range of vms Signed-off-by: Dominik Csapak <d.csa...@proxmox.com> --- PVE/API2/Nodes.pm | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/PVE/API2/Nodes.pm b/PVE/API2/Nodes.pm index 457263a..0542e0c 100644 --- a/PVE/API2/Nodes.pm +++ b/PVE/API2/Nodes.pm @@ -1211,12 +1211,22 @@ __PACKAGE__->register_method({ }}); my $get_start_stop_list = sub { - my ($nodename, $autostart) = @_; + my ($nodename, $autostart, $vmfilter) = @_; my $vmlist = PVE::Cluster::get_vmlist(); + my $vms; + + if (defined($vmfilter)) { + $vms = {}; + foreach my $vmid (PVE::Tools::split_list($vmfilter)) { + $vms->{$vmid} = 1; + } + } + my $resList = {}; foreach my $vmid (keys %{$vmlist->{ids}}) { + next if defined($vms) && !$vms->{$vmid}; my $d = $vmlist->{ids}->{$vmid}; my $startup; @@ -1271,6 +1281,11 @@ __PACKAGE__->register_method ({ type => 'boolean', description => "force if onboot=0.", }, + vms => { + description => "Only consider Guests with these IDs.", + type => 'string', format => 'pve-vmid-list', + optional => 1, + }, }, }, returns => { @@ -1299,7 +1314,7 @@ __PACKAGE__->register_method ({ print "got quorum\n"; } my $autostart = $force ? undef : 1; - my $startList = &$get_start_stop_list($nodename, $autostart); + my $startList = &$get_start_stop_list($nodename, $autostart, $param->{vms}); # Note: use numeric sorting with <=> foreach my $order (sort {$a <=> $b} keys %$startList) { @@ -1411,6 +1426,11 @@ __PACKAGE__->register_method ({ additionalProperties => 0, properties => { node => get_standard_option('pve-node'), + vms => { + description => "Only consider Guests with these IDs.", + type => 'string', format => 'pve-vmid-list', + optional => 1, + }, }, }, returns => { @@ -1429,7 +1449,7 @@ __PACKAGE__->register_method ({ $rpcenv->{type} = 'priv'; # to start tasks in background - my $stopList = &$get_start_stop_list($nodename); + my $stopList = &$get_start_stop_list($nodename, undef, $param->{vms}); my $cpuinfo = PVE::ProcFSTools::read_cpuinfo(); my $datacenterconfig = cfs_read_file('datacenter.cfg'); @@ -1538,6 +1558,11 @@ __PACKAGE__->register_method ({ type => 'integer', minimum => 1 }, + vms => { + description => "Only consider Guests with these IDs.", + type => 'string', format => 'pve-vmid-list', + optional => 1, + }, }, }, returns => { @@ -1563,7 +1588,7 @@ __PACKAGE__->register_method ({ $rpcenv->{type} = 'priv'; # to start tasks in background - my $migrateList = &$get_start_stop_list($nodename); + my $migrateList = &$get_start_stop_list($nodename, undef, $param->{vms}); foreach my $order (sort {$b <=> $a} keys %$migrateList) { my $vmlist = $migrateList->{$order}; -- 2.1.4 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel