From 0c1b7a3cee56d3a996dae357efb7fc21430cf385 Mon Sep 17 00:00:00 2001 From: host Date: Sat, 25 Jul 2026 10:50:46 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20delete=5Fguest:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BE=D0=B6=D0=B8=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B7=D0=B0=D0=B2=D0=B5=D1=80=D1=88=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B8=20Proxmox?= =?UTF-8?q?=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=5Fwait=5Ftask?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/proxmox_client.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/backend/app/proxmox_client.py b/backend/app/proxmox_client.py index a5a40fd..cc16519 100644 --- a/backend/app/proxmox_client.py +++ b/backend/app/proxmox_client.py @@ -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: - """Удаляет VM или LXC (синхронно — Proxmox дожидается завершения).""" + """Удаляет VM или LXC, дожидаясь завершения задачи в Proxmox.""" node = node or settings.pve_node px = _client() if guest_type == "vm": - px.nodes(node).qemu(vmid).delete() + upid = px.nodes(node).qemu(vmid).delete() 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: @@ -281,4 +286,4 @@ def get_status(guest_type: str, vmid: int, node: str = None) -> dict: px = _client() if guest_type == "vm": return px.nodes(node).qemu(vmid).status.current.get() - return px.nodes(node).lxc(vmid).status.current.get() \ No newline at end of file + return px.nodes(node).lxc(vmid).status.current.get()