merge watcher from dev to main (0.8.0) #34

Merged
serversdown merged 5 commits from dev into main 2026-03-18 16:05:47 -04:00
2 changed files with 8 additions and 26 deletions
Showing only changes of commit 22c62c0729 - Show all commits

View File

@@ -31,11 +31,15 @@ router = APIRouter(tags=["admin"])
def _agent_to_dict(agent: WatcherAgent) -> dict:
last_seen = agent.last_seen
if last_seen:
# Compute age in minutes (last_seen stored as UTC naive)
now_utc = datetime.utcnow()
age_minutes = int((now_utc - last_seen).total_seconds() // 60)
if age_minutes > 60:
status = "missing"
else:
status = "ok"
else:
age_minutes = None
status = "missing"
return {
"id": agent.id,
@@ -43,7 +47,7 @@ def _agent_to_dict(agent: WatcherAgent) -> dict:
"version": agent.version,
"last_seen": last_seen.isoformat() if last_seen else None,
"age_minutes": age_minutes,
"status": agent.status,
"status": status,
"ip_address": agent.ip_address,
"log_tail": agent.log_tail,
"update_pending": bool(agent.update_pending),

View File

@@ -216,20 +216,9 @@ async def series3_heartbeat(request: Request, db: Session = Depends(get_db)):
results.append({"unit": uid, "status": status})
# Determine overall worst status for the watcher agent row
statuses = [r["status"] for r in results]
if "Missing" in statuses:
agent_status = "missing"
elif "Pending" in statuses:
agent_status = "pending"
elif statuses:
agent_status = "ok"
else:
agent_status = "unknown"
if source:
_upsert_watcher_agent(db, source, "series3_watcher", version,
client_ip, log_tail_str, agent_status)
client_ip, log_tail_str, "ok")
db.commit()
@@ -340,20 +329,9 @@ async def series4_heartbeat(request: Request, db: Session = Depends(get_db)):
results.append({"unit": uid, "status": status})
# Determine overall worst status for the watcher agent row
statuses = [r["status"] for r in results]
if any(s.lower() == "stale" for s in statuses):
agent_status = "missing"
elif any(s.lower() == "late" for s in statuses):
agent_status = "pending"
elif statuses:
agent_status = "ok"
else:
agent_status = "unknown"
if source:
_upsert_watcher_agent(db, source, "series4_watcher", version,
client_ip, log_tail_str, agent_status)
client_ip, log_tail_str, "ok")
db.commit()