141 lines
3.5 KiB
Python
141 lines
3.5 KiB
Python
from datetime import datetime
|
|
from typing import Any, Literal, Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
MonitorPolicyMode = Literal["inherit", "include", "exclude"]
|
|
|
|
|
|
class DashboardScope(BaseModel):
|
|
city: Optional[str] = None
|
|
client: Optional[str] = None
|
|
object_ids: list[int] = Field(default_factory=list)
|
|
tag_ids: list[int] = Field(default_factory=list)
|
|
|
|
|
|
class DashboardCheckDefinitionRead(BaseModel):
|
|
check_key: str
|
|
enabled: bool
|
|
interval_sec_default: int
|
|
plugin_action: str
|
|
categories: list[str]
|
|
timeout_sec: int
|
|
concurrency: int
|
|
updated_at: datetime
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class DashboardCheckDefinitionPatchItem(BaseModel):
|
|
check_key: str
|
|
enabled: Optional[bool] = None
|
|
interval_sec_default: Optional[int] = None
|
|
categories: Optional[list[str]] = None
|
|
timeout_sec: Optional[int] = None
|
|
concurrency: Optional[int] = None
|
|
|
|
|
|
class DashboardObjectOverrideRead(BaseModel):
|
|
object_id: int
|
|
check_key: str
|
|
enabled_override: Optional[bool] = None
|
|
interval_sec_override: Optional[int] = None
|
|
categories_override: Optional[list[str]] = None
|
|
updated_at: datetime
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class DashboardObjectOverridePatchItem(BaseModel):
|
|
object_id: int
|
|
check_key: str
|
|
enabled_override: Optional[bool] = None
|
|
interval_sec_override: Optional[int] = None
|
|
categories_override: Optional[list[str]] = None
|
|
|
|
|
|
class DashboardObjectPolicyRead(BaseModel):
|
|
object_id: int
|
|
mode: MonitorPolicyMode
|
|
updated_at: datetime
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class DashboardObjectPolicyPatchItem(BaseModel):
|
|
object_id: int
|
|
mode: MonitorPolicyMode
|
|
|
|
|
|
class DashboardTagPolicyRead(BaseModel):
|
|
tag_id: int
|
|
enabled: bool
|
|
updated_at: datetime
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class DashboardTagPolicyPatchItem(BaseModel):
|
|
tag_id: int
|
|
enabled: bool
|
|
|
|
|
|
class DashboardPolicyResponse(BaseModel):
|
|
object_policies: list[DashboardObjectPolicyRead]
|
|
tag_policies: list[DashboardTagPolicyRead]
|
|
|
|
|
|
class DashboardChecksResponse(BaseModel):
|
|
checks: list[DashboardCheckDefinitionRead]
|
|
object_overrides: list[DashboardObjectOverrideRead]
|
|
|
|
|
|
class DashboardRunRequest(DashboardScope):
|
|
force: bool = True
|
|
|
|
|
|
class DashboardRunResponse(BaseModel):
|
|
accepted: bool
|
|
running: bool
|
|
detail: str
|
|
|
|
|
|
class DashboardMonitorStatus(BaseModel):
|
|
status: str
|
|
run_type: Optional[str] = None
|
|
scope: Optional[dict[str, Any]] = None
|
|
started_at: Optional[datetime] = None
|
|
finished_at: Optional[datetime] = None
|
|
last_success_at: Optional[datetime] = None
|
|
last_error: Optional[str] = None
|
|
last_counts: Optional[dict[str, Any]] = None
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class DashboardObjectCheckSummary(BaseModel):
|
|
status_counts: dict[str, int]
|
|
last_checked_at: Optional[datetime] = None
|
|
max_age_sec: Optional[int] = None
|
|
|
|
|
|
class DashboardObjectSummary(BaseModel):
|
|
object_id: int
|
|
object_name: str
|
|
city: Optional[str] = None
|
|
client: Optional[str] = None
|
|
allowed: bool
|
|
monitor_mode: MonitorPolicyMode
|
|
device_count: int
|
|
checks: dict[str, DashboardObjectCheckSummary]
|
|
health_score: Optional[float] = None
|
|
|
|
|
|
class DashboardHomeSummaryResponse(BaseModel):
|
|
generated_at: datetime
|
|
scope: DashboardScope
|
|
totals: dict[str, int]
|
|
checks_meta: list[DashboardCheckDefinitionRead]
|
|
objects: list[DashboardObjectSummary]
|
|
problem_objects: list[DashboardObjectSummary]
|