start
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class AlertOut(BaseModel):
|
||||
id: int
|
||||
severity: str
|
||||
category: str
|
||||
source: str | None = None
|
||||
title: str
|
||||
message: str | None = None
|
||||
acknowledged: bool
|
||||
created_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
@@ -0,0 +1,31 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class UserOut(BaseModel):
|
||||
id: int
|
||||
email: str
|
||||
role: str
|
||||
is_active: bool
|
||||
created_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
class LoginIn(BaseModel):
|
||||
email: str
|
||||
password: str
|
||||
|
||||
|
||||
class TokenPair(BaseModel):
|
||||
access_token: str
|
||||
refresh_token: str
|
||||
token_type: str = "bearer"
|
||||
|
||||
|
||||
class RefreshIn(BaseModel):
|
||||
refresh_token: str
|
||||
@@ -0,0 +1,17 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class BackupOut(BaseModel):
|
||||
id: int
|
||||
device_id: int
|
||||
filename: str
|
||||
fmt: str
|
||||
size: int
|
||||
created_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
@@ -0,0 +1,65 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
|
||||
class DeviceBase(BaseModel):
|
||||
name: str = Field(min_length=1, max_length=128)
|
||||
host: str
|
||||
port: int = 8729
|
||||
use_tls: bool = True
|
||||
username: str
|
||||
kind: str = "router"
|
||||
|
||||
|
||||
class DeviceCreate(DeviceBase):
|
||||
password: str
|
||||
|
||||
|
||||
class DeviceUpdate(BaseModel):
|
||||
name: str | None = None
|
||||
host: str | None = None
|
||||
port: int | None = None
|
||||
use_tls: bool | None = None
|
||||
username: str | None = None
|
||||
password: str | None = None
|
||||
kind: str | None = None
|
||||
monitored_interfaces: str | None = None
|
||||
uplink_interfaces: str | None = None
|
||||
interface_history_hours: int | None = None
|
||||
|
||||
|
||||
class DeviceOut(DeviceBase):
|
||||
id: int
|
||||
identity: str | None = None
|
||||
model: str | None = None
|
||||
serial: str | None = None
|
||||
ros_version: str | None = None
|
||||
architecture: str | None = None
|
||||
status: str
|
||||
last_error: str | None = None
|
||||
last_seen: datetime | None = None
|
||||
internet_ok: bool | None = None
|
||||
last_uptime_seconds: int | None = None
|
||||
abnormal_reboot: bool = False
|
||||
last_log_warning: str | None = None
|
||||
monitored_interfaces: str | None = None
|
||||
uplink_interfaces: str | None = None
|
||||
interface_history_hours: int = 24
|
||||
created_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
class DeviceResource(BaseModel):
|
||||
"""Срез `/system/resource`."""
|
||||
cpu_load: int | None = None
|
||||
free_memory: int | None = None
|
||||
total_memory: int | None = None
|
||||
uptime: str | None = None
|
||||
version: str | None = None
|
||||
board_name: str | None = None
|
||||
architecture_name: str | None = None
|
||||
@@ -0,0 +1,55 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from pydantic import BaseModel, Field, HttpUrl
|
||||
|
||||
|
||||
class FirmwareImportIn(BaseModel):
|
||||
url: HttpUrl
|
||||
name: str | None = None
|
||||
version: str | None = None
|
||||
architecture: str | None = None
|
||||
channel: str | None = None
|
||||
|
||||
|
||||
class FirmwareBulkImportIn(BaseModel):
|
||||
version: str = Field(..., description="Например: 7.16.1")
|
||||
channel: str | None = "stable"
|
||||
architectures: list[str] = Field(..., min_length=1)
|
||||
|
||||
|
||||
class FirmwareBulkResult(BaseModel):
|
||||
architecture: str
|
||||
ok: bool
|
||||
firmware_id: int | None = None
|
||||
error: str | None = None
|
||||
skipped: bool = False
|
||||
|
||||
|
||||
class FirmwareBulkOut(BaseModel):
|
||||
version: str
|
||||
channel: str | None
|
||||
results: list[FirmwareBulkResult]
|
||||
|
||||
|
||||
class FirmwareUpdateIn(BaseModel):
|
||||
name: str | None = Field(default=None, max_length=255)
|
||||
version: str | None = None
|
||||
architecture: str | None = None
|
||||
channel: str | None = None
|
||||
|
||||
|
||||
class FirmwareOut(BaseModel):
|
||||
id: int
|
||||
name: str
|
||||
version: str | None
|
||||
architecture: str | None
|
||||
channel: str | None
|
||||
size: int
|
||||
sha256: str | None
|
||||
source_url: str | None
|
||||
created_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
@@ -0,0 +1,15 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class MetricPoint(BaseModel):
|
||||
ts: datetime
|
||||
cpu_load: float | None = None
|
||||
mem_used_pct: float | None = None
|
||||
uptime_seconds: int | None = None
|
||||
internet_ok: bool | None = None
|
||||
rx_bps: int | None = None
|
||||
tx_bps: int | None = None
|
||||
Reference in New Issue
Block a user