From b1e768f69e8ef467853901f8569bfcd43d089791 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 20 Jan 2020 10:17:14 +0100 Subject: [PATCH] Add advanced property for HA simple-mode (#1439) --- API.md | 2 ++ hassio/addons/model.py | 6 ++++++ hassio/addons/validate.py | 4 +++- hassio/api/addons.py | 3 +++ hassio/const.py | 1 + 5 files changed, 15 insertions(+), 1 deletion(-) diff --git a/API.md b/API.md index 0c119b5f6..dfc73130d 100644 --- a/API.md +++ b/API.md @@ -456,6 +456,7 @@ Get all available addons. "name": "xy bla", "slug": "xy", "description": "description", + "advanced": "bool", "repository": "core|local|REP_ID", "version": "LAST_VERSION", "installed": "none|INSTALL_VERSION", @@ -494,6 +495,7 @@ Get all available addons. "url": "null|url of addon", "detached": "bool", "available": "bool", + "advanced": "bool", "arch": ["armhf", "aarch64", "i386", "amd64"], "machine": "[raspberrypi2, tinker]", "homeassistant": "null|min Home Assistant version", diff --git a/hassio/addons/model.py b/hassio/addons/model.py index faf8a8c17..6c99740fb 100644 --- a/hassio/addons/model.py +++ b/hassio/addons/model.py @@ -6,6 +6,7 @@ from packaging import version as pkg_version import voluptuous as vol from ..const import ( + ATTR_ADVANCED, ATTR_APPARMOR, ATTR_ARCH, ATTR_AUDIO, @@ -189,6 +190,11 @@ class AddonModel(CoreSysAttributes): """Return startup type of add-on.""" return self.data.get(ATTR_STARTUP) + @property + def advanced(self) -> bool: + """Return advanced mode of add-on.""" + return self.data[ATTR_ADVANCED] + @property def services_role(self) -> Dict[str, str]: """Return dict of services with rights.""" diff --git a/hassio/addons/validate.py b/hassio/addons/validate.py index 81e9f1beb..0f3e112b6 100644 --- a/hassio/addons/validate.py +++ b/hassio/addons/validate.py @@ -10,6 +10,7 @@ import voluptuous as vol from ..const import ( ARCH_ALL, ATTR_ACCESS_TOKEN, + ATTR_ADVANCED, ATTR_APPARMOR, ATTR_ARCH, ATTR_ARGS, @@ -90,9 +91,9 @@ from ..const import ( from ..coresys import CoreSys from ..discovery.validate import valid_discovery_service from ..validate import ( - alsa_device, DOCKER_PORTS, DOCKER_PORTS_DESCRIPTION, + alsa_device, network_port, token, uuid_match, @@ -175,6 +176,7 @@ SCHEMA_ADDON_CONFIG = vol.Schema( vol.Optional(ATTR_URL): vol.Url(), vol.Required(ATTR_STARTUP): vol.All(_simple_startup, vol.In(STARTUP_ALL)), vol.Required(ATTR_BOOT): vol.In([BOOT_AUTO, BOOT_MANUAL]), + vol.Optional(ATTR_ADVANCED, default=False): vol.Boolean(), vol.Optional(ATTR_PORTS): DOCKER_PORTS, vol.Optional(ATTR_PORTS_DESCRIPTION): DOCKER_PORTS_DESCRIPTION, vol.Optional(ATTR_WEBUI): vol.Match( diff --git a/hassio/api/addons.py b/hassio/api/addons.py index 01d0ead33..7d92c9f2e 100644 --- a/hassio/api/addons.py +++ b/hassio/api/addons.py @@ -10,6 +10,7 @@ from ..addons import AnyAddon from ..addons.utils import rating_security from ..const import ( ATTR_ADDONS, + ATTR_ADVANCED, ATTR_APPARMOR, ATTR_ARCH, ATTR_AUDIO, @@ -146,6 +147,7 @@ class APIAddons(CoreSysAttributes): ATTR_NAME: addon.name, ATTR_SLUG: addon.slug, ATTR_DESCRIPTON: addon.description, + ATTR_ADVANCED: addon.advanced, ATTR_VERSION: addon.latest_version, ATTR_INSTALLED: addon.version if addon.is_installed else None, ATTR_AVAILABLE: addon.available, @@ -189,6 +191,7 @@ class APIAddons(CoreSysAttributes): ATTR_DNS: addon.dns, ATTR_DESCRIPTON: addon.description, ATTR_LONG_DESCRIPTION: addon.long_description, + ATTR_ADVANCED: addon.advanced, ATTR_AUTO_UPDATE: None, ATTR_REPOSITORY: addon.repository, ATTR_VERSION: None, diff --git a/hassio/const.py b/hassio/const.py index ab0ac20c5..5e999adbe 100644 --- a/hassio/const.py +++ b/hassio/const.py @@ -223,6 +223,7 @@ ATTR_UDEV = "udev" ATTR_VALUE = "value" ATTR_SNAPSHOT_EXCLUDE = "snapshot_exclude" ATTR_DOCUMENTATION = "documentation" +ATTR_ADVANCED = "advanced" PROVIDE_SERVICE = "provide" NEED_SERVICE = "need"