When a member of 2 pools wants to transfer a
 vm/container to an other pool they can not do that. The vm/container would
 have first to be removed form the current pool resulting in a loss of
 privileges of the pool member for this vm/contianer. This feature introduces
 a way to transfer a vm between pools, guarded by a checkbox from accidental
 transfers

 This is the patch for the backend changes

Signed-off-by: Philipp Hufnagl <p.hufn...@proxmox.com>
---
 PVE/API2/Pool.pm | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/PVE/API2/Pool.pm b/PVE/API2/Pool.pm
index 007fc815..80e4e7b0 100644
--- a/PVE/API2/Pool.pm
+++ b/PVE/API2/Pool.pm
@@ -131,6 +131,11 @@ __PACKAGE__->register_method ({
                type => 'string',  format => 'pve-storage-id-list',
                optional => 1,
            },
+           transfer => {
+               description => "Allow transferring VMs to another pool.",
+               type => 'boolean',
+               optional => 1,
+           },
            delete => {
                description => "Remove vms/storage (instead of adding it).",
                type => 'boolean',
@@ -165,8 +170,14 @@ __PACKAGE__->register_method ({
                    } else {
                        die "VM $vmid is already a pool member\n" if 
$pool_config->{vms}->{$vmid};
                        my $existing_pool = $usercfg->{vms}->{$vmid};
-                       die "VM $vmid belongs already to pool 
'$existing_pool'\n" if defined($existing_pool);
-
+                       if (defined($existing_pool)) {
+                           if ($param->{transfer}) {
+                               my $existing_pool_config = 
$usercfg->{pools}->{$existing_pool};
+                               delete $existing_pool_config->{vms}->{$vmid};
+                           } else {
+                               die "VM $vmid belongs already to pool 
'$existing_pool' and transfer is not set\n";
+                           }
+                       }
                        $pool_config->{vms}->{$vmid} = 1;
                        $usercfg->{vms}->{$vmid} = $pool;
                    }
-- 
2.39.2



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

Reply via email to