Addons config support

This commit is contained in:
Pascal Vizeli 2017-04-10 22:08:57 +02:00
parent 082770256b
commit 5c70d68262
6 changed files with 34 additions and 8 deletions

View File

@ -3,6 +3,7 @@ import logging
from .config import AddonsConfig
from .git import AddonsRepo
from ..docker.addon import DockerAddon
_LOGGER = logging.getLogger(__name__)

View File

@ -10,7 +10,7 @@ from ..const import (
FILE_HASSIO_ADDONS, ATTR_NAME, ATTR_VERSION, ATTR_SLUG, ATTR_DESCRIPTON,
ATTR_STARTUP, ATTR_BOOT, ATTR_MAP_SSL, ATTR_MAP_CONFIG, ATTR_MAP_DATA,
ATTR_OPTIONS, ATTR_PORTS, STARTUP_ONCE, STARTUP_AFTER, STARTUP_BEFORE,
BOOT_AUTO, BOOT_MANUAL)
BOOT_AUTO, BOOT_MANUAL, DOCKER_REPO)
_LOGGER = logging.getLogger(__name__)
@ -61,6 +61,12 @@ class AddonsConfig(Config):
_LOGGER.warnign("Can't read %s -> %s.", addon,
humanize_error(addon_config, ex))
def get_image(self, addon):
"""Return name of addon docker image."""
return "{}/{}-addon-{}".format(
DOCKER_REPO, self.config.hassio_arch,
self._addons_data[addon][ATTR_SLUG])
def get_slug(self, addon):
"""Return slug of addon."""
return self._addons_data[addon][ATTR_SLUG]
@ -83,7 +89,10 @@ class AddonsConfig(Config):
def path_data(self, addon):
"""Return addon data path inside supervisor."""
return "{}/{}".format(
self.config.path_addons_data, self._addons_data[addon][ATTR_SLUG])
def path_data_docker(self, addon):
"""Return addon data path external for docker."""
return "{}/{}".format(self.config.path_addons_data_docker,
self._addons_data[addon][ATTR_SLUG])

View File

@ -4,7 +4,7 @@ import logging
import os
from .const import FILE_HASSIO_CONFIG, HASSIO_SHARE
from .tools import fetch_current_versions
from .tools import fetch_current_versions, get_arch_from_image
_LOGGER = logging.getLogger(__name__)
@ -91,6 +91,11 @@ class CoreConfig(Config):
"""Set beta upstream mode."""
self._data[UPSTREAM_BETA] = bool(value)
@property
def hassio_arch(self):
"""Return arch they run."""
return get_arch_from_image(self.homeassistant_image)
@property
def homeassistant_image(self):
"""Return docker homeassistant repository."""

View File

@ -8,6 +8,8 @@ URL_HASSIO_VERSION_BETA = \
URL_HASSIO_ADDONS = 'https://github.com/pvizeli/hassio-addons'
DOCKER_REPO = "pvizeli"
HASSIO_SHARE = "/data"
RUN_UPDATE_INFO_TASKS = 28800

View File

@ -11,12 +11,13 @@ _LOGGER = logging.getLogger(__name__)
HASS_DOCKER_NAME = 'homeassistant'
class DockerHomeAssistant(DockerBase):
class DockerAddon(DockerBase):
"""Docker hassio wrapper for HomeAssistant."""
def __init__(self, config, loop, dock, addon_config, addon, image):
def __init__(self, config, loop, dock, addon_config, addon):
"""Initialize docker homeassistant wrapper."""
super().__init__(config, loop, dock, image=image)
super().__init__(
config, loop, dock, image=addon_config.get_image(addon))
self.addon = addon
self.addon_config
@ -45,12 +46,12 @@ class DockerHomeAssistant(DockerBase):
volumes.update({
self.config.path_config_docker: {
'bind': '/config', 'mode': 'rw'
}})
}})
if self.addon_config.need_ssl(self.addon):
volumes.update({
self.config.path_ssl_docker: {
'bind': '/ssl', 'mode': 'rw'
}})
}})
try:
self.container = self.dock.containers.run(

View File

@ -12,6 +12,7 @@ from .const import URL_HASSIO_VERSION, URL_HASSIO_VERSION_BETA
_LOGGER = logging.getLogger(__name__)
_RE_VERSION = re.compile(r"VERSION=(.*)")
_IMAGE_ARCH = re.compile(r"([a-z0-9]*)-hassio-supervisor")
async def fetch_current_versions(websession, beta=False):
@ -29,6 +30,13 @@ async def fetch_current_versions(websession, beta=False):
_LOGGER.warning("Can't fetch versions from %s! %s", url, err)
def get_arch_from_image(image):
"""Return arch from hassio image name."""
found = _IMAGE_ARCH.match(image)
if found:
return found.group(1)
def get_version_from_env(env_list):
"""Extract Version from ENV list."""
for env in env_list: