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