Allow SYS_ADMIN, show devices and privileged on API

This commit is contained in:
pvizeli 2017-07-24 10:30:51 +02:00
parent c3e1c8b58e
commit 934ca64a32
4 changed files with 23 additions and 6 deletions

4
API.md
View File

@ -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"
}

View File

@ -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, [

View File

@ -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,
}

@ -1 +1 @@
Subproject commit 5cdba73bacdbdf8a9cb1b95f55b2fdd44ae49a78
Subproject commit d2a56655d086a040e712680e46e191d78949dfa3