Add addon share and allow to mount host mnt (#58)

* Add addon share and allow to mount host mnt

* fix comments logs
This commit is contained in:
Pascal Vizeli 2017-05-17 17:21:54 +02:00 committed by GitHub
parent 39d5785118
commit 6031a60084
6 changed files with 47 additions and 13 deletions

View File

@ -9,7 +9,7 @@ from ..const import (
ARCH_ARMHF, ARCH_AARCH64, ARCH_AMD64, ARCH_I386)
MAP_VOLUME = r"^(config|ssl|addons|backup)(?::(rw|:ro))?$"
MAP_VOLUME = r"^(config|ssl|addons|backup|share|mnt)(?::(rw|:ro))?$"
V_STR = 'str'
V_INT = 'int'

View File

@ -21,24 +21,24 @@ def initialize_system_data(websession):
"Create Home-Assistant config folder %s", config.path_config)
config.path_config.mkdir()
# homeassistant ssl folder
# hassio ssl folder
if not config.path_ssl.is_dir():
_LOGGER.info("Create Home-Assistant ssl folder %s", config.path_ssl)
_LOGGER.info("Create hassio ssl folder %s", config.path_ssl)
config.path_ssl.mkdir()
# homeassistant addon data folder
# hassio addon data folder
if not config.path_addons_data.is_dir():
_LOGGER.info("Create Home-Assistant addon data folder %s",
config.path_addons_data)
_LOGGER.info(
"Create hassio addon data folder %s", config.path_addons_data)
config.path_addons_data.mkdir(parents=True)
if not config.path_addons_local.is_dir():
_LOGGER.info("Create Home-Assistant addon local repository folder %s",
_LOGGER.info("Create hassio addon local repository folder %s",
config.path_addons_local)
config.path_addons_local.mkdir(parents=True)
if not config.path_addons_git.is_dir():
_LOGGER.info("Create Home-Assistant addon git repositories folder %s",
_LOGGER.info("Create hassio addon git repositories folder %s",
config.path_addons_git)
config.path_addons_git.mkdir(parents=True)
@ -47,12 +47,16 @@ def initialize_system_data(websession):
config.path_addons_build)
config.path_addons_build.mkdir(parents=True)
# homeassistant backup folder
# hassio backup folder
if not config.path_backup.is_dir():
_LOGGER.info("Create Home-Assistant backup folder %s",
config.path_backup)
_LOGGER.info("Create hassio backup folder %s", config.path_backup)
config.path_backup.mkdir()
# share folder
if not config.path_share.is_dir():
_LOGGER.info("Create hassio share folder %s", config.path_share)
config.path_share.mkdir()
return config

View File

@ -32,6 +32,8 @@ ADDONS_CUSTOM_LIST = 'addons_custom_list'
BACKUP_DATA = PurePath("backup")
SHARE_DATA = PurePath("share")
UPSTREAM_BETA = 'upstream_beta'
API_ENDPOINT = 'api_endpoint'
@ -233,6 +235,16 @@ class CoreConfig(Config):
"""Return root backup data folder extern for docker."""
return PurePath(self.path_extern_hassio, BACKUP_DATA)
@property
def path_share(self):
"""Return root share data folder."""
return Path(HASSIO_SHARE, SHARE_DATA)
@property
def path_extern_share(self):
"""Return root share data folder extern for docker."""
return PurePath(self.path_extern_hassio, SHARE_DATA)
@property
def addons_repositories(self):
"""Return list of addons custom repositories."""

View File

@ -92,6 +92,8 @@ MAP_CONFIG = 'config'
MAP_SSL = 'ssl'
MAP_ADDONS = 'addons'
MAP_BACKUP = 'backup'
MAP_SHARE = 'share'
MAP_MNT = 'mnt'
ARCH_ARMHF = 'armhf'
ARCH_AARCH64 = 'aarch64'

View File

@ -7,7 +7,9 @@ import docker
from . import DockerBase
from .util import dockerfile_template
from ..const import META_ADDON, MAP_CONFIG, MAP_SSL, MAP_ADDONS, MAP_BACKUP
from ..const import (
META_ADDON, MAP_CONFIG, MAP_SSL, MAP_ADDONS, MAP_BACKUP, MAP_SHARE,
MAP_MNT)
_LOGGER = logging.getLogger(__name__)
@ -61,6 +63,18 @@ class DockerAddon(DockerBase):
'bind': '/backup', 'mode': addon_mapping[MAP_BACKUP]
}})
if MAP_SHARE in addon_mapping:
volumes.update({
str(self.config.path_extern_share): {
'bind': '/share', 'mode': addon_mapping[MAP_SHARE]
}})
if MAP_MNT in addon_mapping:
volumes.update({
'/mnt': {
'bind': '/mnt', 'mode': addon_mapping[MAP_MNT]
}})
return volumes
def _run(self):

View File

@ -47,7 +47,9 @@ class DockerHomeAssistant(DockerBase):
str(self.config.path_extern_config):
{'bind': '/config', 'mode': 'rw'},
str(self.config.path_extern_ssl):
{'bind': '/ssl', 'mode': 'rw'},
{'bind': '/ssl', 'mode': 'ro'},
str(self.config.path_extern_share):
{'bind': '/share', 'mode': 'rw'},
})
self.process_metadata()