diff --git a/API.md b/API.md index 100faedaa..7a6e7c14c 100644 --- a/API.md +++ b/API.md @@ -474,6 +474,7 @@ Get all available addons. "name": "xy bla", "slug": "xdssd_xybla", "hostname": "xdssd-xybla", + "dns": [], "description": "description", "long_description": "null|markdown", "auto_update": "bool", diff --git a/hassio/addons/addon.py b/hassio/addons/addon.py index d694bd916..1cd4769ba 100644 --- a/hassio/addons/addon.py +++ b/hassio/addons/addon.py @@ -9,7 +9,7 @@ import secrets import shutil import tarfile from tempfile import TemporaryDirectory -from typing import Any, Awaitable, Dict, Optional +from typing import Any, Awaitable, Dict, List, Optional import voluptuous as vol from voluptuous.humanize import humanize_error @@ -35,6 +35,7 @@ from ..const import ( ATTR_USER, ATTR_UUID, ATTR_VERSION, + DNS_SUFFIX, STATE_NONE, STATE_STARTED, STATE_STOPPED, @@ -119,6 +120,11 @@ class Addon(AddonModel): """Return installed version.""" return self.persist[ATTR_VERSION] + @property + def dns(self) -> List[str]: + """Return list of DNS name for that add-on.""" + return [f"{self.hostname}.{DNS_SUFFIX}"] + @property def options(self) -> Dict[str, Any]: """Return options with local changes.""" diff --git a/hassio/addons/model.py b/hassio/addons/model.py index b1b77197f..8c185f24f 100644 --- a/hassio/addons/model.py +++ b/hassio/addons/model.py @@ -114,6 +114,11 @@ class AddonModel(CoreSysAttributes): """Return slug/id of add-on.""" return self.slug.replace("_", "-") + @property + def dns(self) -> List[str]: + """Return list of DNS name for that add-on.""" + return [] + @property def timeout(self) -> int: """Return timeout of addon for docker stop.""" diff --git a/hassio/api/addons.py b/hassio/api/addons.py index 1b7c8429b..ddd524408 100644 --- a/hassio/api/addons.py +++ b/hassio/api/addons.py @@ -30,6 +30,7 @@ from ..const import ( ATTR_DEVICES, ATTR_DEVICETREE, ATTR_DISCOVERY, + ATTR_DNS, ATTR_DOCKER_API, ATTR_FULL_ACCESS, ATTR_GPIO, @@ -182,6 +183,7 @@ class APIAddons(CoreSysAttributes): ATTR_NAME: addon.name, ATTR_SLUG: addon.slug, ATTR_HOSTNAME: addon.hostname, + ATTR_DNS: addon.dns, ATTR_DESCRIPTON: addon.description, ATTR_LONG_DESCRIPTION: addon.long_description, ATTR_AUTO_UPDATE: None,