From 5ba70ef2cbce2e7026f91428913cae82be57d8b7 Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Mon, 27 Nov 2023 09:19:58 +0100 Subject: [PATCH] Fix AccessDeniedException handling in Renault (#104574) --- homeassistant/components/renault/coordinator.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/renault/coordinator.py b/homeassistant/components/renault/coordinator.py index d101b551dfe..f8e6a21823a 100644 --- a/homeassistant/components/renault/coordinator.py +++ b/homeassistant/components/renault/coordinator.py @@ -45,6 +45,7 @@ class RenaultDataUpdateCoordinator(DataUpdateCoordinator[T]): ) self.access_denied = False self.not_supported = False + self._has_already_worked = False async def _async_update_data(self) -> T: """Fetch the latest data from the source.""" @@ -52,11 +53,16 @@ class RenaultDataUpdateCoordinator(DataUpdateCoordinator[T]): raise NotImplementedError("Update method not implemented") try: async with _PARALLEL_SEMAPHORE: - return await self.update_method() + data = await self.update_method() + self._has_already_worked = True + return data + except AccessDeniedException as err: - # Disable because the account is not allowed to access this Renault endpoint. - self.update_interval = None - self.access_denied = True + # This can mean both a temporary error or a permanent error. If it has + # worked before, make it temporary, if not disable the update interval. + if not self._has_already_worked: + self.update_interval = None + self.access_denied = True raise UpdateFailed(f"This endpoint is denied: {err}") from err except NotSupportedException as err: