From 57c58d81c0fc600ca3603e40067d39143e577315 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 21 Jul 2018 00:06:34 +0200 Subject: [PATCH 1/5] Bump version 117 --- hassio/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hassio/const.py b/hassio/const.py index a0e27a4f2..79a11ebf5 100644 --- a/hassio/const.py +++ b/hassio/const.py @@ -2,7 +2,7 @@ from pathlib import Path from ipaddress import ip_network -HASSIO_VERSION = '116' +HASSIO_VERSION = '117' URL_HASSIO_ADDONS = "https://github.com/home-assistant/hassio-addons" URL_HASSIO_VERSION = \ From f51c9704e0fe51ea2885fb99ef48b788aeedd2d1 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 21 Jul 2018 19:01:20 +0200 Subject: [PATCH 2/5] Fix timeout on freegeoip (#581) * Fix timeout on freegeoip * Update updater.py * Update supervisor.py * Update dt.py * Update hassos.py * Update core.py * Update hassos.py * Update supervisor.py * Update updater.py --- hassio/core.py | 1 + hassio/hassos.py | 3 ++- hassio/supervisor.py | 3 ++- hassio/updater.py | 3 ++- hassio/utils/dt.py | 3 ++- 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/hassio/core.py b/hassio/core.py index d7b846257..94c845965 100644 --- a/hassio/core.py +++ b/hassio/core.py @@ -25,6 +25,7 @@ class HassIO(CoreSysAttributes): if self.sys_config.timezone == 'UTC': self.sys_config.timezone = \ await fetch_timezone(self.sys_websession) + self.sys_loop.call_soon(self.sys_config.save_data) # Load Supervisor await self.sys_supervisor.load() diff --git a/hassio/hassos.py b/hassio/hassos.py index f48698d35..8eefba710 100644 --- a/hassio/hassos.py +++ b/hassio/hassos.py @@ -1,4 +1,5 @@ """HassOS support on supervisor.""" +import asyncio import logging from pathlib import Path @@ -92,7 +93,7 @@ class HassOS(CoreSysAttributes): _LOGGER.info("OTA update is downloaded on %s", raucb) return raucb - except aiohttp.ClientError as err: + except (aiohttp.ClientError, asyncio.TimeoutError) as err: _LOGGER.warning("Can't fetch versions from %s: %s", url, err) except OSError as err: diff --git a/hassio/supervisor.py b/hassio/supervisor.py index 6d11f9483..aaa467814 100644 --- a/hassio/supervisor.py +++ b/hassio/supervisor.py @@ -1,4 +1,5 @@ """HomeAssistant control object.""" +import asyncio import logging from pathlib import Path from tempfile import TemporaryDirectory @@ -60,7 +61,7 @@ class Supervisor(CoreSysAttributes): async with self.sys_websession.get(url, timeout=10) as request: data = await request.text() - except aiohttp.ClientError as err: + except (aiohttp.ClientError, asyncio.TimeoutError) as err: _LOGGER.warning("Can't fetch AppArmor profile: %s", err) return diff --git a/hassio/updater.py b/hassio/updater.py index fb8efe876..3d81cae58 100644 --- a/hassio/updater.py +++ b/hassio/updater.py @@ -1,4 +1,5 @@ """Fetch last versions from webserver.""" +import asyncio from contextlib import suppress from datetime import timedelta import json @@ -81,7 +82,7 @@ class Updater(JsonConfig, CoreSysAttributes): async with self.sys_websession.get(url, timeout=10) as request: data = await request.json(content_type=None) - except aiohttp.ClientError as err: + except (aiohttp.ClientError, asyncio.TimeoutError) as err: _LOGGER.warning("Can't fetch versions from %s: %s", url, err) raise HassioUpdaterError() from None diff --git a/hassio/utils/dt.py b/hassio/utils/dt.py index 66fa176bc..5415f80b0 100644 --- a/hassio/utils/dt.py +++ b/hassio/utils/dt.py @@ -1,4 +1,5 @@ """Tools file for HassIO.""" +import asyncio from datetime import datetime, timedelta, timezone import logging import re @@ -30,7 +31,7 @@ async def fetch_timezone(websession): async with websession.get(FREEGEOIP_URL, timeout=10) as request: data = await request.json() - except aiohttp.ClientError as err: + except (aiohttp.ClientError, asyncio.TimeoutError) as err: _LOGGER.warning("Can't fetch freegeoip data: %s", err) except ValueError as err: From fa9e20385ed7ac2e1c2fca36b46d65ab9e406c0b Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 21 Jul 2018 19:07:22 +0200 Subject: [PATCH 3/5] Bugfix passwrod (#584) --- hassio/homeassistant.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hassio/homeassistant.py b/hassio/homeassistant.py index 404b0686a..588d45ca1 100644 --- a/hassio/homeassistant.py +++ b/hassio/homeassistant.py @@ -393,7 +393,7 @@ class HomeAssistant(JsonConfig, CoreSysAttributes): headers[hdrs.AUTHORIZATION] = f'Bearer {self.access_token}' async with getattr(self.sys_websession_ssl, method)( - url, timeout=timeout, json=json + url, timeout=timeout, json=json, headers=headers ) as resp: # Access token expired if resp.status == 401 and self.refresh_token: From e3ae48c8ff1bc52e26c4e3081575e296760f9200 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 21 Jul 2018 19:45:11 +0200 Subject: [PATCH 4/5] Remove geo ip (#586) * Remove geo ip * Update core.py * Update dt.py --- hassio/core.py | 7 ------- hassio/utils/dt.py | 18 ------------------ 2 files changed, 25 deletions(-) diff --git a/hassio/core.py b/hassio/core.py index 94c845965..ad99bad35 100644 --- a/hassio/core.py +++ b/hassio/core.py @@ -7,7 +7,6 @@ from .coresys import CoreSysAttributes from .const import ( STARTUP_SYSTEM, STARTUP_SERVICES, STARTUP_APPLICATION, STARTUP_INITIALIZE) from .exceptions import HassioError -from .utils.dt import fetch_timezone _LOGGER = logging.getLogger(__name__) @@ -21,12 +20,6 @@ class HassIO(CoreSysAttributes): async def setup(self): """Setup HassIO orchestration.""" - # update timezone - if self.sys_config.timezone == 'UTC': - self.sys_config.timezone = \ - await fetch_timezone(self.sys_websession) - self.sys_loop.call_soon(self.sys_config.save_data) - # Load Supervisor await self.sys_supervisor.load() diff --git a/hassio/utils/dt.py b/hassio/utils/dt.py index 5415f80b0..c5ff11316 100644 --- a/hassio/utils/dt.py +++ b/hassio/utils/dt.py @@ -1,10 +1,8 @@ """Tools file for HassIO.""" -import asyncio from datetime import datetime, timedelta, timezone import logging import re -import aiohttp import pytz UTC = pytz.utc @@ -24,22 +22,6 @@ DATETIME_RE = re.compile( ) -async def fetch_timezone(websession): - """Read timezone from freegeoip.""" - data = {} - try: - async with websession.get(FREEGEOIP_URL, timeout=10) as request: - data = await request.json() - - except (aiohttp.ClientError, asyncio.TimeoutError) as err: - _LOGGER.warning("Can't fetch freegeoip data: %s", err) - - except ValueError as err: - _LOGGER.warning("Error on parse freegeoip data: %s", err) - - return data.get('time_zone', 'UTC') - - # Copyright (c) Django Software Foundation and individual contributors. # All rights reserved. # https://github.com/django/django/blob/master/LICENSE From fee858c956d4f4e1739d483cabc513c5c62523a4 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 21 Jul 2018 20:13:13 +0200 Subject: [PATCH 5/5] Fix exception is HomeAssistant allready running (#587) --- hassio/core.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hassio/core.py b/hassio/core.py index ad99bad35..656ab0cf8 100644 --- a/hassio/core.py +++ b/hassio/core.py @@ -6,7 +6,7 @@ import logging from .coresys import CoreSysAttributes from .const import ( STARTUP_SYSTEM, STARTUP_SERVICES, STARTUP_APPLICATION, STARTUP_INITIALIZE) -from .exceptions import HassioError +from .exceptions import HassioError, HomeAssistantError _LOGGER = logging.getLogger(__name__) @@ -87,7 +87,8 @@ class HassIO(CoreSysAttributes): # run HomeAssistant if self.sys_homeassistant.boot: - await self.sys_homeassistant.start() + with suppress(HomeAssistantError): + await self.sys_homeassistant.start() # start addon mark as application await self.sys_addons.boot(STARTUP_APPLICATION)