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 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
"""Models for OS APIs."""
from dataclasses import dataclass
from enum import StrEnum
from pathlib import PurePath
from .base import Options, Request, ResponseData
# --- ENUMS ----
class RaucState(StrEnum):
"""RaucState type."""
GOOD = "good"
BAD = "bad"
ACTIVE = "active"
class BootSlotName(StrEnum):
"""BootSlotName type."""
A = "A"
B = "B"
# --- OBJECTS ----
@dataclass(frozen=True, slots=True)
class BootSlot(ResponseData):
"""BootSlot model."""
state: str
status: RaucState | None
version: str | None
@dataclass(frozen=True, slots=True)
class OSInfo(ResponseData):
"""OSInfo model."""
version: str | None
version_latest: str | None
update_available: bool
board: str | None
boot: str | None
data_disk: str | None
boot_slots: dict[str, BootSlot]
@dataclass(frozen=True, slots=True)
class OSUpdate(Request):
"""OSUpdate model."""
version: str | None = None
@dataclass(frozen=True, slots=True)
class MigrateDataOptions(Request):
"""MigrateDataOptions model."""
device: str
@dataclass(frozen=True, slots=True)
class DataDisk(ResponseData):
"""DataDisk model."""
name: str
vendor: str
model: str
serial: str
size: int
id: str
dev_path: PurePath
@dataclass(frozen=True, slots=True)
class DataDiskList(ResponseData):
"""DataDiskList model."""
disks: list[DataDisk]
@dataclass(frozen=True, slots=True)
class SetBootSlotOptions(Request):
"""SetBootSlotOptions model."""
boot_slot: BootSlotName
@dataclass(frozen=True, slots=True)
class GreenInfo(ResponseData):
"""GreenInfo model."""
activity_led: bool
power_led: bool
system_health_led: bool
@dataclass(frozen=True, slots=True)
class GreenOptions(Options):
"""GreenOptions model."""
activity_led: bool | None = None
power_led: bool | None = None
system_health_led: bool | None = None
@dataclass(frozen=True, slots=True)
class YellowInfo(ResponseData):
"""YellowInfo model."""
disk_led: bool
heartbeat_led: bool
power_led: bool
@dataclass(frozen=True, slots=True)
class YellowOptions(Options):
"""YellowOptions model."""
disk_led: bool | None = None
heartbeat_led: bool | None = None
power_led: bool | None = None
@dataclass(frozen=True, slots=True)
class SwapInfo(ResponseData):
"""SwapInfo model."""
swap_size: str | None
swappiness: int | None
@dataclass(frozen=True, slots=True)
class SwapOptions(Options):
"""SwapOptions model."""
swap_size: str | None = None
swappiness: int | None = None
|