From 920f7f2ece2f127fb70f310039fa3df3e12a1230 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 28 Feb 2020 23:15:46 +0100 Subject: [PATCH] Support for own init on image (#1542) * Support for own init on image * fix params --- supervisor/addons/model.py | 6 ++++++ supervisor/addons/validate.py | 2 ++ supervisor/const.py | 1 + supervisor/docker/addon.py | 2 +- supervisor/docker/audio.py | 1 + supervisor/docker/dns.py | 1 + 6 files changed, 12 insertions(+), 1 deletion(-) diff --git a/supervisor/addons/model.py b/supervisor/addons/model.py index c4a15f805..c9bfe202d 100644 --- a/supervisor/addons/model.py +++ b/supervisor/addons/model.py @@ -31,6 +31,7 @@ from ..const import ( ATTR_HOST_PID, ATTR_IMAGE, ATTR_INGRESS, + ATTR_INIT, ATTR_KERNEL_MODULES, ATTR_LEGACY, ATTR_LOCATON, @@ -344,6 +345,11 @@ class AddonModel(CoreSysAttributes): """Return Exclude list for snapshot.""" return self.data.get(ATTR_SNAPSHOT_EXCLUDE, []) + @property + def default_init(self) -> bool: + """Return True if the add-on have no own init.""" + return self.data[ATTR_INIT] + @property def with_stdin(self) -> bool: """Return True if the add-on access use stdin input.""" diff --git a/supervisor/addons/validate.py b/supervisor/addons/validate.py index bda65bd84..0809ee7a2 100644 --- a/supervisor/addons/validate.py +++ b/supervisor/addons/validate.py @@ -44,6 +44,7 @@ from ..const import ( ATTR_INGRESS_PANEL, ATTR_INGRESS_PORT, ATTR_INGRESS_TOKEN, + ATTR_INIT, ATTR_KERNEL_MODULES, ATTR_LEGACY, ATTR_LOCATON, @@ -189,6 +190,7 @@ SCHEMA_ADDON_CONFIG = vol.Schema( vol.Optional(ATTR_URL): vol.Url(), vol.Required(ATTR_STARTUP): vol.All(_simple_startup, vol.In(STARTUP_ALL)), vol.Required(ATTR_BOOT): vol.In([BOOT_AUTO, BOOT_MANUAL]), + vol.Optional(ATTR_INIT, default=True): vol.Boolean(), vol.Optional(ATTR_ADVANCED, default=False): vol.Boolean(), vol.Optional(ATTR_STAGE, default=AddonStages.STABLE): vol.Coerce(AddonStages), vol.Optional(ATTR_PORTS): DOCKER_PORTS, diff --git a/supervisor/const.py b/supervisor/const.py index dbc22fb0c..4ce0db1f3 100644 --- a/supervisor/const.py +++ b/supervisor/const.py @@ -237,6 +237,7 @@ ATTR_CARD = "card" ATTR_INDEX = "index" ATTR_ACTIVE = "active" ATTR_APPLICATION = "application" +ATTR_INIT = "init" PROVIDE_SERVICE = "provide" NEED_SERVICE = "need" diff --git a/supervisor/docker/addon.py b/supervisor/docker/addon.py index 88b8e2645..17e25a2ff 100644 --- a/supervisor/docker/addon.py +++ b/supervisor/docker/addon.py @@ -344,7 +344,7 @@ class DockerAddon(DockerInterface): name=self.name, hostname=self.addon.hostname, detach=True, - init=True, + init=self.addon.default_init, privileged=self.full_access, ipc_mode=self.ipc, stdin_open=self.addon.with_stdin, diff --git a/supervisor/docker/audio.py b/supervisor/docker/audio.py index bf9e62a90..a7c0e8654 100644 --- a/supervisor/docker/audio.py +++ b/supervisor/docker/audio.py @@ -41,6 +41,7 @@ class DockerAudio(DockerInterface, CoreSysAttributes): docker_container = self.sys_docker.run( self.image, version=self.sys_audio.version, + init=False, ipv4=self.sys_docker.network.audio, name=self.name, hostname=self.name.replace("_", "-"), diff --git a/supervisor/docker/dns.py b/supervisor/docker/dns.py index 258cc6796..9d02a76bb 100644 --- a/supervisor/docker/dns.py +++ b/supervisor/docker/dns.py @@ -41,6 +41,7 @@ class DockerDNS(DockerInterface, CoreSysAttributes): docker_container = self.sys_docker.run( self.image, version=self.sys_dns.version, + init=False, dns=False, ipv4=self.sys_docker.network.dns, name=self.name,