Working state after implementing dark theme.

This commit is contained in:
Kalzu Rekku
2025-06-11 16:29:40 +03:00
parent d4c71e7d2c
commit d93b0ee4ee
6 changed files with 453 additions and 165 deletions

View File

@ -193,9 +193,9 @@ async def read_root(request: Request):
{"request": request, "service_uuid": SERVICE_UUID}
)
@app.get("/{service_uuid}/logs")
async def get_logs(service_uuid: str, limit: int = 100):
"""Get recent logs for the service."""
@app.get("/{service_uuid}/logs", response_class=HTMLResponse)
async def get_logs(request: Request, service_uuid: str, limit: int = 100):
"""Serve the logs web page with recent logs for the service."""
if service_uuid != SERVICE_UUID:
return JSONResponse(
status_code=404,
@ -203,12 +203,15 @@ async def get_logs(service_uuid: str, limit: int = 100):
)
logs = log_buffer.get_logs(limit)
return {
"service_uuid": service_uuid,
"log_count": len(logs),
"logs": logs
}
return templates.TemplateResponse(
"logs.html",
{
"request": request,
"service_uuid": service_uuid,
"logs": logs,
"log_count": len(logs)
}
)
@app.put("/{service_uuid}/{node_uuid}/", status_code=status.HTTP_200_OK)
async def update_node_status(
@ -284,13 +287,29 @@ async def update_node_status(
@app.get("/nodes/status")
async def get_all_nodes_status():
"""Returns the current status of all known nodes for the UI."""
"""Returns the current status of all known nodes for the UI, including ping latencies."""
logger.info("Fetching all nodes status for UI.")
response_nodes = []
for node_uuid, data in known_nodes_db.items():
# Dynamically calculate health for each node based on its current data
# Dynamically calculate health for each node
current_health = get_node_health(data)
# Build connections dictionary with raw ping latencies
connections = {}
for target_uuid in known_nodes_db:
if target_uuid != node_uuid: # Exclude self
# Fetch recent ping data (last 5 minutes to account for RRD step=60s)
ping_data = database.get_ping_data(node_uuid, target_uuid, start_time="-300s")
latency_ms = None
if ping_data and ping_data['data']['latency']:
# Get the most recent non-null latency
for latency in reversed(ping_data['data']['latency']):
if latency is not None:
latency_ms = float(latency)
break
connections[target_uuid] = latency_ms
response_nodes.append({
"uuid": node_uuid,
"last_seen": data["last_seen"],
@ -298,7 +317,8 @@ async def get_all_nodes_status():
"health_status": current_health,
"uptime_seconds": data.get("uptime_seconds"),
"load_avg": data.get("load_avg"),
"memory_usage_percent": data.get("memory_usage_percent")
"memory_usage_percent": data.get("memory_usage_percent"),
"connections": connections
})
return {"nodes": response_nodes}