mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-06-23 10:26:30 +00:00

* Improve gdbus error handling * Fix logging type * Detect no dbus * Fix issue with complex * Update hassio/dbus/__init__.py Co-Authored-By: Franck Nijhof <frenck@frenck.nl> * Update hassio/dbus/hostname.py Co-Authored-By: Franck Nijhof <frenck@frenck.nl> * Update hassio/dbus/rauc.py Co-Authored-By: Franck Nijhof <frenck@frenck.nl> * Update hassio/dbus/systemd.py Co-Authored-By: Franck Nijhof <frenck@frenck.nl> * Fix black
58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
"""Init file for Hass.io HassOS RESTful API."""
|
|
import asyncio
|
|
import logging
|
|
from typing import Any, Awaitable, Dict
|
|
|
|
import voluptuous as vol
|
|
from aiohttp import web
|
|
|
|
from ..const import (
|
|
ATTR_BOARD,
|
|
ATTR_VERSION,
|
|
ATTR_VERSION_CLI,
|
|
ATTR_VERSION_CLI_LATEST,
|
|
ATTR_VERSION_LATEST,
|
|
)
|
|
from ..coresys import CoreSysAttributes
|
|
from .utils import api_process, api_validate
|
|
|
|
_LOGGER: logging.Logger = logging.getLogger(__name__)
|
|
|
|
SCHEMA_VERSION = vol.Schema({vol.Optional(ATTR_VERSION): vol.Coerce(str)})
|
|
|
|
|
|
class APIHassOS(CoreSysAttributes):
|
|
"""Handle RESTful API for HassOS functions."""
|
|
|
|
@api_process
|
|
async def info(self, request: web.Request) -> Dict[str, Any]:
|
|
"""Return HassOS information."""
|
|
return {
|
|
ATTR_VERSION: self.sys_hassos.version,
|
|
ATTR_VERSION_CLI: self.sys_hassos.version_cli,
|
|
ATTR_VERSION_LATEST: self.sys_hassos.version_latest,
|
|
ATTR_VERSION_CLI_LATEST: self.sys_hassos.version_cli_latest,
|
|
ATTR_BOARD: self.sys_hassos.board,
|
|
}
|
|
|
|
@api_process
|
|
async def update(self, request: web.Request) -> None:
|
|
"""Update HassOS."""
|
|
body = await api_validate(SCHEMA_VERSION, request)
|
|
version = body.get(ATTR_VERSION, self.sys_hassos.version_latest)
|
|
|
|
await asyncio.shield(self.sys_hassos.update(version))
|
|
|
|
@api_process
|
|
async def update_cli(self, request: web.Request) -> None:
|
|
"""Update HassOS CLI."""
|
|
body = await api_validate(SCHEMA_VERSION, request)
|
|
version = body.get(ATTR_VERSION, self.sys_hassos.version_cli_latest)
|
|
|
|
await asyncio.shield(self.sys_hassos.update_cli(version))
|
|
|
|
@api_process
|
|
def config_sync(self, request: web.Request) -> Awaitable[None]:
|
|
"""Trigger config reload on HassOS."""
|
|
return asyncio.shield(self.sys_hassos.config_sync())
|