446c01fb78
- agent: stats one_shot=True + 20 workers (.192 went 12s -> ~2s); /health ignores Dead containers - server: /containers fetch timeout 10s -> 30s (was silently returning [] for the busiest node) - links page: drop FRIDAY Voice, add Onyx, Guacamole, Synapse Admin, n8n, CouchDB; MCPO -> /docs, Trivy -> /healthz, Jellyseerr -> Seerr - config.json: drop dead gpu-workstation (192.168.86.27) - groups.json: rebuilt for current container names (14 groups) - includes earlier uncommitted work (models, styles, ports sorting) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NQhgEUqcaV4WM2S4hfXgHD
46 lines
757 B
Python
46 lines
757 B
Python
from pydantic import BaseModel
|
|
|
|
|
|
class NodeConfig(BaseModel):
|
|
name: str
|
|
host: str
|
|
agent_port: int = 8889
|
|
|
|
|
|
class NodeStatus(BaseModel):
|
|
name: str
|
|
host: str
|
|
healthy: bool
|
|
containers_total: int = 0
|
|
error: str | None = None
|
|
|
|
|
|
class ServiceRef(BaseModel):
|
|
node: str
|
|
container: str
|
|
|
|
|
|
class Group(BaseModel):
|
|
id: str
|
|
name: str
|
|
services: list[ServiceRef] = []
|
|
|
|
|
|
class GroupsData(BaseModel):
|
|
groups: list[Group] = []
|
|
|
|
|
|
class ServiceInfo(BaseModel):
|
|
id: str
|
|
name: str
|
|
node: str
|
|
status: str
|
|
image: str
|
|
created: str
|
|
uptime: str | None = None
|
|
is_swarm: bool = False
|
|
swarm_service: str | None = None
|
|
ports: list[str] = []
|
|
memory_usage: int = 0
|
|
memory_limit: int = 0
|