File: host.py

package info (click to toggle)
python-aiohasupervisor 0.3.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 932 kB
  • sloc: python: 4,666; sh: 37; makefile: 3
file content (109 lines) | stat: -rw-r--r-- 2,470 bytes parent folder | download
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
"""Models for host APIs."""

from dataclasses import dataclass
from datetime import datetime
from enum import StrEnum

from .base import Request, ResponseData
from .root import HostFeature

# --- ENUMS ----


class ServiceState(StrEnum):
    """ServiceState type.

    The service state is determined by systemd, not supervisor. The list below
    is pulled from `systemctl --state=help`. It may be incomplete and it may
    change based on the host. Therefore within a list of services there may be
    some with a state not in this list parsed as string. If you find this
    please create an issue or pr to get the state added.
    """

    ACTIVE = "active"
    RELOADING = "reloading"
    INACTIVE = "inactive"
    FAILED = "failed"
    ACTIVATING = "activating"
    DEACTIVATING = "deactivating"
    MAINTENANCE = "maintenance"


# --- OBJECTS ----


@dataclass(frozen=True, slots=True)
class HostInfo(ResponseData):
    """HostInfo model."""

    agent_version: str | None
    apparmor_version: str | None
    chassis: str | None
    virtualization: str | None
    cpe: str | None
    deployment: str | None
    disk_free: float
    disk_total: float
    disk_used: float
    disk_life_time: float | None
    features: list[HostFeature]
    hostname: str | None
    llmnr_hostname: str | None
    kernel: str | None
    operating_system: str | None
    timezone: str | None
    dt_utc: datetime | None
    dt_synchronized: bool | None
    use_ntp: bool | None
    startup_time: float | None
    boot_timestamp: int | None
    broadcast_llmnr: bool | None
    broadcast_mdns: bool | None


@dataclass(frozen=True, slots=True)
class ShutdownOptions(Request):
    """ShutdownOptions model."""

    force: bool


@dataclass(frozen=True, slots=True)
class RebootOptions(Request):
    """RebootOptions model."""

    force: bool


@dataclass(frozen=True, slots=True)
class HostOptions(Request):
    """HostOptions model."""

    hostname: str


@dataclass(frozen=True, slots=True)
class Service(ResponseData):
    """Service model."""

    name: str
    description: str
    state: ServiceState | str


@dataclass(frozen=True, slots=True)
class ServiceList(ResponseData):
    """ServiceList model."""

    services: list[Service]


@dataclass(frozen=True, slots=True)
class DiskUsage(ResponseData):
    """DiskUsage model."""

    id: str
    used_bytes: int
    label: str | None = None
    total_bytes: int | None = None
    children: list["DiskUsage"] | None = None