From 34c4acf199bde6cd38f2cab9d4f64493c9d176f9 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 16 May 2017 14:50:47 +0200 Subject: [PATCH] Add device support (#54) Add device support --- hassio/addons/data.py | 6 +++++- hassio/addons/validate.py | 3 ++- hassio/const.py | 1 + hassio/dock/addon.py | 1 + 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/hassio/addons/data.py b/hassio/addons/data.py index e4eae0a95..b423dbd35 100644 --- a/hassio/addons/data.py +++ b/hassio/addons/data.py @@ -14,7 +14,7 @@ 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, MAP_CONFIG, MAP_SSL, MAP_ADDONS, MAP_BACKUP, - ATTR_REPOSITORY, ATTR_URL, ATTR_ARCH, ATTR_LOCATON) + ATTR_REPOSITORY, ATTR_URL, ATTR_ARCH, ATTR_LOCATON, ATTR_DEVICES) from ..config import Config from ..tools import read_json_file, write_json_file @@ -290,6 +290,10 @@ class AddonsData(Config): """Return ports of addon.""" return self._system_data[addon].get(ATTR_PORTS) + def get_devices(self, addon): + """Return devices of addon.""" + return self._system_data[addon].get(ATTR_DEVICES) + def get_url(self, addon): """Return url of addon.""" if addon in self._addons_cache: diff --git a/hassio/addons/validate.py b/hassio/addons/validate.py index e3dcb40b4..e26527411 100644 --- a/hassio/addons/validate.py +++ b/hassio/addons/validate.py @@ -6,7 +6,7 @@ from ..const import ( ATTR_BOOT, ATTR_MAP, ATTR_OPTIONS, ATTR_PORTS, STARTUP_ONCE, STARTUP_AFTER, STARTUP_BEFORE, BOOT_AUTO, BOOT_MANUAL, ATTR_SCHEMA, ATTR_IMAGE, MAP_SSL, MAP_CONFIG, MAP_ADDONS, MAP_BACKUP, ATTR_URL, ATTR_MAINTAINER, ATTR_ARCH, - ARCH_ARMHF, ARCH_AARCH64, ARCH_AMD64, ARCH_I386) + ARCH_ARMHF, ARCH_AARCH64, ARCH_AMD64, ARCH_I386, ATTR_DEVICES) V_STR = 'str' V_INT = 'int' @@ -34,6 +34,7 @@ SCHEMA_ADDON_CONFIG = vol.Schema({ vol.Required(ATTR_BOOT): vol.In([BOOT_AUTO, BOOT_MANUAL]), vol.Optional(ATTR_PORTS): dict, + vol.Optional(ATTR_DEVICES): [vol.Match(r"(.*):(.*):(rwm|rw|rm)")], vol.Optional(ATTR_MAP, default=[]): [ vol.In([MAP_CONFIG, MAP_SSL, MAP_ADDONS, MAP_BACKUP]) ], diff --git a/hassio/const.py b/hassio/const.py index 99bcd96da..bac023dc2 100644 --- a/hassio/const.py +++ b/hassio/const.py @@ -75,6 +75,7 @@ ATTR_INITIALIZE = 'initialize' ATTR_SESSION = 'session' ATTR_LOCATON = 'location' ATTR_BUILD = 'build' +ATTR_DEVICES = 'devices' STARTUP_BEFORE = 'before' STARTUP_AFTER = 'after' diff --git a/hassio/dock/addon.py b/hassio/dock/addon.py index 679b594bf..e07cd140a 100644 --- a/hassio/dock/addon.py +++ b/hassio/dock/addon.py @@ -79,6 +79,7 @@ class DockerAddon(DockerBase): detach=True, network_mode='bridge', ports=self.addons_data.get_ports(self.addon), + devices=self.addons_data.get_devices(self.addon), volumes=self.volumes, )