From 06fa9f9a9e9da9e30a4b37689a0d08dfde9cbedd Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 21 Apr 2020 20:15:15 +0200 Subject: [PATCH 1/4] Bump version to 219 --- supervisor/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/supervisor/const.py b/supervisor/const.py index 802f36ae8..51602288b 100644 --- a/supervisor/const.py +++ b/supervisor/const.py @@ -3,7 +3,7 @@ from enum import Enum from ipaddress import ip_network from pathlib import Path -SUPERVISOR_VERSION = "218" +SUPERVISOR_VERSION = "219" URL_HASSIO_ADDONS = "https://github.com/home-assistant/hassio-addons" From ffa91e150dbcd3d2c1b8130fe53a9066b487598e Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 22 Apr 2020 11:06:49 +0200 Subject: [PATCH 2/4] Fix handling with reset/default on json (#1669) * Fix handling with reset/default on json * black --- supervisor/utils/json.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/supervisor/utils/json.py b/supervisor/utils/json.py index ecaa6fb7b..e69d612c2 100644 --- a/supervisor/utils/json.py +++ b/supervisor/utils/json.py @@ -11,6 +11,8 @@ from ..exceptions import JsonFileError _LOGGER: logging.Logger = logging.getLogger(__name__) +_DEFAULT: Dict[str, Any] = {} + def write_json_file(jsonfile: Path, data: Any) -> None: """Write a JSON file.""" @@ -37,7 +39,7 @@ class JsonConfig: """Initialize hass object.""" self._file: Path = json_file self._schema: vol.Schema = schema - self._data: Dict[str, Any] = {} + self._data: Dict[str, Any] = _DEFAULT self.read_data() @@ -68,7 +70,7 @@ class JsonConfig: # Reset data to default _LOGGER.warning("Reset %s to default", self._file) - self._data = self._schema({}) + self._data = self._schema(_DEFAULT) def save_data(self) -> None: """Store data to configuration file.""" @@ -80,6 +82,7 @@ class JsonConfig: # Load last valid data _LOGGER.warning("Reset %s to last version", self._file) + self._data = _DEFAULT self.read_data() else: # write From ebfaaeaa6bf69e599e7119c0c9b751b9cbb86129 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 22 Apr 2020 11:06:59 +0200 Subject: [PATCH 3/4] Improve the flow with fallback if there is a network issue (#1670) --- supervisor/core.py | 6 +++--- supervisor/homeassistant.py | 6 ++---- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/supervisor/core.py b/supervisor/core.py index f891b7d5a..f5c390312 100644 --- a/supervisor/core.py +++ b/supervisor/core.py @@ -34,9 +34,6 @@ class Core(CoreSysAttributes): """Setup supervisor orchestration.""" self.state = CoreStates.STARTUP - # load last available data - await self.sys_updater.load() - # Load DBus await self.sys_dbus.load() @@ -46,6 +43,9 @@ class Core(CoreSysAttributes): # Load Plugins container await self.sys_plugins.load() + # load last available data + await self.sys_updater.load() + # Load Home Assistant await self.sys_homeassistant.load() diff --git a/supervisor/homeassistant.py b/supervisor/homeassistant.py index decc49bf3..ace29c2a6 100644 --- a/supervisor/homeassistant.py +++ b/supervisor/homeassistant.py @@ -252,15 +252,13 @@ class HomeAssistant(JsonConfig, CoreSysAttributes): _LOGGER.info("Setup HomeAssistant landingpage") while True: try: - await self.instance.install( - "landingpage", image=self.sys_updater.image_homeassistant - ) + await self.instance.install("landingpage", image=self.image) except DockerAPIError: _LOGGER.warning("Fails install landingpage, retry after 30sec") await asyncio.sleep(30) else: self.version = self.instance.version - self.image = self.sys_updater.image_homeassistant + self.image = self.instance.image self.save_data() break From cc9f594ab4d4fa3a96863ed6a5eef98a85fbcba2 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 22 Apr 2020 11:26:53 +0200 Subject: [PATCH 4/4] Better initial image load handling (#1672) --- supervisor/homeassistant.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/supervisor/homeassistant.py b/supervisor/homeassistant.py index ace29c2a6..4a863ca38 100644 --- a/supervisor/homeassistant.py +++ b/supervisor/homeassistant.py @@ -251,14 +251,24 @@ class HomeAssistant(JsonConfig, CoreSysAttributes): """Install a landing page.""" _LOGGER.info("Setup HomeAssistant landingpage") while True: + if not self.sys_updater.image_homeassistant: + _LOGGER.warning( + "Found no information about Home Assistant. Retry in 15sec" + ) + await asyncio.sleep(15) + await self.sys_updater.reload() + continue + try: - await self.instance.install("landingpage", image=self.image) + await self.instance.install( + "landingpage", image=self.sys_updater.image_homeassistant + ) except DockerAPIError: _LOGGER.warning("Fails install landingpage, retry after 30sec") await asyncio.sleep(30) else: self.version = self.instance.version - self.image = self.instance.image + self.image = self.sys_updater.image_homeassistant self.save_data() break