Исправлен delete_guest: добавлено ожидание завершения задачи Proxmox через _wait_task

This commit is contained in:
2026-07-25 10:50:46 +03:00
parent 86343c922a
commit 0c1b7a3cee
+9 -4
View File
@@ -266,13 +266,18 @@ def guest_action(guest_type: str, vmid: int, action: str, node: str = None) -> N
def delete_guest(guest_type: str, vmid: int, node: str = None) -> None: def delete_guest(guest_type: str, vmid: int, node: str = None) -> None:
"""Удаляет VM или LXC (синхронно — Proxmox дожидается завершения).""" """Удаляет VM или LXC, дожидаясь завершения задачи в Proxmox."""
node = node or settings.pve_node node = node or settings.pve_node
px = _client() px = _client()
if guest_type == "vm": if guest_type == "vm":
px.nodes(node).qemu(vmid).delete() upid = px.nodes(node).qemu(vmid).delete()
else: else:
px.nodes(node).lxc(vmid).delete() upid = px.nodes(node).lxc(vmid).delete()
# Proxmox API возвращает upid для отслеживания статуса задачи.
# Ждём завершения, чтобы инстанс действительно был удалён к моменту
# возврата ответа клиенту.
if upid:
_wait_task(px, node, upid)
def get_status(guest_type: str, vmid: int, node: str = None) -> dict: def get_status(guest_type: str, vmid: int, node: str = None) -> dict:
@@ -281,4 +286,4 @@ def get_status(guest_type: str, vmid: int, node: str = None) -> dict:
px = _client() px = _client()
if guest_type == "vm": if guest_type == "vm":
return px.nodes(node).qemu(vmid).status.current.get() return px.nodes(node).qemu(vmid).status.current.get()
return px.nodes(node).lxc(vmid).status.current.get() return px.nodes(node).lxc(vmid).status.current.get()