From da83edf23190a6d4a0a9e9b3d0de8e0a69ecfc4d Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 11 Sep 2020 19:35:04 +0200 Subject: [PATCH] Handle exception on DNS for add-ons (#2042) * Handle exception on DNS for add-ons * fix logger * capture exception --- supervisor/docker/addon.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/supervisor/docker/addon.py b/supervisor/docker/addon.py index c1eba63bf..e6d7387d2 100644 --- a/supervisor/docker/addon.py +++ b/supervisor/docker/addon.py @@ -26,7 +26,7 @@ from ..const import ( SECURITY_PROFILE, ) from ..coresys import CoreSys -from ..exceptions import DockerAPIError +from ..exceptions import CoreDNSError, DockerAPIError from ..utils import process_lock from .interface import DockerInterface @@ -379,7 +379,13 @@ class DockerAddon(DockerInterface): _LOGGER.info("Start Docker add-on %s with version %s", self.image, self.version) # Write data to DNS server - self.sys_plugins.dns.add_host(ipv4=self.ip_address, names=[self.addon.hostname]) + try: + self.sys_plugins.dns.add_host( + ipv4=self.ip_address, names=[self.addon.hostname] + ) + except CoreDNSError as err: + _LOGGER.warning("Can't update DNS for %s", self.name) + self.sys_capture_exception(err) def _install( self, tag: str, image: Optional[str] = None, latest: bool = False @@ -505,5 +511,9 @@ class DockerAddon(DockerInterface): Need run inside executor. """ if self.ip_address != NO_ADDDRESS: - self.sys_plugins.dns.delete_host(self.addon.hostname) + try: + self.sys_plugins.dns.delete_host(self.addon.hostname) + except CoreDNSError as err: + _LOGGER.warning("Can't update DNS for %s", self.name) + self.sys_capture_exception(err) super()._stop(remove_container)