diff --git a/hassio/dns.py b/hassio/dns.py index 36671c705..3afc9331f 100644 --- a/hassio/dns.py +++ b/hassio/dns.py @@ -115,14 +115,15 @@ class CoreDNS(JsonConfig, CoreSysAttributes): # Start DNS forwarder self.sys_create_task(self.forwarder.start(self.sys_docker.network.dns)) + self._update_local_resolv() - with suppress(CoreDNSError): - self._update_local_resolv() - - # Start is not Running + # Reset container configuration if await self.instance.is_running(): - await self.restart() - else: + with suppress(DockerAPIError): + await self.instance.stop() + + # Run CoreDNS + with suppress(CoreDNSError): await self.start() async def unload(self) -> None: @@ -148,9 +149,8 @@ class CoreDNS(JsonConfig, CoreSysAttributes): self.version = self.instance.version self.save_data() - # Init Hosts / Run server + # Init Hosts self.write_hosts() - await self.start() async def update(self, version: Optional[str] = None) -> None: """Update CoreDNS plugin.""" @@ -207,6 +207,9 @@ class CoreDNS(JsonConfig, CoreSysAttributes): def _write_corefile(self) -> None: """Write CoreDNS config.""" + dns_servers: List[str] = [] + + # Load Template try: corefile_template: Template = Template(COREDNS_TMPL.read_text()) except OSError as err: @@ -214,8 +217,8 @@ class CoreDNS(JsonConfig, CoreSysAttributes): raise CoreDNSError() from None # Prepare DNS serverlist: Prio 1 Local, Prio 2 Manual, Prio 3 Fallback - dns_servers = [] - for server in self.sys_host.network.dns_servers + self.servers + DNS_SERVERS: + local_dns: List[str] = self.sys_host.network.dns_servers or ["dns://127.0.0.11"] + for server in local_dns + self.servers + DNS_SERVERS: try: DNS_URL(server) if server not in dns_servers: @@ -358,7 +361,7 @@ class CoreDNS(JsonConfig, CoreSysAttributes): resolv_lines.append(line.strip()) except OSError as err: _LOGGER.warning("Can't read local resolv: %s", err) - raise CoreDNSError() from None + return if nameserver in resolv_lines: return @@ -372,4 +375,4 @@ class CoreDNS(JsonConfig, CoreSysAttributes): resolv.write(f"{line}\n") except OSError as err: _LOGGER.warning("Can't write local resolv: %s", err) - raise CoreDNSError() from None + return diff --git a/hassio/docker/__init__.py b/hassio/docker/__init__.py index 2ee5223d7..66c0846ab 100644 --- a/hassio/docker/__init__.py +++ b/hassio/docker/__init__.py @@ -54,6 +54,7 @@ class DockerAPI: self, image: str, version: str = "latest", + dns: bool = True, ipv4: Optional[IPv4Address] = None, **kwargs: Dict[str, Any], ) -> docker.models.containers.Container: @@ -61,14 +62,15 @@ class DockerAPI: Need run inside executor. """ - name: str = kwargs.get("name", image) + name: str = kwargs.get("name") network_mode: str = kwargs.get("network_mode") hostname: str = kwargs.get("hostname") # Setup DNS - kwargs["dns"] = [str(self.network.dns)] - kwargs["dns_search"] = [DNS_SUFFIX] - kwargs["domainname"] = DNS_SUFFIX + if dns: + kwargs["dns"] = [str(self.network.dns)] + kwargs["dns_search"] = [DNS_SUFFIX] + kwargs["domainname"] = DNS_SUFFIX # Setup network if not network_mode: diff --git a/hassio/docker/dns.py b/hassio/docker/dns.py index c6d76cb47..3c75b1cd8 100644 --- a/hassio/docker/dns.py +++ b/hassio/docker/dns.py @@ -41,6 +41,7 @@ class DockerDNS(DockerInterface, CoreSysAttributes): docker_container = self.sys_docker.run( self.image, version=self.sys_dns.version, + dns=False, ipv4=self.sys_docker.network.dns, name=self.name, hostname=self.name.replace("_", "-"), diff --git a/hassio/secrets.py b/hassio/secrets.py index 486c388b6..33ff792df 100644 --- a/hassio/secrets.py +++ b/hassio/secrets.py @@ -32,6 +32,8 @@ class SecretsManager(CoreSysAttributes): """Load secrets on start.""" await self._read_secrets() + _LOGGER.info("Load Home Assistant secrets: %s", len(self.secrets)) + async def reload(self) -> None: """Reload secrets.""" await self._read_secrets() @@ -49,4 +51,4 @@ class SecretsManager(CoreSysAttributes): except YAMLError as err: _LOGGER.error("Can't process Home Assistant secrets: %s", err) else: - _LOGGER.info("Load Home Assistant secrets: %s", len(self.secrets)) + _LOGGER.debug("Reload Home Assistant secrets: %s", len(self.secrets)) diff --git a/hassio/tasks.py b/hassio/tasks.py index aabec5fcd..95cb695a2 100644 --- a/hassio/tasks.py +++ b/hassio/tasks.py @@ -19,7 +19,7 @@ RUN_RELOAD_SNAPSHOTS = 72000 RUN_RELOAD_HOST = 72000 RUN_RELOAD_UPDATER = 7200 RUN_RELOAD_INGRESS = 930 -RUN_RELOAD_SECRETS = 630 +RUN_RELOAD_SECRETS = 940 RUN_WATCHDOG_HOMEASSISTANT_DOCKER = 15 RUN_WATCHDOG_HOMEASSISTANT_API = 300