From 7e0525749e667e3e2aa160f4bcc4f7005e1deb3b Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 17 Oct 2017 22:49:35 +0200 Subject: [PATCH 1/9] Pump version to 0.73 --- hassio/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hassio/const.py b/hassio/const.py index 891e8df13..0cb39a648 100644 --- a/hassio/const.py +++ b/hassio/const.py @@ -2,7 +2,7 @@ from pathlib import Path from ipaddress import ip_network -HASSIO_VERSION = '0.72' +HASSIO_VERSION = '0.73' URL_HASSIO_VERSION = ('https://raw.githubusercontent.com/home-assistant/' 'hassio/{}/version.json') From 1a4542fc4e6fb3a82c72783720b291f477599661 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 22 Oct 2017 10:34:31 +0200 Subject: [PATCH 2/9] Update Home-Assistant to 0.56 --- version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.json b/version.json index b26dd9aa8..c99b2f433 100644 --- a/version.json +++ b/version.json @@ -1,6 +1,6 @@ { "hassio": "0.72", - "homeassistant": "0.55.2", + "homeassistant": "0.56", "resinos": "1.1", "resinhup": "0.3", "generic": "0.3", From f3f6771534c69184a7ff2ffb0544d9ed79748177 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 22 Oct 2017 13:53:41 +0200 Subject: [PATCH 3/9] Add a static entry for hassio api (#230) --- hassio/dock/addon.py | 1 + 1 file changed, 1 insertion(+) diff --git a/hassio/dock/addon.py b/hassio/dock/addon.py index 2c63fe817..80e580309 100644 --- a/hassio/dock/addon.py +++ b/hassio/dock/addon.py @@ -89,6 +89,7 @@ class DockerAddon(DockerInterface): """Return hosts mapping.""" return { 'homeassistant': self.docker.network.gateway, + 'hassio': self.docker.network.supervisor, } @property From 8c82c467d4adf26a044ace407c80d5d295e05576 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 22 Oct 2017 14:05:45 +0200 Subject: [PATCH 4/9] Fix aiohttp 2.3.1 (#231) --- hassio/api/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hassio/api/__init__.py b/hassio/api/__init__.py index 449974ef7..8888b7de4 100644 --- a/hassio/api/__init__.py +++ b/hassio/api/__init__.py @@ -166,5 +166,5 @@ class RestAPI(object): await self.webapp.shutdown() if self._handler: - await self._handler.finish_connections(60) + await self._handler.shutdown(60) await self.webapp.cleanup() From 2e4751ed7d68ade370695c88f94df25d21fbf4fe Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 23 Oct 2017 00:16:38 +0200 Subject: [PATCH 5/9] Update version.json --- version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.json b/version.json index c99b2f433..511e4d34d 100644 --- a/version.json +++ b/version.json @@ -1,6 +1,6 @@ { "hassio": "0.72", - "homeassistant": "0.56", + "homeassistant": "0.56.1", "resinos": "1.1", "resinhup": "0.3", "generic": "0.3", From 2e169dcb4235147a6944655aae8ba975bb85d526 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 24 Oct 2017 00:08:57 +0200 Subject: [PATCH 6/9] Update Home-Assistant to 0.56.2 --- version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.json b/version.json index 511e4d34d..dbd19f0ba 100644 --- a/version.json +++ b/version.json @@ -1,6 +1,6 @@ { "hassio": "0.72", - "homeassistant": "0.56.1", + "homeassistant": "0.56.2", "resinos": "1.1", "resinhup": "0.3", "generic": "0.3", From cda3184a5537f966b9f9f68b4a72c12b57a12943 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 24 Oct 2017 17:23:33 +0200 Subject: [PATCH 7/9] Add support for legacy mode (#232) * Add support for legacy mode * Update const.py * add legacy mode * Update addon.py * Update addon.py * Update addon.py * Update addon.py --- hassio/addons/addon.py | 7 ++++++- hassio/addons/validate.py | 3 ++- hassio/const.py | 1 + hassio/dock/addon.py | 15 +++++++++++++++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/hassio/addons/addon.py b/hassio/addons/addon.py index 2a5ed4438..87b1ebeca 100644 --- a/hassio/addons/addon.py +++ b/hassio/addons/addon.py @@ -21,7 +21,7 @@ from ..const import ( STATE_STARTED, STATE_STOPPED, STATE_NONE, ATTR_USER, ATTR_SYSTEM, ATTR_STATE, ATTR_TIMEOUT, ATTR_AUTO_UPDATE, ATTR_NETWORK, ATTR_WEBUI, ATTR_HASSIO_API, ATTR_AUDIO, ATTR_AUDIO_OUTPUT, ATTR_AUDIO_INPUT, - ATTR_GPIO, ATTR_HOMEASSISTANT_API, ATTR_STDIN) + ATTR_GPIO, ATTR_HOMEASSISTANT_API, ATTR_STDIN, ATTR_LEGACY) from .util import check_installed from ..dock.addon import DockerAddon from ..tools import write_json_file, read_json_file @@ -257,6 +257,11 @@ class Addon(object): """Return list of privilege.""" return self._mesh.get(ATTR_PRIVILEGED) + @property + def legacy(self): + """Return if the add-on don't support hass labels.""" + return self._mesh.get(ATTR_LEGACY) + @property def access_hassio_api(self): """Return True if the add-on access to hassio api.""" diff --git a/hassio/addons/validate.py b/hassio/addons/validate.py index 8cd79a978..3e36161cc 100644 --- a/hassio/addons/validate.py +++ b/hassio/addons/validate.py @@ -15,7 +15,7 @@ from ..const import ( ATTR_LOCATON, ATTR_REPOSITORY, ATTR_TIMEOUT, ATTR_NETWORK, ATTR_AUTO_UPDATE, ATTR_WEBUI, ATTR_AUDIO, ATTR_AUDIO_INPUT, ATTR_AUDIO_OUTPUT, ATTR_HASSIO_API, ATTR_BUILD_FROM, ATTR_SQUASH, - ATTR_ARGS, ATTR_GPIO, ATTR_HOMEASSISTANT_API, ATTR_STDIN) + ATTR_ARGS, ATTR_GPIO, ATTR_HOMEASSISTANT_API, ATTR_STDIN, ATTR_LEGACY) from ..validate import NETWORK_PORT, DOCKER_PORTS, ALSA_CHANNEL _LOGGER = logging.getLogger(__name__) @@ -102,6 +102,7 @@ SCHEMA_ADDON_CONFIG = vol.Schema({ vol.Optional(ATTR_HASSIO_API, default=False): vol.Boolean(), vol.Optional(ATTR_HOMEASSISTANT_API, default=False): vol.Boolean(), vol.Optional(ATTR_STDIN, default=False): vol.Boolean(), + vol.Optional(ATTR_LEGACY, default=False): vol.Boolean(), vol.Required(ATTR_OPTIONS): dict, vol.Required(ATTR_SCHEMA): vol.Any(vol.Schema({ vol.Coerce(str): vol.Any(SCHEMA_ELEMENT, [ diff --git a/hassio/const.py b/hassio/const.py index 0cb39a648..7cd8506e4 100644 --- a/hassio/const.py +++ b/hassio/const.py @@ -127,6 +127,7 @@ ATTR_SECURITY = 'security' ATTR_BUILD_FROM = 'build_from' ATTR_SQUASH = 'squash' ATTR_GPIO = 'gpio' +ATTR_LEGACY = 'ATTR_LEGACY' ATTR_ADDONS_CUSTOM_LIST = 'addons_custom_list' STARTUP_INITIALIZE = 'initialize' diff --git a/hassio/dock/addon.py b/hassio/dock/addon.py index 80e580309..e41d991e9 100644 --- a/hassio/dock/addon.py +++ b/hassio/dock/addon.py @@ -25,6 +25,21 @@ class DockerAddon(DockerInterface): config, loop, api, image=addon.image, timeout=addon.timeout) self.addon = addon + def process_metadata(self, metadata, force=False): + """Use addon data instead meta data with legacy.""" + if not self.addon.legacy: + return super().process_metadata(metadata, force=force) + + # set meta data + if not self.version or force: + if force: # called on install/update/build + self.version = self.addon.last_version + else: + self.version = self.addon.version_installed + + if not self.arch: + self.arch = self.config.arch + @property def name(self): """Return name of docker container.""" From f591f67a2a3b1ddf8fed1d0e1e22171f558c8c5c Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 25 Oct 2017 11:50:00 +0200 Subject: [PATCH 8/9] Show hardware GPIO interface (#233) * Update hardware.py * Update host.py * Update API.md * Update API.md * fix lint --- API.md | 1 + hassio/api/host.py | 9 +++++---- hassio/hardware.py | 17 ++++++++++++++--- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/API.md b/API.md index 352c087eb..db9e103ec 100644 --- a/API.md +++ b/API.md @@ -243,6 +243,7 @@ Optional: "serial": ["/dev/xy"], "input": ["Input device name"], "disk": ["/dev/sdax"], + "gpio": ["gpiochip0", "gpiochip100"], "audio": { "CARD_ID": { "name": "xy", diff --git a/hassio/api/host.py b/hassio/api/host.py index 5815ebf76..5087e6837 100644 --- a/hassio/api/host.py +++ b/hassio/api/host.py @@ -8,7 +8,7 @@ from .util import api_process_hostcontrol, api_process, api_validate from ..const import ( ATTR_VERSION, ATTR_LAST_VERSION, ATTR_TYPE, ATTR_HOSTNAME, ATTR_FEATURES, ATTR_OS, ATTR_SERIAL, ATTR_INPUT, ATTR_DISK, ATTR_AUDIO, ATTR_AUDIO_INPUT, - ATTR_AUDIO_OUTPUT) + ATTR_AUDIO_OUTPUT, ATTR_GPIO) from ..validate import ALSA_CHANNEL _LOGGER = logging.getLogger(__name__) @@ -83,8 +83,9 @@ class APIHost(object): async def hardware(self, request): """Return local hardware infos.""" return { - ATTR_SERIAL: self.local_hw.serial_devices, - ATTR_INPUT: self.local_hw.input_devices, - ATTR_DISK: self.local_hw.disk_devices, + ATTR_SERIAL: list(self.local_hw.serial_devices), + ATTR_INPUT: list(self.local_hw.input_devices), + ATTR_DISK: list(self.local_hw.disk_devices), + ATTR_GPIO: list(self.local_hw.gpio_devices), ATTR_AUDIO: self.local_hw.audio_devices, } diff --git a/hassio/hardware.py b/hassio/hardware.py index eddfc6f39..09be04acc 100644 --- a/hassio/hardware.py +++ b/hassio/hardware.py @@ -19,6 +19,8 @@ RE_DEVICES = re.compile(r"\[.*(\d+)- (\d+).*\]: ([\w ]*)") PROC_STAT = Path("/proc/stat") RE_BOOT_TIME = re.compile(r"btime (\d+)") +GPIO_DEVICES = Path("/sys/class/gpio") + class Hardware(object): """Represent a interface to procfs, sysfs and udev.""" @@ -35,7 +37,7 @@ class Hardware(object): if 'ID_VENDOR' in device: dev_list.add(device.device_node) - return list(dev_list) + return dev_list @property def input_devices(self): @@ -45,7 +47,7 @@ class Hardware(object): if 'NAME' in device: dev_list.add(device['NAME'].replace('"', '')) - return list(dev_list) + return dev_list @property def disk_devices(self): @@ -55,7 +57,7 @@ class Hardware(object): if device.device_node.startswith('/dev/sd'): dev_list.add(device.device_node) - return list(dev_list) + return dev_list @property def audio_devices(self): @@ -90,6 +92,15 @@ class Hardware(object): return audio_list + @property + def gpio_devices(self): + """Return list of GPIO interface on device.""" + dev_list = set() + for interface in GPIO_DEVICES.glob("gpio*"): + dev_list.add(interface.name) + + return dev_list + @property def last_boot(self): """Return last boot time.""" From 63302b73b002245ce565a1d66adccaa7fc0567fd Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 25 Oct 2017 12:01:27 +0200 Subject: [PATCH 9/9] Update hass.io to 0.73 --- version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.json b/version.json index dbd19f0ba..58afe05da 100644 --- a/version.json +++ b/version.json @@ -1,5 +1,5 @@ { - "hassio": "0.72", + "hassio": "0.73", "homeassistant": "0.56.2", "resinos": "1.1", "resinhup": "0.3",