From f1392f85191830f0cf6e428ab2966fb32e37e078 Mon Sep 17 00:00:00 2001 From: Robert Svensson Date: Mon, 29 Jan 2024 21:39:15 +0100 Subject: [PATCH] Try to reconnect to UniFi on 403 (#109067) --- homeassistant/components/unifi/__init__.py | 5 +++-- homeassistant/components/unifi/controller.py | 9 +-------- tests/components/unifi/test_controller.py | 2 +- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/homeassistant/components/unifi/__init__.py b/homeassistant/components/unifi/__init__.py index 4337899a50f..e435b68fc39 100644 --- a/homeassistant/components/unifi/__init__.py +++ b/homeassistant/components/unifi/__init__.py @@ -36,8 +36,6 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> b try: api = await get_unifi_controller(hass, config_entry.data) - controller = UniFiController(hass, config_entry, api) - await controller.initialize() except CannotConnect as err: raise ConfigEntryNotReady from err @@ -45,7 +43,10 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> b except AuthenticationRequired as err: raise ConfigEntryAuthFailed from err + controller = UniFiController(hass, config_entry, api) + await controller.initialize() hass.data[UNIFI_DOMAIN][config_entry.entry_id] = controller + await hass.config_entries.async_forward_entry_setups(config_entry, PLATFORMS) controller.async_update_device_registry() diff --git a/homeassistant/components/unifi/controller.py b/homeassistant/components/unifi/controller.py index 833d2001980..de97631c036 100644 --- a/homeassistant/components/unifi/controller.py +++ b/homeassistant/components/unifi/controller.py @@ -501,6 +501,7 @@ async def get_unifi_controller( except ( asyncio.TimeoutError, aiounifi.BadGateway, + aiounifi.Forbidden, aiounifi.ServiceUnavailable, aiounifi.RequestError, aiounifi.ResponseError, @@ -510,14 +511,6 @@ async def get_unifi_controller( ) raise CannotConnect from err - except aiounifi.Forbidden as err: - LOGGER.warning( - "Access forbidden to UniFi Network at %s, check access rights: %s", - config[CONF_HOST], - err, - ) - raise AuthenticationRequired from err - except aiounifi.LoginRequired as err: LOGGER.warning( "Connected to UniFi Network at %s but login required: %s", diff --git a/tests/components/unifi/test_controller.py b/tests/components/unifi/test_controller.py index 268f4e8493a..8953351f9fe 100644 --- a/tests/components/unifi/test_controller.py +++ b/tests/components/unifi/test_controller.py @@ -461,11 +461,11 @@ async def test_get_unifi_controller_verify_ssl_false(hass: HomeAssistant) -> Non [ (asyncio.TimeoutError, CannotConnect), (aiounifi.BadGateway, CannotConnect), + (aiounifi.Forbidden, CannotConnect), (aiounifi.ServiceUnavailable, CannotConnect), (aiounifi.RequestError, CannotConnect), (aiounifi.ResponseError, CannotConnect), (aiounifi.Unauthorized, AuthenticationRequired), - (aiounifi.Forbidden, AuthenticationRequired), (aiounifi.LoginRequired, AuthenticationRequired), (aiounifi.AiounifiException, AuthenticationRequired), ],