This commit is contained in:
el 2025-04-01 16:33:54 +02:00
commit d05799fe65
60 changed files with 7078 additions and 0 deletions

View file

@ -0,0 +1,7 @@
from .container import Container, ContainerLog, ContainerUpdate, ContainerStats
from .agent import Agent, AgentRegistration
__all__ = [
'Container', 'ContainerLog', 'ContainerUpdate', 'ContainerStats',
'Agent', 'AgentRegistration'
]

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,54 @@
from pydantic import BaseModel
from typing import Optional, Dict, List
from datetime import datetime
from .container import Container
class AgentBase(BaseModel):
name: str
host: str
port: int
token: str
class AgentCreate(AgentBase):
pass
class AgentUpdate(BaseModel):
name: Optional[str] = None
host: Optional[str] = None
port: Optional[int] = None
token: Optional[str] = None
class Agent(AgentBase):
id: str
status: str
version: str
last_seen: datetime
created_at: datetime
updated_at: datetime
containers: List[Container]
class Config:
from_attributes = True
class AgentStatus(BaseModel):
status: str
version: str
last_seen: datetime
containers_count: int
system_info: Dict[str, str]
class AgentRegistration(BaseModel):
name: str
hostname: str
ip_address: str
docker_version: str
class Agent(BaseModel):
id: str
name: str
hostname: str
ip_address: str
docker_version: str
status: str
last_seen: datetime
containers: List[Container]

View file

@ -0,0 +1,54 @@
from pydantic import BaseModel
from typing import Dict, List, Optional, Any
from datetime import datetime
class PortBinding(BaseModel):
host_ip: str = "0.0.0.0"
host_port: int
container_port: int
protocol: str = "tcp"
class NetworkStats(BaseModel):
rx_bytes: int
rx_packets: int
rx_errors: int
rx_dropped: int
tx_bytes: int
tx_packets: int
tx_errors: int
tx_dropped: int
class ContainerStats(BaseModel):
cpu_percent: float
memory_usage: int
memory_limit: int
network: Dict[str, NetworkStats]
block_read: int
block_write: int
class Container(BaseModel):
id: str
name: str
status: str
image: str
created: str
ports: Optional[List[PortBinding]] = None
volumes: Optional[List[str]] = None
environment: Optional[Dict[str, str]] = None
networks: Optional[List[str]] = None
health_status: Optional[str] = None
restart_policy: Optional[str] = None
command: Optional[str] = None
class ContainerUpdate(BaseModel):
image: Optional[str] = None
command: Optional[str] = None
environment: Optional[Dict[str, str]] = None
ports: Optional[List[PortBinding]] = None
volumes: Optional[List[str]] = None
restart_policy: Optional[str] = None
class ContainerLog(BaseModel):
timestamp: datetime
message: str
stream: str = "stdout"