From cda3184a5537f966b9f9f68b4a72c12b57a12943 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 24 Oct 2017 17:23:33 +0200 Subject: [PATCH] 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."""