restrict the nodes also for mapped devices, and return them in their
own property

Signed-off-by: Dominik Csapak <d.csa...@proxmox.com>
---
 PVE/API2/Qemu.pm | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
index f22c601..f570fc2 100644
--- a/PVE/API2/Qemu.pm
+++ b/PVE/API2/Qemu.pm
@@ -4159,6 +4159,10 @@ __PACKAGE__->register_method({
 
        $res->{running} = PVE::QemuServer::check_running($vmid) ? 1:0;
 
+       my ($local_resources, $mapped_resources, $not_allowed_nodes) =
+           PVE::QemuServer::check_local_resources($vmconf, 1);
+       delete $not_allowed_nodes->{$localnode};
+
        # if vm is not running, return target nodes where local storage is 
available
        # for offline migration
        if (!$res->{running}) {
@@ -4167,7 +4171,12 @@ __PACKAGE__->register_method({
            delete $checked_nodes->{$localnode};
 
            foreach my $node (keys %$checked_nodes) {
-               if (!defined $checked_nodes->{$node}->{unavailable_storages}) {
+               if (scalar(@{$not_allowed_nodes->{$node}})) {
+                   $checked_nodes->{$node}->{unavailable_resources} = 
$not_allowed_nodes->{$node};
+                   next;
+               }
+
+               if (!defined($checked_nodes->{$node}->{unavailable_storages})) {
                    push @{$res->{allowed_nodes}}, $node;
                }
 
@@ -4175,13 +4184,11 @@ __PACKAGE__->register_method({
            $res->{not_allowed_nodes} = $checked_nodes;
        }
 
-
        my $local_disks = &$check_vm_disks_local($storecfg, $vmconf, $vmid);
        $res->{local_disks} = [ values %$local_disks ];;
 
-       my $local_resources =  PVE::QemuServer::check_local_resources($vmconf, 
1);
-
        $res->{local_resources} = $local_resources;
+       $res->{mapped_resources} = $mapped_resources;
 
        return $res;
 
-- 
2.30.2



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

Reply via email to