Files

63 lines
1.6 KiB
Python
Raw Permalink Normal View History

from datetime import datetime
from typing import Dict, List, Literal, Optional
from pydantic import BaseModel, Field
HealthStatus = Literal['pass', 'warn', 'fail']
ActionStatus = Literal['accepted', 'completed', 'failed']
ServiceActiveState = Literal['active', 'reloading', 'inactive', 'failed', 'activating', 'deactivating']
class CheckResult(BaseModel):
status: HealthStatus
latency_ms: Optional[float] = None
detail: Optional[str] = None
class HealthResponse(BaseModel):
status: HealthStatus
service: str
version: Optional[str] = None
time: datetime
uptime_s: Optional[float] = None
checks: Dict[str, CheckResult] = Field(default_factory=dict)
class ServiceState(BaseModel):
name: str
description: Optional[str] = None
active_state: ServiceActiveState
sub_state: str
loaded: str
status: HealthStatus
pid: Optional[int] = None
since: Optional[datetime] = None
health_url: Optional[str] = None
reachable: Optional[bool] = None
notes: Optional[str] = None
class ServiceListResponse(BaseModel):
count: int
time: datetime
items: List[ServiceState]
class RuntimeResponse(BaseModel):
status: HealthStatus
service: str
version: Optional[str] = None
time: datetime
hostname: str
uptime_s: Optional[float] = None
services: List[ServiceState]
checks: Dict[str, CheckResult] = Field(default_factory=dict)
class ServiceActionResponse(BaseModel):
status: ActionStatus
action: Literal['start', 'stop', 'restart']
service: str
job_id: Optional[str] = None
message: Optional[str] = None
time: datetime