Skip to content

Commit 361a82f

Browse files
committed
Add a blog post improved error handling for oauth2 configuration without internet
1 parent fdacf2c commit 361a82f

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
author: Will Moss
3+
authorURL: https://github.com/wmoss
4+
title: "Improved error handling for oauth2 configuration without internet"
5+
---
6+
7+
Integrations using [Application Credentials](https://developers.home-assistant.io/docs/core/platform/application_credentials/) and [Configuration via OAuth2](https://developers.home-assistant.io/docs/config_entries_config_flow_handler/#configuration-via-oauth2) need to update their error handling to correctly handle configuration when the internet is down.
8+
9+
Currently integrations using configuration via OAuth2 call `config_entry_oauth2_flow.async_get_config_entry_implementation` in `async_setup_entry` in their `__init__.py`. Previously when there was no network, this would raise `ValueError: Implementation not available`, which was a non-retryable error, resulting in the integration needing to be manually reconfigured after internet was restored (see Issues [153956](https://github.com/home-assistant/core/issues/153956) and [144582](https://github.com/home-assistant/core/issues/144582)). [core PR 154579](https://github.com/home-assistant/core/pull/154579) added `config_entry_oauth2_flow.ImplementationUnavailableError` and raises it in `config_entry_oauth2_flow.async_get_config_entry_implementation` when OAuth2 configuration is unavailable because of missing internet. Integrations should catch this error and reraise `ConfigEntryNotReady`.
10+
11+
Here is an example of the migration,
12+
```diff
13+
- implementation = await async_get_config_entry_implementation(hass, entry)
14+
+ try:
15+
+ implementation = await async_get_config_entry_implementation(hass, entry)
16+
+ except ImplementationUnavailableError as err:
17+
+ raise ConfigEntryNotReady(
18+
+ "OAuth2 implementation temporarily unavailable, will retry"
19+
+ ) from err
20+
```
21+
22+
New integrations will find the correct `try` / `except` block generated by `python3 -m script.scaffold config_flow_oauth2`.

0 commit comments

Comments
 (0)