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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
"""Models for root APIs."""
from dataclasses import dataclass
from enum import StrEnum
from .base import ResponseData
# --- ENUMS ----
class HostFeature(StrEnum):
"""HostFeature type.
This is an incomplete list. Supervisor regularly adds support for new host
features as users request them. Therefore when returning a list of host
features, there may be some which are not in this list parsed as strings on
older versions of the client.
"""
DISK = "disk"
HAOS = "haos"
HOSTNAME = "hostname"
JOURNAL = "journal"
MOUNT = "mount"
NETWORK = "network"
OS_AGENT = "os_agent"
REBOOT = "reboot"
RESOLVED = "resolved"
SERVICES = "services"
SHUTDOWN = "shutdown"
TIMEDATE = "timedate"
class SupervisorState(StrEnum):
"""SupervisorState type."""
INITIALIZE = "initialize"
SETUP = "setup"
STARTUP = "startup"
RUNNING = "running"
FREEZE = "freeze"
SHUTDOWN = "shutdown"
STOPPING = "stopping"
CLOSE = "close"
class UpdateChannel(StrEnum):
"""UpdateChannel type."""
STABLE = "stable"
BETA = "beta"
DEV = "dev"
class LogLevel(StrEnum):
"""LogLevel type."""
DEBUG = "debug"
INFO = "info"
WARNING = "warning"
ERROR = "error"
CRITICAL = "critical"
class UpdateType(StrEnum):
"""UpdateType type."""
ADDON = "addon"
CORE = "core"
OS = "os"
SUPERVISOR = "supervisor"
# --- OBJECTS ----
@dataclass(frozen=True, slots=True)
class RootInfo(ResponseData):
"""Root info object."""
supervisor: str
homeassistant: str | None
hassos: str | None
docker: str
hostname: str | None
operating_system: str | None
features: list[HostFeature | str]
machine: str | None
machine_id: str | None
arch: str
state: SupervisorState
supported_arch: list[str]
supported: bool
channel: UpdateChannel
logging: LogLevel
timezone: str
@dataclass(frozen=True, slots=True)
class AvailableUpdate(ResponseData):
"""AvailableUpdate type."""
update_type: UpdateType
panel_path: str
version_latest: str
name: str | None = None
icon: str | None = None
@dataclass(frozen=True, slots=True)
class AvailableUpdates(ResponseData):
"""AvailableUpdates type."""
available_updates: list[AvailableUpdate]
|