Ergebnis eines Tasks per API abfragen

thadoteu

Member
Jun 26, 2020
5
0
21
28
Hallo zusammen,

ich arbeite gerade mit der Proxmox-API und der Durchführung von asynchronen Aufgaben. Hierbei erhalte ich von der API eine Task-ID zurück. Nun möchte ich nach einiger Zeit schauen, ob der Task erfolgreich erledigt wurde oder nicht. Mein Problem ist hier allerdings, dass der Status, den die API für einen spezifischen Task zurückgibt (/nodes/{node}/tasks/{task}/status) lediglich "stopped" heißt; egal ob der Task erfolgreich erledigt wurde oder nicht.

Der Endpoint, der mir alle Tasks zurückgibt, liefert im Status-Feld zurück, ob der Task "OK" - oder eben "Failed" bzw. "Job Error" - ist. Gibt es wirklich keine Möglichkeit die API konkret nach dem Ergebnis einer einzigen Task-ID zu fragen oder übersehe ich einfach was?

Danke & Grüße!
 
hier gibt der status api call deutlich mehr zurück:

Code:
{
   "exitstatus" : "some error"
   "id" : "someid",
   "node" : "host",
   "pid" : 11111,
   "pstart" : 2165410,
   "starttime" : 1625748013,
   "status" : "stopped",
   "type" : "the-typ",
   "upid" : "UPID....",       
   "user" : "root@pam"
}
 
wie wird die api denn abgefragt ?
 
Hi Dominik,

ich habe die API-Funktion jetzt bei mir implementiert und da liefert sie in der Tat auch die Information über den Exit-Status zurück. Ich hatte den API-Call vorher mit pvesh auf dem System direkt getestet. Hier ergibt sich je nach Output-Format eine interessante Beobachtung:

Code:
pve2.office /etc/pve # pvesh get /nodes/pve1/tasks/UPID:pve1:0000659C:07C657FF:60E6D722:vncproxy:1111:root@pam:/status --output-format text
┌────────┬─────────┐
│ key    │ value   │
╞════════╪═════════╡
│ pid    │ 26012   │
├────────┼─────────┤
│ status │ stopped │
└────────┴─────────┘
pve2.office /etc/pve # pvesh get /nodes/pve1/tasks/UPID:pve1:0000659C:07C657FF:60E6D722:vncproxy:1111:root@pam:/status --output-format json
{"exitstatus":"Failed to run vncproxy.","id":"1111","node":"pve1","pid":26012,"pstart":130439167,"starttime":1625741090,"status":"stopped","type":"vncproxy","upid":"UPID:pve1:0000659C:07C657FF:60E6D722:vncproxy:1111:root@pam:","user":"root@pam"}

By default liefert pvesh den Output im Text-Format (also als Tabelle) zurück. Dort werden aber einige Werte einfach "verschluckt" und weg gelassen. Mir war nicht bewusst, dass je nach Output Format sich auch der Informationsgehalt des Befehls ändert.

Jetzt wo ich die Methode korrekt mit JSON-Rückgabe implementiert habe, funktioniert aber alles.
Daher vielen Dank auf jeden Fall!
 
der default cli formatter holt sich info aus der api beschreibung. nicht immer sind alle werte sinnvoll auf der cli darzustellen, manchmal werden aber auch einfach werte vergessen zu dokumentieren, oder sie kommen aus quellen (tools, etc.) wo nicht ganz klar ist was da zurück kommt
 

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!