20 lines
1017 B
Python
20 lines
1017 B
Python
def get_vnc_ticket(guest_type: str, vmid: int, node: str = None) -> dict:
|
||
"""Запрашивает у Proxmox одноразовый тикет для VNC/websocket-консоли.
|
||
|
||
Возвращаемый тикет привязан к origin (схема+хост+порт), через который
|
||
был сделан запрос к Proxmox. В Proxmox 8.x+ нет параметра host= для
|
||
vncproxy — тикет привязывается автоматически к тому origin, через
|
||
который backend подключён к Proxmox (т.е. к PVE_HOST).
|
||
"""
|
||
node = node or settings.pve_node
|
||
px = _client()
|
||
endpoint = px.nodes(node).qemu(vmid) if guest_type == "vm" else px.nodes(node).lxc(vmid)
|
||
result = endpoint.vncproxy.post(websocket=1)
|
||
return {
|
||
"ticket": result["ticket"],
|
||
"port": result["port"],
|
||
"node": node,
|
||
"vmid": vmid,
|
||
"guest_type": guest_type,
|
||
"pve_host": settings.pve_host,
|
||
} |