Verbessungsvorschlag: API REST GET /api2/json/cluster/tasks > VMID

hitman

Renowned Member
Jan 5, 2018
111
29
68
36
Hallo zusammen,

sobald man eine VM im Cluster verschiebt verschwinden auch deren alten Tasks, die Tasks sind also immer Node gebunden.

Leider lässt sich über die API "GET /api2/json/cluster/tasks" keine VMID als Filter anhängen.

[upid] => UPID:pve1:00202A0D:48120CAC:6536C2B3:vzdump::root@pam:
[node] => pve1
[user] => root@pam
[pid] => 2107917
[pstart] => 1209142444
[endtime] => 1698092368
[id] =>
[starttime] => 1698087603
[status] => OK
[type] => vzdump

Bedeutet man muss eine Schleife über jede Node hängen und die Tasks mit der jeweiligen VMID abrufen.

Hier würde es doch besser sein, wenn die VMID mit ins /api2/json/cluster/tasks kommt.

Beste Grüße
Ralf
 
Hallo,
eine Task UPID ist fürs gesamte Cluster gültig, es fließen die meisten der gelisteten werte mit in deren Generierung ein, siehe dazu [0].
Der Task selbst ist Node gebunden, das ist korrekt, daher ist der Name der Node auch teil der UPID.

Bedeutet man muss eine Schleife über jede Node hängen und die Tasks mit der jeweiligen VMID abrufen.
Mir ist die Frage nicht ganz klar, die gelisteten Tasks sind wie bereits erwähnt Cluster weit, also braucht es keine Schleife über die Nodes. Ist hier gemeint eine Schleife über node/<node>/tasks. Was ist der genaue Anwendungsfall?

[0] https://git.proxmox.com/?p=pve-comm...0edf96f56c852267b1d34e839a25add;hb=HEAD#l1098
 
Hallo Chris,

danke für die Rückmeldung.

In der Proxmox Web GUI, ist es derzeit so:

Wenn man eine VM von Node1 auf Node2 verschiebt verschwinden unter VM > Tasks History, die Tasks der alten Node1.
Also alle VM Task die auf Node1 ausgefürt wurden sind dann nicht mehr sichtbar, unter VM > Tasks History, man sieht nur noch alle VM Task der Node2.

Node1 (PVE1)
Bildschirmfoto 2023-10-24 um 18.19.11.png
Node2 (PVE2)
Bildschirmfoto 2023-10-24 um 18.20.28.png


Warum ich eine schleife benötige, man kann nie wissen wo die VM mal drauf lief also die Node und welche Task ausgeführt wurden.

PHP:
# All Nodes
$params = [ 'type' => 'node' ];
$cluster_resources_node = api_pve_con( $pve_server, $pve_port, "api2/json/cluster/resources", "GET", $params, $pve_ticket_admin, $pve_token_admin );
             
# foreach all Nodes
foreach ( $cluster_resources_node[ 'data' ] as $cluster ) {
               
$vmid = post_entschluesselt( $_GET[ 'vmid' ] );
$node = $cluster[ 'node' ];
$params = [ 'vmid' => $vmid, 'source' => "all" ];
$vm_tasks = api_pve_con( $pve_server, $pve_port, "api2/json/nodes/$node/tasks", "GET", $params, $pve_ticket_admin, $pve_token_admin );

# foreach all Tasks make one array
foreach ( $vm_tasks[ 'data' ] as $vm ) {
            # Make Multi Array
            $data2['task'][] = $vm;  
                }
            };

Grüße

Ralf
 
Last edited:
Anmerkung zu "api2/json/cluster/tasks" leider nur 200 Records output.
Also bleibt mir nur die Schleife über alle Nodes hinweg um alle Task der jeweiligen VM in Erfahrung zu bringen

Ich denke es würde eine gute Lösung sein, wenn die VMID sowie ein Limit mit ins "api2/json/cluster/tasks?vmid=500&limit=500" kommt, so könnte es später auch in der PVE Gui abrufen werden unter VM > Tasks History.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!