Compare commits

...

15 Commits
0.35 ... 0.37

Author SHA1 Message Date
Pascal Vizeli
8233083392 Merge remote-tracking branch 'origin/dev' 2017-06-17 23:55:24 +02:00
Pascal Vizeli
106378d1d0 Update version.json 2017-06-17 23:47:02 +02:00
Pascal Vizeli
01d18d5ff3 Allow custom options without validate (#80) 2017-06-17 22:47:56 +02:00
Pascal Vizeli
6d23f3bd1c Use our new base image 2017-06-14 16:55:03 +02:00
Pascal Vizeli
ef96579a29 Update HomeAssistant 0.46.1 2017-06-10 00:55:17 +02:00
Pascal Vizeli
44f0a9f21a Update HomeAssistant 0.46.1 2017-06-10 00:54:49 +02:00
Pascal Vizeli
d854307acb Remove container before delete images (#78) 2017-06-08 17:11:14 +02:00
Pascal Vizeli
334b41de71 Pump version to 0.37 2017-06-05 13:02:13 +02:00
Pascal Vizeli
1da50eab7a Fix versions 2017-06-05 12:59:44 +02:00
Pascal Vizeli
b119a42f4d Update Hass.IO 0.36 2017-06-05 12:56:14 +02:00
Pascal Vizeli
99aa438817 Allow extend cap for addons (#77)
* Allow extend cap for addons

* cleanup
2017-06-05 12:46:45 +02:00
Pascal Vizeli
99fa91f480 Add better validator for device 2017-06-05 12:45:43 +02:00
Pascal Vizeli
93969d264d Update HomeAssistant 0.46 2017-06-04 09:32:55 +02:00
Pascal Vizeli
711e199977 Update HomeAssistant 0.46 2017-06-04 09:11:46 +02:00
Pascal Vizeli
4e645332c3 Pump version to 0.36 2017-06-03 00:15:46 +02:00
8 changed files with 29 additions and 16 deletions

View File

@@ -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)))

View File

@@ -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)

View File

@@ -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({

View File

@@ -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'

View File

@@ -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)

View File

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

View File

@@ -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%%")

View File

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