diff --git a/hassio_api/README.md b/hassio_api/README.md index 1983176b1..057a76ec1 100644 --- a/hassio_api/README.md +++ b/hassio_api/README.md @@ -23,15 +23,20 @@ Communicate over unix socket with a host daemon. - Answer ``` -[{}] -OK|ERROR +{}|OK|ERROR ``` ## HassIO REST API Interface for HomeAssistant to controll things from supervisor. -### host +### HassIO + +- `/host/update` +Payload: {'version': '0.XX'} +If version is None it read last version from server. + +### Host - `/host/network` Payload: {'hostname': '', 'mode': 'dhcp|fixed', 'ssid': '', 'ip': '', 'netmask': '', 'gateway': ''} @@ -41,30 +46,33 @@ Payload: {'hostname': '', 'mode': 'dhcp|fixed', 'ssid': '', 'ip': '', 'netmask': - `/host/info` +- `/host/update` +On some device we support host upates. Like ResinOS. -### /homeassistant/info +### HomeAssistant -### /homeassistant/update -- Payload: {'version': '0.XX.Y'} +- `/homeassistant/info` + +- `/homeassistant/update` +Payload: {'version': '0.XX.Y'} If version is None it read last version from server. -## REST API addons +### REST API addons -### /addons/info +- `/addons/info` -### /addons/reload +- `/addons/reload` -### /addons/{addon}/start -- Payload: {'options': {}} +- `/addons/{addon}/start` +Payload: {'options': {}} -### /addons/{addon}/stop +- `/addons/{addon}/stop` -### /addons/{addon}/install -- Payload: {'version': 'x.x'} +- `/addons/{addon}/install` +Payload: {'version': 'x.x'} -### /addons/{addon}/uninstall - -### /addons/{addon}/update -- Payload: {'version': 'x.x'} +- `/addons/{addon}/uninstall` +- `/addons/{addon}/update` +Payload: {'version': 'x.x'} If version is None it read last version from server. diff --git a/hassio_api/hassio/bootstrap.py b/hassio_api/hassio/bootstrap.py index 6cb5ed47f..1583ee214 100644 --- a/hassio_api/hassio/bootstrap.py +++ b/hassio_api/hassio/bootstrap.py @@ -5,7 +5,7 @@ import os from colorlog import ColoredFormatter -from .const import FILE_HASSIO_ADDONS +from .const import FILE_HASSIO_ADDONS, SOCKET_DOCKER from .config import CoreConfig _LOGGER = logging.getLogger(__name__) @@ -61,7 +61,7 @@ def initialize_logging(): def check_environment(): """Check if all environment are exists.""" - for key in ('SUPERVISOR_SHARE', 'SUPERVISOR_NAME', 'DOCKER_SOCKET', + for key in ('SUPERVISOR_SHARE', 'SUPERVISOR_NAME', 'HOMEASSISTANT_REPOSITORY'): try: os.environ[key] @@ -69,7 +69,7 @@ def check_environment(): _LOGGER.fatal("Can't find %s in env!", key) return False - if not os.path.isfile(os.environ['DOCKER_SOCKET']): + if not os.path.isfile(SOCKET_DOCKER): _LOGGER.fatal("Can't find docker socket!") return False diff --git a/hassio_api/hassio/config.py b/hassio_api/hassio/config.py index fbc4ae14d..cd42d5b4e 100644 --- a/hassio_api/hassio/config.py +++ b/hassio_api/hassio/config.py @@ -4,9 +4,9 @@ import logging import os from .const import ( - FILE_HASSIO_CONFIG, CONF_SUPERVISOR_TAG, CONF_SUPERVISOR_IMAGE, - CONF_HOMEASSISTANT_TAG, CONF_HOMEASSISTANT_IMAGE, HOMEASSISTANT_SSL, - HOMEASSISTANT_CONFIG, HASSIO_SHARE_EXT, HASSIO_SHARE_INT) + FILE_HASSIO_CONFIG, HOMEASSISTANT_TAG, HOMEASSISTANT_IMAGE, + HOMEASSISTANT_SSL, HOMEASSISTANT_CONFIG, HASSIO_SHARE_EXT, + HASSIO_SHARE_INT) _LOGGER = logging.getLogger(__name__) @@ -29,9 +29,8 @@ class CoreConfig(object): if not self._data: self._data.update({ - CONF_HOMEASSISTANT_IMAGE: - os.environ['HOMEASSISTANT_REPOSITORY'], - CONF_HOMEASSISTANT_TAG: '', + HOMEASSISTANT_IMAGE: os.environ['HOMEASSISTANT_REPOSITORY'], + HOMEASSISTANT_TAG: '', }) def save(self): @@ -45,17 +44,17 @@ class CoreConfig(object): @property def homeassistant_image(self): """Return docker homeassistant repository.""" - return self._data.get(CONF_HOMEASSISTANT_IMAGE) + return self._data.get(HOMEASSISTANT_IMAGE) @property def homeassistant_tag(self): """Return docker homeassistant tag.""" - return self._data.get(CONF_HOMEASSISTANT_TAG) + return self._data.get(HOMEASSISTANT_TAG) @homeassistant_tag.setter def homeassistant_tag(self, value): """Set docker homeassistant tag.""" - self._data[CONF_HOMEASSISTANT_TAG] = value + self._data[HOMEASSISTANT_TAG] = value self.save() @property diff --git a/hassio_api/hassio/const.py b/hassio_api/hassio/const.py index 898679263..97239ae84 100644 --- a/hassio_api/hassio/const.py +++ b/hassio_api/hassio/const.py @@ -1,7 +1,7 @@ """Const file for HassIO.""" import os -URL_SUPERVISOR_VERSION = \ +URL_HASSIO_VERSION = \ 'https://raw.githubusercontent.com/pvizeli/hassio/master/version.json' URL_ADDONS_REPO = 'https://github.com/pvizeli/hassio-addons' @@ -15,12 +15,13 @@ HASSIO_SHARE_EXT = os.environ['SUPERVISOR_SHARE'] HASSIO_SHARE_INT = '/data' HASSIO_DOCKER = os.environ['SUPERVISOR_NAME'] +SOCKET_DOCKER = "/var/run/docker.sock" +SOCKET_HC = "/var/run/hassio-hc.sock" + HOMEASSISTANT_CONFIG = "{}/homeassistant_config" HOMEASSISTANT_SSL = "{}/homeassistant_ssl" HTTP_PORT = 9123 -CONF_SUPERVISOR_IMAGE = 'supervisor_image' -CONF_SUPERVISOR_TAG = 'supervisor_tag' -CONF_HOMEASSISTANT_IMAGE = 'homeassistant_image' -CONF_HOMEASSISTANT_TAG = 'homeassistant_tag' +HOMEASSISTANT_IMAGE = 'homeassistant_image' +HOMEASSISTANT_TAG = 'homeassistant_tag' diff --git a/hassio_api/hassio/core.py b/hassio_api/hassio/core.py index 5f695aeaf..c81a6370a 100644 --- a/hassio_api/hassio/core.py +++ b/hassio_api/hassio/core.py @@ -5,9 +5,8 @@ import logging import aiohttp import docker -import hassio.bootstrap as bootstrap -import hassio.tools as tools -from .const import CONF_HOMEASSISTANT_TAG +from . import bootstrap, tools +from .const import HOMEASSISTANT_TAG, SOCKET_DOCKER from .docker.homeassistant import DockerHomeAssistant from .docker.supervisor import DockerSupervisor @@ -18,7 +17,7 @@ async def run_hassio(loop): """Start HassIO.""" websession = aiohttp.ClientSession(loop=loop) dock = docker.DockerClient( - base_url='unix://var/run/docker.sock', version='auto') + base_url="unix:/{}".format(SOCKET_DOCKER), version='auto') # init system config = bootstrap.initialize_system_data() @@ -42,12 +41,12 @@ async def run_hassio(loop): while True: current = await tools.fetch_current_versions(websession) if current and CONF_HOMEASSISTANT_TAG in current: - if await docker_hass.install(current[CONF_HOMEASSISTANT_TAG]): + if await docker_hass.install(current[HOMEASSISTANT_TAG]): break _LOGGER.warning("Can't fetch info from github. Retry in 60.") await asyncio.sleep(60, loop=loop) - config.homeassistant_tag = current[CONF_HOMEASSISTANT_TAG] + config.homeassistant_tag = current[HOMEASSISTANT_TAG] else: _LOGGER.info("HomeAssistant docker is exists.") diff --git a/hassio_api/hassio/host_controll.py b/hassio_api/hassio/host_controll.py new file mode 100644 index 000000000..a5edcbf63 --- /dev/null +++ b/hassio_api/hassio/host_controll.py @@ -0,0 +1,13 @@ +"""Host controll for HassIO.""" +import asyncio +import logging + +from .const import SOCKET_HC + +_LOGGER = logging.getLogger(__name__) + +class HostControll(object): + """Manage host function.""" + + def __init__(self, loop): + """Initialize host controll.""" diff --git a/hassio_api/hassio/tools.py b/hassio_api/hassio/tools.py index ff314d70f..b44ffaf59 100644 --- a/hassio_api/hassio/tools.py +++ b/hassio_api/hassio/tools.py @@ -4,7 +4,7 @@ import re import async_timeout -from .const import URL_SUPERVISOR_VERSION +from .const import URL_HASSIO_VERSION _LOGGER = logging.getLogger(__name__) @@ -16,7 +16,7 @@ async def fetch_current_versions(websession): """Fetch current versions from github.""" try: with async_timeout.timeout(10, loop=websession.loop): - async with websession.get(URL_SUPERVISOR_VERSION) as request: + async with websession.get(URL_HASSIO_VERSION) as request: return await request.json() except Exception as err: # pylint: disable=broad-except diff --git a/meta-hassio/recipes-containers/docker-disk/docker-resin-supervisor-disk/start-resin-supervisor b/meta-hassio/recipes-containers/docker-disk/docker-resin-supervisor-disk/start-resin-supervisor index ea3b35c16..151bd7334 100644 --- a/meta-hassio/recipes-containers/docker-disk/docker-resin-supervisor-disk/start-resin-supervisor +++ b/meta-hassio/recipes-containers/docker-disk/docker-resin-supervisor-disk/start-resin-supervisor @@ -13,8 +13,6 @@ runSupervisor() { -v /var/run/hassio-hc.sock:/var/run/hassio-hc.sock \ -v /resin-data:/data \ -v /var/log/supervisor-log:/var/log \ - -e DOCKER_SOCKET=/var/run/docker.sock \ - -e HASSIO_HC_SOCKET=/var/run/hassio-hc.sock \ -e SUPERVISOR_SHARE=/resin-data \ -e SUPERVISOR_NAME=resin_supervisor \ -e HOMEASSISTANT_REPOSITORY=${HOMEASSISTANT_REPOSITORY} \ diff --git a/supervisor/README.md b/supervisor/README.md index 2660d799d..6fbc08148 100644 --- a/supervisor/README.md +++ b/supervisor/README.md @@ -13,8 +13,6 @@ docker run --privileged --name resin_supervisor \ -v /var/run/hassio-hc.sock:/var/run/hassio-hc.sock \ -v /resin-data:/data \ -v /var/log/supervisor-log:/var/log \ - -e DOCKER_SOCKET=/var/run/docker.sock \ - -e HASSIO_HC_SOCKET=/var/run/hassio-hc.sock \ -e SUPERVISOR_SHARE=/resin-data \ -e SUPERVISOR_NAME=resin_supervisor \ -e HOMEASSISTANT_REPOSITORY=${HOMEASSISTANT_REPOSITORY} \