Read version from AWS (#488)

* Read version from AWS

* Update const.py

* Update updater.py

* Update updater.py

* Update updater.py

* Update updater.py

* Update updater.py

* Update const.py

* Update updater.py
This commit is contained in:
Pascal Vizeli 2018-05-29 19:14:09 +02:00 committed by GitHub
parent 124e487ef7
commit fe155a4ff0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 20 deletions

View File

@ -4,10 +4,9 @@ from ipaddress import ip_network
HASSIO_VERSION = '105' HASSIO_VERSION = '105'
URL_HASSIO_VERSION = ('https://raw.githubusercontent.com/home-assistant/' URL_HASSIO_ADDONS = "https://github.com/home-assistant/hassio-addons"
'hassio/{}/version.json') URL_HASSIO_VERSION = \
"https://s3.amazonaws.com/hassio-version/{channel}.json"
URL_HASSIO_ADDONS = 'https://github.com/home-assistant/hassio-addons'
HASSIO_DATA = Path("/data") HASSIO_DATA = Path("/data")

View File

@ -1,15 +1,15 @@
"""Fetch last versions from webserver.""" """Fetch last versions from webserver."""
import asyncio import asyncio
from contextlib import suppress
from datetime import timedelta from datetime import timedelta
import json import json
import logging import logging
import aiohttp import aiohttp
import async_timeout
from .const import ( from .const import (
URL_HASSIO_VERSION, FILE_HASSIO_UPDATER, ATTR_HOMEASSISTANT, ATTR_HASSIO, 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 .coresys import CoreSysAttributes
from .utils import AsyncThrottle from .utils import AsyncThrottle
from .utils.json import JsonConfig from .utils.json import JsonConfig
@ -17,12 +17,6 @@ from .validate import SCHEMA_UPDATER_CONFIG
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
CHANNEL_TO_BRANCH = {
CHANNEL_STABLE: 'master',
CHANNEL_BETA: 'rc',
CHANNEL_DEV: 'dev',
}
class Updater(JsonConfig, CoreSysAttributes): class Updater(JsonConfig, CoreSysAttributes):
"""Fetch last versions from version.json.""" """Fetch last versions from version.json."""
@ -65,12 +59,11 @@ class Updater(JsonConfig, CoreSysAttributes):
Is a coroutine. Is a coroutine.
""" """
url = URL_HASSIO_VERSION.format(CHANNEL_TO_BRANCH[self.channel]) url = URL_HASSIO_VERSION.format(channel=self.channel)
try: try:
_LOGGER.info("Fetch update data from %s", url) _LOGGER.info("Fetch update data from %s", url)
with async_timeout.timeout(10): async with self.sys_websession.get(url, timeout=10) as request:
async with self.sys_websession.get(url) as request: data = await request.json(content_type=None)
data = await request.json(content_type=None)
except (aiohttp.ClientError, asyncio.TimeoutError, KeyError) as err: except (aiohttp.ClientError, asyncio.TimeoutError, KeyError) as err:
_LOGGER.warning("Can't fetch versions from %s: %s", url, err) _LOGGER.warning("Can't fetch versions from %s: %s", url, err)
@ -81,11 +74,18 @@ class Updater(JsonConfig, CoreSysAttributes):
return return
# data valid? # data valid?
if not data: if not data or data.get(ATTR_CHANNEL) != self.channel:
_LOGGER.warning("Invalid data from %s", url) _LOGGER.warning("Invalid data from %s", url)
return return
# update versions # update supervisor versions
self._data[ATTR_HOMEASSISTANT] = data.get('homeassistant') with suppress(KeyError):
self._data[ATTR_HASSIO] = data.get('hassio') 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() self.save_data()