From f6375f1bd6ff2ea99b108e0abec7bbdf4dec4106 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 25 Oct 2017 12:12:13 +0200 Subject: [PATCH 1/6] Pump version to 0.74 --- hassio/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hassio/const.py b/hassio/const.py index 7cd8506e4..cd0efac06 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.73' +HASSIO_VERSION = '0.74' URL_HASSIO_VERSION = ('https://raw.githubusercontent.com/home-assistant/' 'hassio/{}/version.json') From 13498afa970cd165840070edb5bede831dc02e62 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 4 Nov 2017 11:33:55 +0100 Subject: [PATCH 2/6] Update Home-Assistant to 0.57 --- version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.json b/version.json index 58afe05da..87368873b 100644 --- a/version.json +++ b/version.json @@ -1,6 +1,6 @@ { "hassio": "0.73", - "homeassistant": "0.56.2", + "homeassistant": "0.57", "resinos": "1.1", "resinhup": "0.3", "generic": "0.3", From efbc7b17a115cee27c432dea01d70d9b344cc38b Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 4 Nov 2017 21:52:41 +0100 Subject: [PATCH 3/6] Use init system for add-ons (#237) * Use init system for add-ons * Update const.py * Update validate.py * Update addon.py * Update addon.py * remove options * remove options p2 * remove options p3 * Update addon.py --- hassio/addons/validate.py | 2 +- hassio/const.py | 2 +- hassio/dock/addon.py | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/hassio/addons/validate.py b/hassio/addons/validate.py index 3e36161cc..07e3f91b4 100644 --- a/hassio/addons/validate.py +++ b/hassio/addons/validate.py @@ -116,7 +116,7 @@ SCHEMA_ADDON_CONFIG = vol.Schema({ }), False), vol.Optional(ATTR_IMAGE): vol.Match(r"^[\w{}]+/[\-\w{}]+$"), vol.Optional(ATTR_TIMEOUT, default=10): - vol.All(vol.Coerce(int), vol.Range(min=10, max=120)) + vol.All(vol.Coerce(int), vol.Range(min=10, max=120)), }, extra=vol.REMOVE_EXTRA) diff --git a/hassio/const.py b/hassio/const.py index cd0efac06..c713f0143 100644 --- a/hassio/const.py +++ b/hassio/const.py @@ -127,7 +127,7 @@ ATTR_SECURITY = 'security' ATTR_BUILD_FROM = 'build_from' ATTR_SQUASH = 'squash' ATTR_GPIO = 'gpio' -ATTR_LEGACY = 'ATTR_LEGACY' +ATTR_LEGACY = 'legacy' ATTR_ADDONS_CUSTOM_LIST = 'addons_custom_list' STARTUP_INITIALIZE = 'initialize' diff --git a/hassio/dock/addon.py b/hassio/dock/addon.py index e41d991e9..34ecb3b3f 100644 --- a/hassio/dock/addon.py +++ b/hassio/dock/addon.py @@ -188,6 +188,7 @@ class DockerAddon(DockerInterface): name=self.name, hostname=self.hostname, detach=True, + init=True, stdin_open=self.addon.with_stdin, network_mode=self.network_mode, ports=self.ports, From 70104a9280995610c7abc77e34b67feeb878245e Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 5 Nov 2017 00:07:49 +0100 Subject: [PATCH 4/6] Set api token for access requirements (#238) * Set api token for access requirements * fix uuid * make robust * fix names --- hassio/addons/addon.py | 8 +++++++- hassio/addons/validate.py | 9 ++++++--- hassio/const.py | 1 + hassio/dock/addon.py | 4 ++++ 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/hassio/addons/addon.py b/hassio/addons/addon.py index 87b1ebeca..d232c8ddb 100644 --- a/hassio/addons/addon.py +++ b/hassio/addons/addon.py @@ -17,7 +17,7 @@ from ..const import ( ATTR_NAME, ATTR_VERSION, ATTR_SLUG, ATTR_DESCRIPTON, ATTR_BOOT, ATTR_MAP, ATTR_OPTIONS, ATTR_PORTS, ATTR_SCHEMA, ATTR_IMAGE, ATTR_REPOSITORY, ATTR_URL, ATTR_ARCH, ATTR_LOCATON, ATTR_DEVICES, ATTR_ENVIRONMENT, - ATTR_HOST_NETWORK, ATTR_TMPFS, ATTR_PRIVILEGED, ATTR_STARTUP, + ATTR_HOST_NETWORK, ATTR_TMPFS, ATTR_PRIVILEGED, ATTR_STARTUP, ATTR_UUID, 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, @@ -153,6 +153,12 @@ class Addon(object): """Return timeout of addon for docker stop.""" return self._mesh[ATTR_TIMEOUT] + @property + def api_token(self): + """Return a API token for this add-on.""" + if self.is_installed: + return self.data.user[self._id][ATTR_UUID] + @property def description(self): """Return description of addon.""" diff --git a/hassio/addons/validate.py b/hassio/addons/validate.py index 07e3f91b4..4d82b04e9 100644 --- a/hassio/addons/validate.py +++ b/hassio/addons/validate.py @@ -1,6 +1,7 @@ """Validate addons options schema.""" import logging import re +import uuid import voluptuous as vol @@ -12,7 +13,7 @@ from ..const import ( ATTR_ARCH, ATTR_DEVICES, ATTR_ENVIRONMENT, ATTR_HOST_NETWORK, ARCH_ARMHF, ARCH_AARCH64, ARCH_AMD64, ARCH_I386, ATTR_TMPFS, ATTR_PRIVILEGED, ATTR_USER, ATTR_STATE, ATTR_SYSTEM, STATE_STARTED, STATE_STOPPED, - ATTR_LOCATON, ATTR_REPOSITORY, ATTR_TIMEOUT, ATTR_NETWORK, + ATTR_LOCATON, ATTR_REPOSITORY, ATTR_TIMEOUT, ATTR_NETWORK, ATTR_UUID, 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_LEGACY) @@ -137,12 +138,14 @@ SCHEMA_BUILD_CONFIG = vol.Schema({ vol.Optional(ATTR_ARGS, default={}): vol.Schema({ vol.Coerce(str): vol.Coerce(str) }), -}) +}, extra=vol.REMOVE_EXTRA) # pylint: disable=no-value-for-parameter SCHEMA_ADDON_USER = vol.Schema({ vol.Required(ATTR_VERSION): vol.Coerce(str), + vol.Optional(ATTR_UUID, default=lambda: uuid.uuid4().hex): + vol.Match(r"^[0-9a-f]{32}$"), vol.Optional(ATTR_OPTIONS, default={}): dict, vol.Optional(ATTR_AUTO_UPDATE, default=False): vol.Boolean(), vol.Optional(ATTR_BOOT): @@ -150,7 +153,7 @@ SCHEMA_ADDON_USER = vol.Schema({ vol.Optional(ATTR_NETWORK): DOCKER_PORTS, vol.Optional(ATTR_AUDIO_OUTPUT): ALSA_CHANNEL, vol.Optional(ATTR_AUDIO_INPUT): ALSA_CHANNEL, -}) +}, extra=vol.REMOVE_EXTRA) SCHEMA_ADDON_SYSTEM = SCHEMA_ADDON_CONFIG.extend({ diff --git a/hassio/const.py b/hassio/const.py index c713f0143..10bfa3413 100644 --- a/hassio/const.py +++ b/hassio/const.py @@ -110,6 +110,7 @@ ATTR_HOMEASSISTANT = 'homeassistant' ATTR_HASSIO = 'hassio' ATTR_HASSIO_API = 'hassio_api' ATTR_HOMEASSISTANT_API = 'homeassistant_api' +ATTR_UUID = 'uuid' ATTR_FOLDERS = 'folders' ATTR_SIZE = 'size' ATTR_TYPE = 'type' diff --git a/hassio/dock/addon.py b/hassio/dock/addon.py index 34ecb3b3f..8b95bb63f 100644 --- a/hassio/dock/addon.py +++ b/hassio/dock/addon.py @@ -60,6 +60,10 @@ class DockerAddon(DockerInterface): 'ALSA_INPUT': self.addon.audio_input, }) + # Set api token if any API access is needed + if self.addon.access_hassio_api or self.addon.access_homeassistant_api: + addon_env['API_TOKEN'] = self.addon.api_token + return { **addon_env, 'TZ': self.config.timezone, From 3a5a4e4c2755fc2779e46976f35f3669c697a8df Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 5 Nov 2017 00:12:49 +0100 Subject: [PATCH 5/6] Update hass.io to 0.74 --- version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.json b/version.json index 87368873b..8dba8c4f0 100644 --- a/version.json +++ b/version.json @@ -1,5 +1,5 @@ { - "hassio": "0.73", + "hassio": "0.74", "homeassistant": "0.57", "resinos": "1.1", "resinhup": "0.3", From 4b7201dc59c392ee085d92095fc8d75ddb78f1e3 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 5 Nov 2017 00:13:11 +0100 Subject: [PATCH 6/6] Update Home-Assistant to 0.57.1 --- version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.json b/version.json index 8dba8c4f0..07dd36bdf 100644 --- a/version.json +++ b/version.json @@ -1,6 +1,6 @@ { "hassio": "0.74", - "homeassistant": "0.57", + "homeassistant": "0.57.1", "resinos": "1.1", "resinhup": "0.3", "generic": "0.3",