mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-12-04 15:08:12 +00:00
Implement Supervisor API for home-assistant/os-agent#238, adding possibility to schedule migration either to Containerd overlayfs driver, or migration to the graph overlay2 driver, once the device is rebooted the next time. While it's technically in the DBus OS interface, in Supervisor's abstraction it makes more sense to put it under `/docker` endpoints.
43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
"""Mock of OS Agent System dbus service."""
|
|
|
|
from dbus_fast import DBusError, ErrorType
|
|
|
|
from .base import DBusServiceMock, dbus_method
|
|
|
|
BUS_NAME = "io.hass.os"
|
|
|
|
|
|
def setup(object_path: str | None = None) -> DBusServiceMock:
|
|
"""Create dbus mock object."""
|
|
return System()
|
|
|
|
|
|
class System(DBusServiceMock):
|
|
"""System mock.
|
|
|
|
gdbus introspect --system --dest io.hass.os --object-path /io/hass/os/System
|
|
"""
|
|
|
|
object_path = "/io/hass/os/System"
|
|
interface = "io.hass.os.System"
|
|
response_schedule_wipe_device: bool | DBusError = True
|
|
response_migrate_docker_storage_driver: None | DBusError = None
|
|
|
|
@dbus_method()
|
|
def ScheduleWipeDevice(self) -> "b":
|
|
"""Schedule wipe device."""
|
|
if isinstance(self.response_schedule_wipe_device, DBusError):
|
|
raise self.response_schedule_wipe_device # pylint: disable=raising-bad-type
|
|
return self.response_schedule_wipe_device
|
|
|
|
@dbus_method()
|
|
def MigrateDockerStorageDriver(self, backend: "s") -> None:
|
|
"""Migrate Docker storage driver."""
|
|
if isinstance(self.response_migrate_docker_storage_driver, DBusError):
|
|
raise self.response_migrate_docker_storage_driver # pylint: disable=raising-bad-type
|
|
if backend not in ("overlayfs", "overlay2"):
|
|
raise DBusError(
|
|
ErrorType.FAILED,
|
|
f"unsupported driver: {backend} (only 'overlayfs' and 'overlay2' are supported)",
|
|
)
|