Nach dem Upgrade von Proxmox 7.4 auf 8.0.4 funktionieren alle QEMU Guest Agent Exec API Calls nicht mehr, die im Command Argumente verwenden.
Beispiel Request:
(Die Übergabe als Array
Response:
Syslog vom Hypervisor:
Das Upgrade von 7 auf 8 hat mit dem offiziellen Guide einwandfrei funktioniert.
Durch die API Änderung von PVE 8 müssen die Argumente als Array übermittelt werden.
Statt:
muss folgendes übergeben werden:
In den Breakings Changes der 8.0 Roadmap heißt es:
Handelt es sich hierbei um einen Bug oder müssen allen Exec Commands entsprechend angepasst werden?
Falls es sich hier um ein gewolltes Verhalten handelt, wäre mein Vorschlag, dass man den
Quelle: https://pve.proxmox.com/pve-docs/api-viewer/index.html#/nodes/{node}/qemu/{vmid}/agent/exec
Proxmox 7:
Proxmox 8:
Vorschlag für PVE 8:
- command (Singular) weiterhin als String Implementierung (ggf. interne Übersetzung in die neue Array-Struktur)
- commands (Plural) als Array Implementierung [command als deprecated für PVE 9 kennzeichnen]
Beispiel Request:
Code:
POST https://X.X.X.X:8006/api2/json/nodes/node25/qemu/15223/agent/exec
{
"command": "ls -lah"
}
"command": ["ls -lah"]
ohne Splittung der Argumente führt zu identischer Response)Response:
Code:
596 - Broken pipe
Syslog vom Hypervisor:
Code:
2023-08-22T09:50:55.742503+02:00 node25 pvedaemon[2829165]: Wide character in subroutine entry at /usr/lib/x86_64-linux-gnu/perl5/5.36/AnyEvent/Handle.pm line 1007.
2023-08-22T09:51:00.744212+02:00 node25 pvedaemon[2829165]: problem with client ::ffff:X.X.X.X; Connection timed out
/usr/lib/x86_64-linux-gnu/perl5/5.36/AnyEvent/Handle.pm line 1007
Code:
# we downgrade here to avoid hard-to-track-down bugs,
# and diagnose the problem earlier and better.
if ($self->{tls}) {
utf8::downgrade $self->{_tls_wbuf} .= $_[0];
&_dotls ($self) if $self->{fh};
} else {
utf8::downgrade $self->{wbuf} .= $_[0]; # Zeile 1007
$self->_drain_wbuf if $self->{fh};
}
Code:
pveversion
pve-manager/8.0.4/d258a813cfa6b390 (running kernel: 6.2.16-8-pve)
Das Upgrade von 7 auf 8 hat mit dem offiziellen Guide einwandfrei funktioniert.
Durch die API Änderung von PVE 8 müssen die Argumente als Array übermittelt werden.
Statt:
Code:
{
"command": "ls -lah"
}
muss folgendes übergeben werden:
Code:
{
"command": ["ls", "-lah"]
}
In den Breakings Changes der 8.0 Roadmap heißt es:
Quelle: https://pve.proxmox.com/wiki/Roadmap#8.0-known-issuesThe API can handle array-type data differently, while staying backward compatible.
Handelt es sich hierbei um einen Bug oder müssen allen Exec Commands entsprechend angepasst werden?
Falls es sich hier um ein gewolltes Verhalten handelt, wäre mein Vorschlag, dass man den
exec
Endpunkt um den Parameter commands
erweitert und command
weiterhin als String interpretiert und intern entsprechend übersetzt. Dadurch würde man die Abwärtskompatibilität nicht verlieren und gleichzeitig den neuen Plural Array-Parameter (commands) als Mehrzahl erkennbar machen.Quelle: https://pve.proxmox.com/pve-docs/api-viewer/index.html#/nodes/{node}/qemu/{vmid}/agent/exec
Proxmox 7:
command - string
Proxmox 8:
command - array
Vorschlag für PVE 8:
- command (Singular) weiterhin als String Implementierung (ggf. interne Übersetzung in die neue Array-Struktur)
- commands (Plural) als Array Implementierung [command als deprecated für PVE 9 kennzeichnen]
Last edited: