diff --git a/hassio/const.py b/hassio/const.py index df1885582..3498b28d5 100644 --- a/hassio/const.py +++ b/hassio/const.py @@ -4,10 +4,9 @@ from ipaddress import ip_network HASSIO_VERSION = '105' -URL_HASSIO_VERSION = ('https://raw.githubusercontent.com/home-assistant/' - 'hassio/{}/version.json') - -URL_HASSIO_ADDONS = 'https://github.com/home-assistant/hassio-addons' +URL_HASSIO_ADDONS = "https://github.com/home-assistant/hassio-addons" +URL_HASSIO_VERSION = \ + "https://s3.amazonaws.com/hassio-version/{channel}.json" HASSIO_DATA = Path("/data") diff --git a/hassio/updater.py b/hassio/updater.py index 14ac30328..fbe22af12 100644 --- a/hassio/updater.py +++ b/hassio/updater.py @@ -1,15 +1,15 @@ """Fetch last versions from webserver.""" import asyncio +from contextlib import suppress from datetime import timedelta import json import logging import aiohttp -import async_timeout from .const import ( URL_HASSIO_VERSION, FILE_HASSIO_UPDATER, ATTR_HOMEASSISTANT, ATTR_HASSIO, - ATTR_CHANNEL, CHANNEL_STABLE, CHANNEL_BETA, CHANNEL_DEV) + ATTR_CHANNEL) from .coresys import CoreSysAttributes from .utils import AsyncThrottle from .utils.json import JsonConfig @@ -17,12 +17,6 @@ from .validate import SCHEMA_UPDATER_CONFIG _LOGGER = logging.getLogger(__name__) -CHANNEL_TO_BRANCH = { - CHANNEL_STABLE: 'master', - CHANNEL_BETA: 'rc', - CHANNEL_DEV: 'dev', -} - class Updater(JsonConfig, CoreSysAttributes): """Fetch last versions from version.json.""" @@ -65,12 +59,11 @@ class Updater(JsonConfig, CoreSysAttributes): Is a coroutine. """ - url = URL_HASSIO_VERSION.format(CHANNEL_TO_BRANCH[self.channel]) + url = URL_HASSIO_VERSION.format(channel=self.channel) try: _LOGGER.info("Fetch update data from %s", url) - with async_timeout.timeout(10): - async with self.sys_websession.get(url) as request: - data = await request.json(content_type=None) + async with self.sys_websession.get(url, timeout=10) as request: + data = await request.json(content_type=None) except (aiohttp.ClientError, asyncio.TimeoutError, KeyError) as err: _LOGGER.warning("Can't fetch versions from %s: %s", url, err) @@ -81,11 +74,18 @@ class Updater(JsonConfig, CoreSysAttributes): return # data valid? - if not data: + if not data or data.get(ATTR_CHANNEL) != self.channel: _LOGGER.warning("Invalid data from %s", url) return - # update versions - self._data[ATTR_HOMEASSISTANT] = data.get('homeassistant') - self._data[ATTR_HASSIO] = data.get('hassio') + # update supervisor versions + with suppress(KeyError): + self._data[ATTR_HASSIO] = data['supervisor'] + + # update Home Assistant version + machine = self.sys_machine or 'default' + with suppress(KeyError): + self._data[ATTR_HOMEASSISTANT] = \ + data['homeassistant'][machine] + self.save_data()