Merge pull request #1611 from home-assistant/dev

Release 213
This commit is contained in:
Pascal Vizeli 2020-03-29 14:35:10 +02:00 committed by GitHub
commit 69be7a6d22
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 35 additions and 5 deletions

View File

@ -3,7 +3,7 @@ from enum import Enum
from ipaddress import ip_network
from pathlib import Path
SUPERVISOR_VERSION = "212"
SUPERVISOR_VERSION = "213"
URL_HASSIO_ADDONS = "https://github.com/home-assistant/hassio-addons"

View File

@ -0,0 +1,5 @@
search local.hass.io
{% for server in servers %}
nameserver {{ server }}
{% endfor %}
options ndots:0

View File

@ -22,7 +22,8 @@ from .validate import dns_url, SCHEMA_DNS_CONFIG
_LOGGER: logging.Logger = logging.getLogger(__name__)
COREDNS_TMPL: Path = Path(__file__).parents[0].joinpath("data/coredns.tmpl")
RESOLV_CONF: Path = Path("/etc/resolv.conf")
RESOLV_TMPL: Path = Path(__file__).parents[0].joinpath("data/resolv.tmpl")
HOST_RESOLV: Path = Path("/etc/resolv.conf")
@attr.s
@ -43,6 +44,7 @@ class CoreDNS(JsonConfig, CoreSysAttributes):
self.instance: DockerDNS = DockerDNS(coresys)
self.forwarder: DNSForward = DNSForward()
self.coredns_template: Optional[jinja2.Template] = None
self.resolv_template: Optional[jinja2.Template] = None
self._hosts: List[HostEntry] = []
self._loop: bool = False
@ -123,6 +125,10 @@ class CoreDNS(JsonConfig, CoreSysAttributes):
self.coredns_template = jinja2.Template(COREDNS_TMPL.read_text())
except OSError as err:
_LOGGER.error("Can't read coredns.tmpl: %s", err)
try:
self.resolv_template = jinja2.Template(RESOLV_TMPL.read_text())
except OSError as err:
_LOGGER.error("Can't read coredns.tmpl: %s", err)
# Run CoreDNS
with suppress(CoreDNSError):
@ -131,6 +137,9 @@ class CoreDNS(JsonConfig, CoreSysAttributes):
else:
await self.start()
# Update supervisor
self._write_resolv(HOST_RESOLV)
async def unload(self) -> None:
"""Unload DNS forwarder."""
await self.forwarder.stop()
@ -375,3 +384,19 @@ class CoreDNS(JsonConfig, CoreSysAttributes):
await self.instance.install(self.version)
except DockerAPIError:
_LOGGER.error("Repairing of CoreDNS fails")
def _write_resolv(self, resolv_conf: Path) -> None:
"""Update/Write resolv.conf file."""
nameservers = [f"{self.sys_docker.network.dns!s}", "127.0.0.11"]
# Read resolv config
data = self.resolv_template.render(servers=nameservers)
# Write config back to resolv
try:
resolv_conf.write_text(data)
except OSError as err:
_LOGGER.warning("Can't write/update %s: %s", resolv_conf, err)
return
_LOGGER.info("Updated %s", resolv_conf)

View File

@ -3,7 +3,7 @@ import asyncio
import logging
from .coresys import CoreSysAttributes
from .exceptions import HomeAssistantError, CoreDNSError
from .exceptions import AudioError, CliError, CoreDNSError, HomeAssistantError
_LOGGER: logging.Logger = logging.getLogger(__name__)
@ -258,7 +258,7 @@ class Tasks(CoreSysAttributes):
try:
await self.sys_audio.start()
except CoreDNSError:
except AudioError:
_LOGGER.error("Watchdog PulseAudio reanimation fails!")
async def _watchdog_cli_docker(self):
@ -270,5 +270,5 @@ class Tasks(CoreSysAttributes):
try:
await self.sys_cli.start()
except CoreDNSError:
except CliError:
_LOGGER.error("Watchdog cli reanimation fails!")