mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-09-04 02:44:54 +00:00
Compare commits
15 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
8233083392 | ||
![]() |
106378d1d0 | ||
![]() |
01d18d5ff3 | ||
![]() |
6d23f3bd1c | ||
![]() |
ef96579a29 | ||
![]() |
44f0a9f21a | ||
![]() |
d854307acb | ||
![]() |
334b41de71 | ||
![]() |
1da50eab7a | ||
![]() |
b119a42f4d | ||
![]() |
99aa438817 | ||
![]() |
99fa91f480 | ||
![]() |
93969d264d | ||
![]() |
711e199977 | ||
![]() |
4e645332c3 |
@@ -17,7 +17,7 @@ from ..const import (
|
|||||||
ATTR_STARTUP, ATTR_BOOT, ATTR_MAP, ATTR_OPTIONS, ATTR_PORTS, BOOT_AUTO,
|
ATTR_STARTUP, ATTR_BOOT, ATTR_MAP, ATTR_OPTIONS, ATTR_PORTS, BOOT_AUTO,
|
||||||
ATTR_SCHEMA, ATTR_IMAGE, ATTR_REPOSITORY, ATTR_URL, ATTR_ARCH,
|
ATTR_SCHEMA, ATTR_IMAGE, ATTR_REPOSITORY, ATTR_URL, ATTR_ARCH,
|
||||||
ATTR_LOCATON, ATTR_DEVICES, ATTR_ENVIRONMENT, ATTR_HOST_NETWORK,
|
ATTR_LOCATON, ATTR_DEVICES, ATTR_ENVIRONMENT, ATTR_HOST_NETWORK,
|
||||||
ATTR_TMPFS)
|
ATTR_TMPFS, ATTR_PRIVILEGED)
|
||||||
from ..config import Config
|
from ..config import Config
|
||||||
from ..tools import read_json_file, write_json_file
|
from ..tools import read_json_file, write_json_file
|
||||||
|
|
||||||
@@ -313,6 +313,10 @@ class AddonsData(Config):
|
|||||||
"""Return environment of addon."""
|
"""Return environment of addon."""
|
||||||
return self._system_data[addon].get(ATTR_ENVIRONMENT)
|
return self._system_data[addon].get(ATTR_ENVIRONMENT)
|
||||||
|
|
||||||
|
def get_privileged(self, addon):
|
||||||
|
"""Return list of privilege."""
|
||||||
|
return self._system_data[addon].get(ATTR_PRIVILEGED)
|
||||||
|
|
||||||
def get_url(self, addon):
|
def get_url(self, addon):
|
||||||
"""Return url of addon."""
|
"""Return url of addon."""
|
||||||
if addon in self._addons_cache:
|
if addon in self._addons_cache:
|
||||||
@@ -389,5 +393,7 @@ class AddonsData(Config):
|
|||||||
"""Create a schema for addon options."""
|
"""Create a schema for addon options."""
|
||||||
raw_schema = self._system_data[addon][ATTR_SCHEMA]
|
raw_schema = self._system_data[addon][ATTR_SCHEMA]
|
||||||
|
|
||||||
schema = vol.Schema(vol.All(dict, validate_options(raw_schema)))
|
if isinstance(raw_schema, bool):
|
||||||
return schema
|
return vol.Schema(dict)
|
||||||
|
|
||||||
|
return vol.Schema(vol.All(dict, validate_options(raw_schema)))
|
||||||
|
@@ -7,7 +7,7 @@ from ..const import (
|
|||||||
STARTUP_BEFORE, STARTUP_INITIALIZE, BOOT_AUTO, BOOT_MANUAL, ATTR_SCHEMA,
|
STARTUP_BEFORE, STARTUP_INITIALIZE, BOOT_AUTO, BOOT_MANUAL, ATTR_SCHEMA,
|
||||||
ATTR_IMAGE, ATTR_URL, ATTR_MAINTAINER, ATTR_ARCH, ATTR_DEVICES,
|
ATTR_IMAGE, ATTR_URL, ATTR_MAINTAINER, ATTR_ARCH, ATTR_DEVICES,
|
||||||
ATTR_ENVIRONMENT, ATTR_HOST_NETWORK, ARCH_ARMHF, ARCH_AARCH64, ARCH_AMD64,
|
ATTR_ENVIRONMENT, ATTR_HOST_NETWORK, ARCH_ARMHF, ARCH_AARCH64, ARCH_AMD64,
|
||||||
ARCH_I386, ATTR_TMPFS)
|
ARCH_I386, ATTR_TMPFS, ATTR_PRIVILEGED)
|
||||||
|
|
||||||
|
|
||||||
MAP_VOLUME = r"^(config|ssl|addons|backup|share)(?::(rw|:ro))?$"
|
MAP_VOLUME = r"^(config|ssl|addons|backup|share)(?::(rw|:ro))?$"
|
||||||
@@ -25,6 +25,10 @@ ARCH_ALL = [
|
|||||||
ARCH_ARMHF, ARCH_AARCH64, ARCH_AMD64, ARCH_I386
|
ARCH_ARMHF, ARCH_AARCH64, ARCH_AMD64, ARCH_I386
|
||||||
]
|
]
|
||||||
|
|
||||||
|
PRIVILEGE_ALL = [
|
||||||
|
"NET_ADMIN"
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def check_network(data):
|
def check_network(data):
|
||||||
"""Validate network settings."""
|
"""Validate network settings."""
|
||||||
@@ -56,12 +60,13 @@ SCHEMA_ADDON_CONFIG = vol.Schema(vol.All({
|
|||||||
vol.Match(r"^size=(\d)*[kmg](,uid=\d{1,4})?(,rw)?$"),
|
vol.Match(r"^size=(\d)*[kmg](,uid=\d{1,4})?(,rw)?$"),
|
||||||
vol.Optional(ATTR_MAP, default=[]): [vol.Match(MAP_VOLUME)],
|
vol.Optional(ATTR_MAP, default=[]): [vol.Match(MAP_VOLUME)],
|
||||||
vol.Optional(ATTR_ENVIRONMENT): {vol.Match(r"\w*"): vol.Coerce(str)},
|
vol.Optional(ATTR_ENVIRONMENT): {vol.Match(r"\w*"): vol.Coerce(str)},
|
||||||
|
vol.Optional(ATTR_PRIVILEGED): [vol.In(PRIVILEGE_ALL)],
|
||||||
vol.Required(ATTR_OPTIONS): dict,
|
vol.Required(ATTR_OPTIONS): dict,
|
||||||
vol.Required(ATTR_SCHEMA): {
|
vol.Required(ATTR_SCHEMA): vol.Any({
|
||||||
vol.Coerce(str): vol.Any(ADDON_ELEMENT, [
|
vol.Coerce(str): vol.Any(ADDON_ELEMENT, [
|
||||||
vol.Any(ADDON_ELEMENT, {vol.Coerce(str): ADDON_ELEMENT})
|
vol.Any(ADDON_ELEMENT, {vol.Coerce(str): ADDON_ELEMENT})
|
||||||
])
|
])
|
||||||
},
|
}, False),
|
||||||
vol.Optional(ATTR_IMAGE): vol.Match(r"\w*/\w*"),
|
vol.Optional(ATTR_IMAGE): vol.Match(r"\w*/\w*"),
|
||||||
}, check_network), extra=vol.ALLOW_EXTRA)
|
}, check_network), extra=vol.ALLOW_EXTRA)
|
||||||
|
|
||||||
|
@@ -11,7 +11,7 @@ _LOGGER = logging.getLogger(__name__)
|
|||||||
|
|
||||||
|
|
||||||
SCHEMA_OPTIONS = vol.Schema({
|
SCHEMA_OPTIONS = vol.Schema({
|
||||||
vol.Optional(ATTR_DEVICES): [vol.Coerce(str)],
|
vol.Optional(ATTR_DEVICES): [vol.Match(r"^[^/]*$")],
|
||||||
})
|
})
|
||||||
|
|
||||||
SCHEMA_VERSION = vol.Schema({
|
SCHEMA_VERSION = vol.Schema({
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
"""Const file for HassIO."""
|
"""Const file for HassIO."""
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
HASSIO_VERSION = '0.35'
|
HASSIO_VERSION = '0.37'
|
||||||
|
|
||||||
URL_HASSIO_VERSION = ('https://raw.githubusercontent.com/home-assistant/'
|
URL_HASSIO_VERSION = ('https://raw.githubusercontent.com/home-assistant/'
|
||||||
'hassio/master/version.json')
|
'hassio/master/version.json')
|
||||||
@@ -80,6 +80,7 @@ ATTR_DEVICES = 'devices'
|
|||||||
ATTR_ENVIRONMENT = 'environment'
|
ATTR_ENVIRONMENT = 'environment'
|
||||||
ATTR_HOST_NETWORK = 'host_network'
|
ATTR_HOST_NETWORK = 'host_network'
|
||||||
ATTR_TMPFS = 'tmpfs'
|
ATTR_TMPFS = 'tmpfs'
|
||||||
|
ATTR_PRIVILEGED = 'privileged'
|
||||||
|
|
||||||
STARTUP_INITIALIZE = 'initialize'
|
STARTUP_INITIALIZE = 'initialize'
|
||||||
STARTUP_BEFORE = 'before'
|
STARTUP_BEFORE = 'before'
|
||||||
|
@@ -206,8 +206,8 @@ class DockerBase(object):
|
|||||||
|
|
||||||
Need run inside executor.
|
Need run inside executor.
|
||||||
"""
|
"""
|
||||||
if self._is_running():
|
# cleanup container
|
||||||
self._stop()
|
self._stop()
|
||||||
|
|
||||||
_LOGGER.info(
|
_LOGGER.info(
|
||||||
"Remove docker %s with latest and %s", self.image, self.version)
|
"Remove docker %s with latest and %s", self.image, self.version)
|
||||||
|
@@ -107,6 +107,7 @@ class DockerAddon(DockerBase):
|
|||||||
network_mode=self.addons_data.get_network_mode(self.addon),
|
network_mode=self.addons_data.get_network_mode(self.addon),
|
||||||
ports=self.addons_data.get_ports(self.addon),
|
ports=self.addons_data.get_ports(self.addon),
|
||||||
devices=self.addons_data.get_devices(self.addon),
|
devices=self.addons_data.get_devices(self.addon),
|
||||||
|
cap_add=self.addons_data.get_privileged(self.addon),
|
||||||
environment=self.environment,
|
environment=self.environment,
|
||||||
volumes=self.volumes,
|
volumes=self.volumes,
|
||||||
tmpfs=self.tmpfs
|
tmpfs=self.tmpfs
|
||||||
|
@@ -5,10 +5,10 @@ from ..const import ARCH_AARCH64, ARCH_ARMHF, ARCH_I386, ARCH_AMD64
|
|||||||
|
|
||||||
|
|
||||||
RESIN_BASE_IMAGE = {
|
RESIN_BASE_IMAGE = {
|
||||||
ARCH_ARMHF: "resin/armhf-alpine:3.5",
|
ARCH_ARMHF: "homeassistant/armhf-base:latest",
|
||||||
ARCH_AARCH64: "resin/aarch64-alpine:3.5",
|
ARCH_AARCH64: "homeassistant/aarch64-base:latest",
|
||||||
ARCH_I386: "resin/i386-alpine:3.5",
|
ARCH_I386: "homeassistant/i386-base:latest",
|
||||||
ARCH_AMD64: "resin/amd64-alpine:3.5",
|
ARCH_AMD64: "homeassistant/amd64-base:latest",
|
||||||
}
|
}
|
||||||
|
|
||||||
TMPL_IMAGE = re.compile(r"%%BASE_IMAGE%%")
|
TMPL_IMAGE = re.compile(r"%%BASE_IMAGE%%")
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"hassio": "0.35",
|
"hassio": "0.37",
|
||||||
"homeassistant": "0.45.1",
|
"homeassistant": "0.46.1",
|
||||||
"resinos": "0.8",
|
"resinos": "0.8",
|
||||||
"resinhup": "0.1",
|
"resinhup": "0.1",
|
||||||
"generic": "0.3"
|
"generic": "0.3"
|
||||||
|
Reference in New Issue
Block a user