diff --git a/hassio/addons/data.py b/hassio/addons/data.py index a4da39d10..ad2d79d3a 100644 --- a/hassio/addons/data.py +++ b/hassio/addons/data.py @@ -16,7 +16,8 @@ from ..const import ( FILE_HASSIO_ADDONS, ATTR_NAME, ATTR_VERSION, ATTR_SLUG, ATTR_DESCRIPTON, ATTR_STARTUP, ATTR_BOOT, ATTR_MAP, ATTR_OPTIONS, ATTR_PORTS, BOOT_AUTO, 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) from ..config import Config from ..tools import read_json_file, write_json_file @@ -304,6 +305,10 @@ class AddonsData(Config): """Return devices of addon.""" return self._system_data[addon].get(ATTR_DEVICES) + def get_tmpfs(self, addon): + """Return tmpfs of addon.""" + return self._system_data[addon].get(ATTR_TMPFS) + def get_environment(self, addon): """Return environment of addon.""" return self._system_data[addon].get(ATTR_ENVIRONMENT) diff --git a/hassio/addons/validate.py b/hassio/addons/validate.py index 96842e30c..f5eecb9d2 100644 --- a/hassio/addons/validate.py +++ b/hassio/addons/validate.py @@ -7,7 +7,7 @@ from ..const import ( STARTUP_BEFORE, STARTUP_INITIALIZE, BOOT_AUTO, BOOT_MANUAL, ATTR_SCHEMA, ATTR_IMAGE, ATTR_URL, ATTR_MAINTAINER, ATTR_ARCH, ATTR_DEVICES, ATTR_ENVIRONMENT, ATTR_HOST_NETWORK, ARCH_ARMHF, ARCH_AARCH64, ARCH_AMD64, - ARCH_I386) + ARCH_I386, ATTR_TMPFS) MAP_VOLUME = r"^(config|ssl|addons|backup|share)(?::(rw|:ro))?$" @@ -52,6 +52,8 @@ SCHEMA_ADDON_CONFIG = vol.Schema(vol.All({ vol.Optional(ATTR_PORTS): dict, vol.Optional(ATTR_HOST_NETWORK, default=False): vol.Boolean(), vol.Optional(ATTR_DEVICES): [vol.Match(r"^(.*):(.*):([rwm]{1,3})$")], + vol.Optional(ATTR_TMPFS): + vol.Match(r"^size=(\d)*[kmg](,uid=\d{1,4})?(,rw)?$"), vol.Optional(ATTR_MAP, default=[]): [vol.Match(MAP_VOLUME)], vol.Optional(ATTR_ENVIRONMENT): {vol.Match(r"\w*"): vol.Coerce(str)}, vol.Required(ATTR_OPTIONS): dict, diff --git a/hassio/const.py b/hassio/const.py index 1ae61b72f..af7b67327 100644 --- a/hassio/const.py +++ b/hassio/const.py @@ -79,6 +79,7 @@ ATTR_BUILD = 'build' ATTR_DEVICES = 'devices' ATTR_ENVIRONMENT = 'environment' ATTR_HOST_NETWORK = 'host_network' +ATTR_TMPFS = 'tmpfs' STARTUP_INITIALIZE = 'initialize' STARTUP_BEFORE = 'before' diff --git a/hassio/dock/addon.py b/hassio/dock/addon.py index 6c8a0ba8b..3e7a63d03 100644 --- a/hassio/dock/addon.py +++ b/hassio/dock/addon.py @@ -38,6 +38,14 @@ class DockerAddon(DockerBase): 'TZ': self.config.timezone, } + @property + def tmpfs(self): + """Return tmpfs for docker add-on.""" + options = self.addons_data.get_tmpfs(self.addon) + if options: + return {"/tmpfs": "{}".format(options)} + return None + @property def volumes(self): """Generate volumes for mappings.""" @@ -100,7 +108,8 @@ class DockerAddon(DockerBase): ports=self.addons_data.get_ports(self.addon), devices=self.addons_data.get_devices(self.addon), environment=self.environment, - volumes=self.volumes + volumes=self.volumes, + tmpfs=self.tmpfs ) self.process_metadata()