mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-07-08 09:46:29 +00:00
Addons config support
This commit is contained in:
parent
082770256b
commit
5c70d68262
@ -3,6 +3,7 @@ import logging
|
||||
|
||||
from .config import AddonsConfig
|
||||
from .git import AddonsRepo
|
||||
from ..docker.addon import DockerAddon
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
@ -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])
|
||||
|
@ -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."""
|
||||
|
@ -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
|
||||
|
@ -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(
|
||||
|
@ -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:
|
||||
|
Loading…
x
Reference in New Issue
Block a user