From 934ca64a32fa9eec4561902843531e70ba50e97b Mon Sep 17 00:00:00 2001 From: pvizeli Date: Mon, 24 Jul 2017 10:30:51 +0200 Subject: [PATCH] Allow SYS_ADMIN, show devices and privileged on API --- API.md | 4 ++++ hassio/addons/validate.py | 7 ++++--- hassio/api/addons.py | 16 ++++++++++++++-- home-assistant-polymer | 2 +- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/API.md b/API.md index 7dcc6a304..5946adf57 100644 --- a/API.md +++ b/API.md @@ -293,6 +293,8 @@ Get all available addons "installed": "none|INSTALL_VERSION", "detached": "bool", "build": "bool", + "privileged": ["NET_ADMIN", "SYS_ADMIN"], + "devices": ["/dev/xy"], "url": "null|url", "logo": "bool" } @@ -328,6 +330,8 @@ Get all available addons "options": "{}", "network": "{}|null", "host_network": "bool", + "privileged": ["NET_ADMIN", "SYS_ADMIN"], + "devices": ["/dev/xy"], "logo": "bool", "webui": "null|http(s)://[HOST]:port/xy/zx" } diff --git a/hassio/addons/validate.py b/hassio/addons/validate.py index 258f55d30..d54713ce3 100644 --- a/hassio/addons/validate.py +++ b/hassio/addons/validate.py @@ -35,8 +35,9 @@ STARTUP_ALL = [ STARTUP_APPLICATION ] -PRIVILEGE_ALL = [ - "NET_ADMIN" +PRIVILEGED_ALL = [ + "NET_ADMIN", + "SYS_ADMIN", ] @@ -73,7 +74,7 @@ SCHEMA_ADDON_CONFIG = vol.Schema({ vol.Match(r"^size=(\d)*[kmg](,uid=\d{1,4})?(,rw)?$"), vol.Optional(ATTR_MAP, default=[]): [vol.Match(MAP_VOLUME)], vol.Optional(ATTR_ENVIRONMENT): {vol.Match(r"\w*"): vol.Coerce(str)}, - vol.Optional(ATTR_PRIVILEGED): [vol.In(PRIVILEGE_ALL)], + vol.Optional(ATTR_PRIVILEGED): [vol.In(PRIVILEGED_ALL)], vol.Required(ATTR_OPTIONS): dict, vol.Required(ATTR_SCHEMA): vol.Any(vol.Schema({ vol.Coerce(str): vol.Any(ADDON_ELEMENT, [ diff --git a/hassio/api/addons.py b/hassio/api/addons.py index 08925ad71..c04001058 100644 --- a/hassio/api/addons.py +++ b/hassio/api/addons.py @@ -11,8 +11,8 @@ from ..const import ( ATTR_URL, ATTR_DESCRIPTON, ATTR_DETACHED, ATTR_NAME, ATTR_REPOSITORY, ATTR_BUILD, ATTR_AUTO_UPDATE, ATTR_NETWORK, ATTR_HOST_NETWORK, ATTR_SLUG, ATTR_SOURCE, ATTR_REPOSITORIES, ATTR_ADDONS, ATTR_ARCH, ATTR_MAINTAINER, - ATTR_INSTALLED, ATTR_LOGO, ATTR_WEBUI, BOOT_AUTO, BOOT_MANUAL, - CONTENT_TYPE_PNG, CONTENT_TYPE_BINARY) + ATTR_INSTALLED, ATTR_LOGO, ATTR_WEBUI, ATTR_DEVICES, ATTR_PRIVILEGED, + BOOT_AUTO, BOOT_MANUAL, CONTENT_TYPE_PNG, CONTENT_TYPE_BINARY) from ..validate import DOCKER_PORTS _LOGGER = logging.getLogger(__name__) @@ -49,6 +49,14 @@ class APIAddons(object): return addon + @staticmethod + def _pretty_devces(addon): + """Return a simplified device list.""" + dev_list = addon.devices + if not dev_list: + return [] + return [row.split(':')[0] for row in dev_list] + @api_process async def list(self, request): """Return all addons / repositories .""" @@ -64,6 +72,8 @@ class APIAddons(object): ATTR_DETACHED: addon.is_detached, ATTR_REPOSITORY: addon.repository, ATTR_BUILD: addon.need_build, + ATTR_PRIVILEGED: addon.privileged, + ATTR_DEVICES: self._pretty_devces(addon), ATTR_URL: addon.url, ATTR_LOGO: addon.with_logo, }) @@ -109,6 +119,8 @@ class APIAddons(object): ATTR_BUILD: addon.need_build, ATTR_NETWORK: addon.ports, ATTR_HOST_NETWORK: addon.network_mode == 'host', + ATTR_PRIVILEGED: addon.privileged, + ATTR_DEVICES: self._pretty_devces(addon), ATTR_LOGO: addon.with_logo, ATTR_WEBUI: addon.webui, } diff --git a/home-assistant-polymer b/home-assistant-polymer index 5cdba73ba..d2a56655d 160000 --- a/home-assistant-polymer +++ b/home-assistant-polymer @@ -1 +1 @@ -Subproject commit 5cdba73bacdbdf8a9cb1b95f55b2fdd44ae49a78 +Subproject commit d2a56655d086a040e712680e46e191d78949dfa3