feat: v1.1.0 — backup module, IPAM node binding, HA, task queue, theme CSS
- Backup module: full CRUD for storages, backup files, scheduled jobs (APScheduler) - Proxmox client: storage/backup/restore/HA methods - IPAM: proxmox_node field, server+node binding for networks and allocations - Task queue service: improvements and new task types - Monitoring worker: extended metrics and alerts - HA support: add/remove VMs from Proxmox HA groups - tasks.html: new task tracking page - proxmox_vms.html: major UI update (bulk ops, HA, snapshots) - backups.html: full backup management UI (3 tabs) - base.html: sidebar backup link, websocket manager - theme.css: full CSS variables theme, 395 lines added - migrations: migration #15 (BackupJob), #16 (proxmox_node) - RBAC: backup resource permissions - websocket_manager.py: new module for WS connections
This commit is contained in:
@@ -403,14 +403,19 @@ def get_server_cluster_info(
|
||||
})
|
||||
|
||||
is_cluster = client.is_cluster()
|
||||
nodes = client.get_nodes() if is_cluster else []
|
||||
|
||||
nodes = client.get_nodes()
|
||||
node_names = [n.get('node') for n in nodes if n.get('node')]
|
||||
# Fallback: если get_nodes() вернул пустой список (например, нет прав),
|
||||
# используем hostname сервера как имя ноды
|
||||
if not node_names:
|
||||
node_names = [server.hostname]
|
||||
|
||||
return JSONResponse(content={
|
||||
"server_id": server_id,
|
||||
"server_name": server.name,
|
||||
"is_cluster": is_cluster,
|
||||
"node_count": len(nodes),
|
||||
"nodes": [n.get('node') for n in nodes] if nodes else []
|
||||
"node_count": len(node_names),
|
||||
"nodes": node_names
|
||||
})
|
||||
except Exception as e:
|
||||
logger.error(f"Error checking cluster info for server {server_id}: {e}")
|
||||
|
||||
Reference in New Issue
Block a user