From a277d0c4b518a14b48625c6b76c1b684daf692c0 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 5 Mar 2024 05:01:31 -1000 Subject: [PATCH] Migrate system flows to use the discovery helper (#112291) Ensures we are not creating new flows or loading their platforms until the started event once the import executor has clamed down --- homeassistant/components/cloud/__init__.py | 6 ++++-- homeassistant/components/hassio/__init__.py | 22 ++++++++++----------- homeassistant/config_entries.py | 1 + 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/homeassistant/components/cloud/__init__.py b/homeassistant/components/cloud/__init__.py index 888e99e3a34..5a393b35961 100644 --- a/homeassistant/components/cloud/__init__.py +++ b/homeassistant/components/cloud/__init__.py @@ -11,7 +11,7 @@ from hass_nabucasa import Cloud import voluptuous as vol from homeassistant.components import alexa, google_assistant -from homeassistant.config_entries import ConfigEntry +from homeassistant.config_entries import SOURCE_SYSTEM, ConfigEntry from homeassistant.const import ( CONF_DESCRIPTION, CONF_MODE, @@ -304,7 +304,9 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: return loaded = True - await hass.config_entries.flow.async_init(DOMAIN, context={"source": "system"}) + await hass.config_entries.flow.async_init( + DOMAIN, context={"source": SOURCE_SYSTEM} + ) async def _on_connect() -> None: """Handle cloud connect.""" diff --git a/homeassistant/components/hassio/__init__.py b/homeassistant/components/hassio/__init__.py index 5355c5bb16c..cd1c6e735ef 100644 --- a/homeassistant/components/hassio/__init__.py +++ b/homeassistant/components/hassio/__init__.py @@ -14,7 +14,7 @@ import voluptuous as vol from homeassistant.auth.const import GROUP_ID_ADMIN from homeassistant.components import panel_custom from homeassistant.components.homeassistant import async_set_stop_handler -from homeassistant.config_entries import ConfigEntry +from homeassistant.config_entries import SOURCE_SYSTEM, ConfigEntry from homeassistant.const import ( ATTR_NAME, EVENT_CORE_CONFIG_UPDATE, @@ -30,7 +30,11 @@ from homeassistant.core import ( callback, ) from homeassistant.exceptions import HomeAssistantError -from homeassistant.helpers import config_validation as cv, device_registry as dr +from homeassistant.helpers import ( + config_validation as cv, + device_registry as dr, + discovery_flow, +) from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.event import async_call_later from homeassistant.helpers.storage import Store @@ -490,11 +494,8 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: # noqa: return if (hw_integration := HARDWARE_INTEGRATIONS.get(board)) is None: return - hass.async_create_task( - hass.config_entries.flow.async_init( - hw_integration, context={"source": "system"} - ), - eager_start=True, + discovery_flow.async_create_flow( + hass, hw_integration, context={"source": SOURCE_SYSTEM}, data={} ) async_setup_hardware_integration_job = HassJob( @@ -502,12 +503,9 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: # noqa: ) _async_setup_hardware_integration() - - hass.async_create_task( - hass.config_entries.flow.async_init(DOMAIN, context={"source": "system"}), - eager_start=True, + discovery_flow.async_create_flow( + hass, DOMAIN, context={"source": SOURCE_SYSTEM}, data={} ) - return True diff --git a/homeassistant/config_entries.py b/homeassistant/config_entries.py index e6fe5d5d70b..e6402696010 100644 --- a/homeassistant/config_entries.py +++ b/homeassistant/config_entries.py @@ -87,6 +87,7 @@ SOURCE_IMPORT = "import" SOURCE_INTEGRATION_DISCOVERY = "integration_discovery" SOURCE_MQTT = "mqtt" SOURCE_SSDP = "ssdp" +SOURCE_SYSTEM = "system" SOURCE_USB = "usb" SOURCE_USER = "user" SOURCE_ZEROCONF = "zeroconf"