Files
minerops/backend/app/agent_registry/models.py
T
2026-08-27 17:00:56 +00:00

63 lines
1.5 KiB
Python

"""Typed read models for Agent Management."""
from datetime import datetime
from typing import Literal
from uuid import UUID
from pydantic import BaseModel, Field
CredentialState = Literal["legacy", "active", "revoked"]
RoutingState = Literal["assigned", "unassigned", "disabled"]
class AgentRegistrySite(BaseModel):
id: UUID
name: str
class AgentRegistryZone(BaseModel):
id: UUID
site_id: UUID
site_name: str
name: str
description: str | None = None
is_enabled: bool
assigned_agent_id: str | None = None
networks: list[str] = Field(default_factory=list)
class AgentRegistryAgent(BaseModel):
agent_id: str
display_name: str | None = None
site_id: UUID | None = None
site_name: str
agent_zone_id: UUID | None = None
agent_zone_name: str | None = None
agent_zone_enabled: bool | None = None
hostname: str | None = None
version: str | None = None
ip_address: str | None = None
last_checkin_at: datetime
credential_state: CredentialState
credential_created_at: datetime | None = None
credential_revoked_at: datetime | None = None
routing_state: RoutingState
class AgentRegistryData(BaseModel):
agents: list[AgentRegistryAgent] = Field(default_factory=list)
sites: list[AgentRegistrySite] = Field(default_factory=list)
zones: list[AgentRegistryZone] = Field(default_factory=list)
class AgentRegistryResponse(BaseModel):
data: AgentRegistryData
meta: dict[str, object] = Field(default_factory=dict)
error: None = None