mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 19:27:45 +00:00
Do not set hass data before first coordinator refresh (#97343)
This commit is contained in:
parent
49b9dd2a4f
commit
db4c9c67a2
@ -64,6 +64,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
f"Unable to connect to {entry.data[CONF_IP_ADDRESS]}"
|
f"Unable to connect to {entry.data[CONF_IP_ADDRESS]}"
|
||||||
) from err
|
) from err
|
||||||
|
|
||||||
|
hass.data[DOMAIN][entry.entry_id] = {"device": device}
|
||||||
|
|
||||||
async def async_update_connected_plc_devices() -> LogicalNetwork:
|
async def async_update_connected_plc_devices() -> LogicalNetwork:
|
||||||
"""Fetch data from API endpoint."""
|
"""Fetch data from API endpoint."""
|
||||||
assert device.plcnet
|
assert device.plcnet
|
||||||
@ -155,11 +157,11 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
update_interval=SHORT_UPDATE_INTERVAL,
|
update_interval=SHORT_UPDATE_INTERVAL,
|
||||||
)
|
)
|
||||||
|
|
||||||
hass.data[DOMAIN][entry.entry_id] = {"device": device, "coordinators": coordinators}
|
|
||||||
|
|
||||||
for coordinator in coordinators.values():
|
for coordinator in coordinators.values():
|
||||||
await coordinator.async_config_entry_first_refresh()
|
await coordinator.async_config_entry_first_refresh()
|
||||||
|
|
||||||
|
hass.data[DOMAIN][entry.entry_id]["coordinators"] = coordinators
|
||||||
|
|
||||||
await hass.config_entries.async_forward_entry_setups(entry, platforms(device))
|
await hass.config_entries.async_forward_entry_setups(entry, platforms(device))
|
||||||
|
|
||||||
entry.async_on_unload(
|
entry.async_on_unload(
|
||||||
|
@ -50,22 +50,21 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
except SessionError as error:
|
except SessionError as error:
|
||||||
raise UpdateFailed(error) from error
|
raise UpdateFailed(error) from error
|
||||||
|
|
||||||
|
coordinator = DataUpdateCoordinator(
|
||||||
|
hass,
|
||||||
|
_LOGGER,
|
||||||
|
name=DOMAIN,
|
||||||
|
update_method=async_update_data,
|
||||||
|
update_interval=SCAN_INTERVAL,
|
||||||
|
)
|
||||||
|
await coordinator.async_config_entry_first_refresh()
|
||||||
|
|
||||||
hass.data.setdefault(DOMAIN, {})
|
hass.data.setdefault(DOMAIN, {})
|
||||||
hass.data[DOMAIN][entry.entry_id] = {
|
hass.data[DOMAIN][entry.entry_id] = {
|
||||||
COORDINATOR: DataUpdateCoordinator(
|
COORDINATOR: coordinator,
|
||||||
hass,
|
|
||||||
_LOGGER,
|
|
||||||
name=DOMAIN,
|
|
||||||
update_method=async_update_data,
|
|
||||||
update_interval=SCAN_INTERVAL,
|
|
||||||
),
|
|
||||||
UNDO_UPDATE_LISTENER: entry.add_update_listener(update_listener),
|
UNDO_UPDATE_LISTENER: entry.add_update_listener(update_listener),
|
||||||
}
|
}
|
||||||
|
|
||||||
await hass.data[DOMAIN][entry.entry_id][
|
|
||||||
COORDINATOR
|
|
||||||
].async_config_entry_first_refresh()
|
|
||||||
|
|
||||||
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
@ -43,6 +43,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
):
|
):
|
||||||
raise ConfigEntryAuthFailed("Missing UPnP configuration")
|
raise ConfigEntryAuthFailed("Missing UPnP configuration")
|
||||||
|
|
||||||
|
await avm_wrapper.async_config_entry_first_refresh()
|
||||||
|
|
||||||
hass.data.setdefault(DOMAIN, {})
|
hass.data.setdefault(DOMAIN, {})
|
||||||
hass.data[DOMAIN][entry.entry_id] = avm_wrapper
|
hass.data[DOMAIN][entry.entry_id] = avm_wrapper
|
||||||
|
|
||||||
@ -51,8 +53,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
|
|
||||||
entry.async_on_unload(entry.add_update_listener(update_listener))
|
entry.async_on_unload(entry.add_update_listener(update_listener))
|
||||||
|
|
||||||
await avm_wrapper.async_config_entry_first_refresh()
|
|
||||||
|
|
||||||
# Load the other platforms like switch
|
# Load the other platforms like switch
|
||||||
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
||||||
|
|
||||||
|
@ -647,8 +647,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
"""Set up a config entry."""
|
"""Set up a config entry."""
|
||||||
dev_reg = dr.async_get(hass)
|
dev_reg = dr.async_get(hass)
|
||||||
coordinator = HassioDataUpdateCoordinator(hass, entry, dev_reg)
|
coordinator = HassioDataUpdateCoordinator(hass, entry, dev_reg)
|
||||||
hass.data[ADDONS_COORDINATOR] = coordinator
|
|
||||||
await coordinator.async_config_entry_first_refresh()
|
await coordinator.async_config_entry_first_refresh()
|
||||||
|
hass.data[ADDONS_COORDINATOR] = coordinator
|
||||||
|
|
||||||
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
||||||
|
|
||||||
|
@ -87,13 +87,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
update_interval=timedelta(seconds=30),
|
update_interval=timedelta(seconds=30),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
await coordinator.async_config_entry_first_refresh()
|
||||||
|
|
||||||
hass.data[DOMAIN][entry.entry_id] = {
|
hass.data[DOMAIN][entry.entry_id] = {
|
||||||
JUICENET_API: juicenet,
|
JUICENET_API: juicenet,
|
||||||
JUICENET_COORDINATOR: coordinator,
|
JUICENET_COORDINATOR: coordinator,
|
||||||
}
|
}
|
||||||
|
|
||||||
await coordinator.async_config_entry_first_refresh()
|
|
||||||
|
|
||||||
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
@ -26,10 +26,10 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
api = ultraheat_api.HeatMeterService(reader)
|
api = ultraheat_api.HeatMeterService(reader)
|
||||||
|
|
||||||
coordinator = UltraheatCoordinator(hass, api)
|
coordinator = UltraheatCoordinator(hass, api)
|
||||||
|
await coordinator.async_config_entry_first_refresh()
|
||||||
|
|
||||||
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator
|
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator
|
||||||
|
|
||||||
await coordinator.async_config_entry_first_refresh()
|
|
||||||
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
@ -35,10 +35,11 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
)
|
)
|
||||||
coordinator = LoqedDataCoordinator(hass, api, lock, entry)
|
coordinator = LoqedDataCoordinator(hass, api, lock, entry)
|
||||||
await coordinator.ensure_webhooks()
|
await coordinator.ensure_webhooks()
|
||||||
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator
|
|
||||||
|
|
||||||
await coordinator.async_config_entry_first_refresh()
|
await coordinator.async_config_entry_first_refresh()
|
||||||
|
|
||||||
|
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator
|
||||||
|
|
||||||
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@ -73,8 +73,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
update_interval=update_interval,
|
update_interval=update_interval,
|
||||||
)
|
)
|
||||||
|
|
||||||
hass.data[DOMAIN][conn_type][key] = data_coordinator
|
|
||||||
await data_coordinator.async_config_entry_first_refresh()
|
await data_coordinator.async_config_entry_first_refresh()
|
||||||
|
hass.data[DOMAIN][conn_type][key] = data_coordinator
|
||||||
|
|
||||||
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
||||||
return True
|
return True
|
||||||
|
@ -50,10 +50,11 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
ncm,
|
ncm,
|
||||||
entry,
|
entry,
|
||||||
)
|
)
|
||||||
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator
|
|
||||||
|
|
||||||
await coordinator.async_config_entry_first_refresh()
|
await coordinator.async_config_entry_first_refresh()
|
||||||
|
|
||||||
|
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator
|
||||||
|
|
||||||
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
@ -145,7 +145,7 @@ class NextDnsConnectionUpdateCoordinator(NextDnsUpdateCoordinator[ConnectionStat
|
|||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
PLATFORMS = [Platform.BINARY_SENSOR, Platform.BUTTON, Platform.SENSOR, Platform.SWITCH]
|
PLATFORMS = [Platform.BINARY_SENSOR, Platform.BUTTON, Platform.SENSOR, Platform.SWITCH]
|
||||||
COORDINATORS = [
|
COORDINATORS: list[tuple[str, type[NextDnsUpdateCoordinator], timedelta]] = [
|
||||||
(ATTR_CONNECTION, NextDnsConnectionUpdateCoordinator, UPDATE_INTERVAL_CONNECTION),
|
(ATTR_CONNECTION, NextDnsConnectionUpdateCoordinator, UPDATE_INTERVAL_CONNECTION),
|
||||||
(ATTR_DNSSEC, NextDnsDnssecUpdateCoordinator, UPDATE_INTERVAL_ANALYTICS),
|
(ATTR_DNSSEC, NextDnsDnssecUpdateCoordinator, UPDATE_INTERVAL_ANALYTICS),
|
||||||
(ATTR_ENCRYPTION, NextDnsEncryptionUpdateCoordinator, UPDATE_INTERVAL_ANALYTICS),
|
(ATTR_ENCRYPTION, NextDnsEncryptionUpdateCoordinator, UPDATE_INTERVAL_ANALYTICS),
|
||||||
@ -168,24 +168,20 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
except (ApiError, ClientConnectorError, asyncio.TimeoutError) as err:
|
except (ApiError, ClientConnectorError, asyncio.TimeoutError) as err:
|
||||||
raise ConfigEntryNotReady from err
|
raise ConfigEntryNotReady from err
|
||||||
|
|
||||||
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = {}
|
|
||||||
|
|
||||||
tasks = []
|
tasks = []
|
||||||
|
coordinators = {}
|
||||||
|
|
||||||
# Independent DataUpdateCoordinator is used for each API endpoint to avoid
|
# Independent DataUpdateCoordinator is used for each API endpoint to avoid
|
||||||
# unnecessary requests when entities using this endpoint are disabled.
|
# unnecessary requests when entities using this endpoint are disabled.
|
||||||
for coordinator_name, coordinator_class, update_interval in COORDINATORS:
|
for coordinator_name, coordinator_class, update_interval in COORDINATORS:
|
||||||
hass.data[DOMAIN][entry.entry_id][coordinator_name] = coordinator_class(
|
coordinator = coordinator_class(hass, nextdns, profile_id, update_interval)
|
||||||
hass, nextdns, profile_id, update_interval
|
tasks.append(coordinator.async_config_entry_first_refresh())
|
||||||
)
|
coordinators[coordinator_name] = coordinator
|
||||||
tasks.append(
|
|
||||||
hass.data[DOMAIN][entry.entry_id][
|
|
||||||
coordinator_name
|
|
||||||
].async_config_entry_first_refresh()
|
|
||||||
)
|
|
||||||
|
|
||||||
await asyncio.gather(*tasks)
|
await asyncio.gather(*tasks)
|
||||||
|
|
||||||
|
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinators
|
||||||
|
|
||||||
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
@ -123,14 +123,14 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
update_interval=MIN_TIME_BETWEEN_UPDATES,
|
update_interval=MIN_TIME_BETWEEN_UPDATES,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
await coordinator.async_config_entry_first_refresh()
|
||||||
|
|
||||||
hass.data.setdefault(DOMAIN, {})
|
hass.data.setdefault(DOMAIN, {})
|
||||||
hass.data[DOMAIN][entry.entry_id] = {
|
hass.data[DOMAIN][entry.entry_id] = {
|
||||||
DATA_KEY_API: api,
|
DATA_KEY_API: api,
|
||||||
DATA_KEY_COORDINATOR: coordinator,
|
DATA_KEY_COORDINATOR: coordinator,
|
||||||
}
|
}
|
||||||
|
|
||||||
await coordinator.async_config_entry_first_refresh()
|
|
||||||
|
|
||||||
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
@ -55,8 +55,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
update_method=async_update_data,
|
update_method=async_update_data,
|
||||||
update_interval=timedelta(seconds=30),
|
update_interval=timedelta(seconds=30),
|
||||||
)
|
)
|
||||||
hass.data[DOMAIN][entry.entry_id] = coordinator
|
|
||||||
await coordinator.async_config_entry_first_refresh()
|
await coordinator.async_config_entry_first_refresh()
|
||||||
|
hass.data[DOMAIN][entry.entry_id] = coordinator
|
||||||
if isinstance(coordinator.last_exception, SyncThruAPINotSupported):
|
if isinstance(coordinator.last_exception, SyncThruAPINotSupported):
|
||||||
# this means that the printer does not support the syncthru JSON API
|
# this means that the printer does not support the syncthru JSON API
|
||||||
# and the config should simply be discarded
|
# and the config should simply be discarded
|
||||||
|
@ -70,12 +70,12 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
|
|
||||||
volvo_data = VolvoData(hass, connection, entry)
|
volvo_data = VolvoData(hass, connection, entry)
|
||||||
|
|
||||||
coordinator = hass.data[DOMAIN][entry.entry_id] = VolvoUpdateCoordinator(
|
coordinator = VolvoUpdateCoordinator(hass, volvo_data)
|
||||||
hass, volvo_data
|
|
||||||
)
|
|
||||||
|
|
||||||
await coordinator.async_config_entry_first_refresh()
|
await coordinator.async_config_entry_first_refresh()
|
||||||
|
|
||||||
|
hass.data[DOMAIN][entry.entry_id] = coordinator
|
||||||
|
|
||||||
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
Loading…
x
Reference in New Issue
Block a user