From f8e636228375e443f6e953737d3ef304d9e8f2d9 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 8 Jan 2018 14:55:13 +0100 Subject: [PATCH] Improve supervisor update handling (#300) * Improve supervisor update handling * fix message position --- hassio/core.py | 7 ++++--- hassio/supervisor.py | 5 +++++ hassio/tasks.py | 6 +++--- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/hassio/core.py b/hassio/core.py index 771699e01..b947c1ade 100644 --- a/hassio/core.py +++ b/hassio/core.py @@ -54,8 +54,9 @@ class HassIO(CoreSysAttributes): """Start HassIO orchestration.""" # on release channel, try update itself # on beta channel, only read new versions - if not self._updater.beta_channel: - await self._supervisor.update() + if not self._updater.beta_channel and self._supervisor.need_update: + if await self._supervisor.update(): + return else: _LOGGER.info("Ignore Hass.io auto updates on beta mode") @@ -93,7 +94,7 @@ class HassIO(CoreSysAttributes): if self._homeassistant.version == 'landingpage': self._loop.create_task(self._homeassistant.install()) - _LOGGER.info("Hass.io is up and running") + _LOGGER.info("Hass.io is up and running") async def stop(self): """Stop a running orchestration.""" diff --git a/hassio/supervisor.py b/hassio/supervisor.py index e8556a95e..f2740b45a 100644 --- a/hassio/supervisor.py +++ b/hassio/supervisor.py @@ -21,6 +21,11 @@ class Supervisor(CoreSysAttributes): _LOGGER.fatal("Can't setup supervisor docker container!") await self.instance.cleanup() + @property + def need_update(self): + """Return True if a update is available.""" + return self.version != self.last_version + @property def version(self): """Return version of running homeassistant.""" diff --git a/hassio/tasks.py b/hassio/tasks.py index cade45e92..2ca22ef86 100644 --- a/hassio/tasks.py +++ b/hassio/tasks.py @@ -32,7 +32,6 @@ class Tasks(CoreSysAttributes): async def load(self): """Add Tasks to scheduler.""" - self.jobs.add(self._scheduler.register_task( self._update_addons, self.RUN_UPDATE_ADDONS)) self.jobs.add(self._scheduler.register_task( @@ -54,6 +53,8 @@ class Tasks(CoreSysAttributes): self._watchdog_homeassistant_api, self.RUN_WATCHDOG_HOMEASSISTANT_API)) + _LOGGER.info("All core tasks are scheduled") + async def _cleanup_sessions(self): """Cleanup old api sessions.""" now = datetime.now() @@ -83,8 +84,7 @@ class Tasks(CoreSysAttributes): async def _update_supervisor(self): """Check and run update of supervisor hassio.""" - await self._updater.reload() - if self._supervisor.last_version == self._supervisor.version: + if not self._supervisor.need_update: return # don't perform a update on beta/dev channel