from pathlib import Path # Исправляет совместимость создания LXC с Proxmox VE 9. path = Path("/app/app/proxmox_client.py") text = path.read_text() # Диск контейнера создаётся сразу на SSD при POST /lxc. text = text.replace('storage: str = "local",', 'storage: str = "SSD",', 1) text = text.replace( ' ostemplate=template_volid,\n cores=cores,', ' ostemplate=template_volid,\n rootfs=f"{storage}:{disk_gb}",\n cores=cores,', 1, ) # Proxmox VE 9 не поддерживает POST /lxc/{vmid}/passwd. text = text.replace( ' px.nodes(node).lxc(new_vmid).passwd.post(password=password)\n', '', 1, ) # Rootfs уже создаётся нужного размера в POST /lxc. text = text.replace( ' px.nodes(node).lxc(new_vmid).resize.put(\n' ' disk="rootfs",\n' ' size=f"{storage}:{disk_gb}",\n' ' )\n', '', 1, ) # Proxmox может завершать vzcreate со статусом WARNINGS: N. # Это успешное создание с предупреждениями, а не ошибка. text = text.replace( ' if status.get("exitstatus") != "OK":', ' exitstatus = status.get("exitstatus", "")\n' ' if exitstatus != "OK" and not str(exitstatus).startswith("WARNINGS:"):', 1, ) path.write_text(text)