1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
"""Models for supervisor component."""
from dataclasses import dataclass
from enum import StrEnum
from ipaddress import IPv4Address
from .base import ContainerStats, Options, Request, ResponseData
from .root import LogLevel, UpdateChannel
# --- ENUMS ----
class DetectBlockingIO(StrEnum):
"""DetectBlockingIO type."""
OFF = "off"
ON = "on"
ON_AT_STARTUP = "on_at_startup"
# --- OBJECTS ----
@dataclass(frozen=True, slots=True)
class SupervisorInfo(ResponseData):
"""SupervisorInfo model."""
version: str
version_latest: str
update_available: bool
channel: UpdateChannel
arch: str
supported: bool
healthy: bool
ip_address: IPv4Address
timezone: str | None
logging: LogLevel
debug: bool
debug_block: bool
diagnostics: bool | None
auto_update: bool
country: str | None
detect_blocking_io: bool
@dataclass(frozen=True, slots=True)
class SupervisorStats(ContainerStats):
"""SupervisorStats model."""
@dataclass(frozen=True, slots=True)
class SupervisorUpdateOptions(Request):
"""SupervisorUpdateOptions model."""
version: str
@dataclass(frozen=True, slots=True)
class SupervisorOptions(Options):
"""SupervisorOptions model."""
channel: UpdateChannel | None = None
timezone: str | None = None
logging: LogLevel | None = None
debug: bool | None = None
debug_block: bool | None = None
diagnostics: bool | None = None
content_trust: bool | None = None
force_security: bool | None = None
auto_update: bool | None = None
country: str | None = None
detect_blocking_io: DetectBlockingIO | None = None
|