Fix handling of dns resolution failure during sense setup (#88279)
``` 2023-02-16 20:44:54.516 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry alexander for sense Traceback (most recent call last): File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 1152, in _create_direct_connection hosts = await asyncio.shield(host_resolved) File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 1152, in _create_direct_connection hosts = await asyncio.shield(host_resolved) File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 861, in _resolve_host await event.wait() File "/usr/local/lib/python3.10/site-packages/aiohttp/locks.py", line 34, in wait raise self._exc File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 874, in _resolve_host addrs = await self._resolver.resolve(host, port, family=self._family) File "/usr/local/lib/python3.10/site-packages/aiohttp/resolver.py", line 33, in resolve infos = await self._loop.getaddrinfo( File "/usr/local/lib/python3.10/asyncio/base_events.py", line 860, in getaddrinfo return await self.run_in_executor( File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) File "/usr/local/lib/python3.10/socket.py", line 955, in getaddrinfo for res in _socket.getaddrinfo(host, port, family, type, proto, flags): socket.gaierror: [Errno -3] Try again The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/config_entries.py", line 381, in async_setup result = await component.async_setup_entry(hass, self) File "/usr/src/homeassistant/homeassistant/components/sense/__init__.py", line 83, in async_setup_entry await gateway.get_monitor_data() File "/usr/local/lib/python3.10/site-packages/sense_energy/asyncsenseable.py", line 214, in get_monitor_data json = await self._api_call("app/monitors/%s/overview" % self.sense_monitor_id) File "/usr/local/lib/python3.10/site-packages/sense_energy/asyncsenseable.py", line 174, in _api_call async with self._client_session.get( File "/usr/local/lib/python3.10/site-packages/aiohttp/client.py", line 1141, in __aenter__ self._resp = await self._coro File "/usr/local/lib/python3.10/site-packages/aiohttp/client.py", line 536, in _request conn = await self._connector.connect( File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 540, in connect proto = await self._create_connection(req, traces, timeout) File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 901, in _create_connection _, proto = await self._create_direct_connection(req, traces, timeout) File "/usr/local/lib/python3.10/site-packages/aiohttp/connector.py", line 1166, in _create_direct_connection raise ClientConnectorError(req.connection_key, exc) from exc aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host api.sense.com:443 ssl:default [Try again] ```
This commit is contained in:
parent
b9f29c27ab
commit
3212a43e6b
2 changed files with 7 additions and 6 deletions
|
@ -5,7 +5,6 @@ import logging
|
|||
|
||||
from sense_energy import (
|
||||
ASyncSenseable,
|
||||
SenseAPIException,
|
||||
SenseAuthenticationException,
|
||||
SenseMFARequiredException,
|
||||
)
|
||||
|
@ -27,13 +26,14 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
|
|||
from .const import (
|
||||
ACTIVE_UPDATE_RATE,
|
||||
DOMAIN,
|
||||
SENSE_CONNECT_EXCEPTIONS,
|
||||
SENSE_DATA,
|
||||
SENSE_DEVICE_UPDATE,
|
||||
SENSE_DEVICES_DATA,
|
||||
SENSE_DISCOVERED_DEVICES_DATA,
|
||||
SENSE_EXCEPTIONS,
|
||||
SENSE_TIMEOUT_EXCEPTIONS,
|
||||
SENSE_TRENDS_COORDINATOR,
|
||||
SENSE_WEBSOCKET_EXCEPTIONS,
|
||||
)
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
@ -88,7 +88,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||
raise ConfigEntryNotReady(
|
||||
str(err) or "Timed out during authentication"
|
||||
) from err
|
||||
except SenseAPIException as err:
|
||||
except SENSE_CONNECT_EXCEPTIONS as err:
|
||||
raise ConfigEntryNotReady(str(err)) from err
|
||||
|
||||
sense_devices_data = SenseDevicesData()
|
||||
|
@ -99,7 +99,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||
raise ConfigEntryNotReady(
|
||||
str(err) or "Timed out during realtime update"
|
||||
) from err
|
||||
except SENSE_EXCEPTIONS as err:
|
||||
except SENSE_WEBSOCKET_EXCEPTIONS as err:
|
||||
raise ConfigEntryNotReady(str(err) or "Error during realtime update") from err
|
||||
|
||||
async def _async_update_trend():
|
||||
|
@ -141,7 +141,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||
await gateway.update_realtime()
|
||||
except SENSE_TIMEOUT_EXCEPTIONS as ex:
|
||||
_LOGGER.error("Timeout retrieving data: %s", ex)
|
||||
except SENSE_EXCEPTIONS as ex:
|
||||
except SENSE_WEBSOCKET_EXCEPTIONS as ex:
|
||||
_LOGGER.error("Failed to update data: %s", ex)
|
||||
|
||||
data = gateway.get_realtime()
|
||||
|
|
|
@ -40,8 +40,9 @@ SOLAR_POWERED_NAME = "Solar Powered Percentage"
|
|||
SOLAR_POWERED_ID = "solar_powered"
|
||||
|
||||
SENSE_TIMEOUT_EXCEPTIONS = (asyncio.TimeoutError, SenseAPITimeoutException)
|
||||
SENSE_EXCEPTIONS = (socket.gaierror, SenseWebsocketException)
|
||||
SENSE_WEBSOCKET_EXCEPTIONS = (socket.gaierror, SenseWebsocketException)
|
||||
SENSE_CONNECT_EXCEPTIONS = (
|
||||
socket.gaierror,
|
||||
asyncio.TimeoutError,
|
||||
SenseAPITimeoutException,
|
||||
SenseAPIException,
|
||||
|
|
Loading…
Add table
Reference in a new issue