From c3305caabec31ea1a1977f7fac910fd07a68cdbb Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Fri, 19 Aug 2022 02:41:33 -0600 Subject: [PATCH] Provide slight speedup to RainMachine device lookup during service call (#76944) Fix --- homeassistant/components/rainmachine/__init__.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/rainmachine/__init__.py b/homeassistant/components/rainmachine/__init__.py index a5426552ae2..52de2e1c61a 100644 --- a/homeassistant/components/rainmachine/__init__.py +++ b/homeassistant/components/rainmachine/__init__.py @@ -159,11 +159,15 @@ def async_get_controller_for_service_call( device_id = call.data[CONF_DEVICE_ID] device_registry = dr.async_get(hass) - if device_entry := device_registry.async_get(device_id): - for entry in hass.config_entries.async_entries(DOMAIN): - if entry.entry_id in device_entry.config_entries: - data: RainMachineData = hass.data[DOMAIN][entry.entry_id] - return data.controller + if (device_entry := device_registry.async_get(device_id)) is None: + raise ValueError(f"Invalid RainMachine device ID: {device_id}") + + for entry_id in device_entry.config_entries: + if (entry := hass.config_entries.async_get_entry(entry_id)) is None: + continue + if entry.domain == DOMAIN: + data: RainMachineData = hass.data[DOMAIN][entry_id] + return data.controller raise ValueError(f"No controller for device ID: {device_id}")