feat(web): show MazeNET decky running count + roll into dashboard
MazeNET header now reports '{running}/{total} DECKIES RUNNING' so
operators can see per-topology runtime status at a glance.
Dashboard ACTIVE DECKIES counters used to reflect only the fleet state
file; TopologyDecky rows (MazeNET deployments) are now added in —
deployed_deckies = fleet + all topology rows, active_deckies = fleet
(no runtime field) + topology rows whose state is 'running'.
This commit is contained in:
@@ -349,15 +349,27 @@ class SQLModelRepository(BaseRepository):
|
||||
select(func.count(func.distinct(Log.attacker_ip)))
|
||||
)
|
||||
).scalar() or 0
|
||||
topo_total = (
|
||||
await session.execute(select(func.count()).select_from(TopologyDecky))
|
||||
).scalar() or 0
|
||||
topo_running = (
|
||||
await session.execute(
|
||||
select(func.count())
|
||||
.select_from(TopologyDecky)
|
||||
.where(TopologyDecky.state == "running")
|
||||
)
|
||||
).scalar() or 0
|
||||
|
||||
_state = await asyncio.to_thread(load_state)
|
||||
deployed_deckies = len(_state[0].deckies) if _state else 0
|
||||
fleet_deckies = len(_state[0].deckies) if _state else 0
|
||||
|
||||
return {
|
||||
"total_logs": total_logs,
|
||||
"unique_attackers": unique_attackers,
|
||||
"active_deckies": deployed_deckies,
|
||||
"deployed_deckies": deployed_deckies,
|
||||
# Fleet state file doesn't track per-decky runtime; treat all
|
||||
# fleet rows as active and add MazeNET running rows on top.
|
||||
"active_deckies": fleet_deckies + topo_running,
|
||||
"deployed_deckies": fleet_deckies + topo_total,
|
||||
}
|
||||
|
||||
async def get_deckies(self) -> List[dict]:
|
||||
|
||||
Reference in New Issue
Block a user