From 962dd81eb7617653ad70004e73880befd581e24e Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Thu, 16 May 2024 11:45:22 +0200 Subject: [PATCH] Move upcloud coordinator to separate module (#117536) --- homeassistant/components/upcloud/__init__.py | 40 +-------------- .../components/upcloud/coordinator.py | 49 +++++++++++++++++++ 2 files changed, 51 insertions(+), 38 deletions(-) create mode 100644 homeassistant/components/upcloud/coordinator.py diff --git a/homeassistant/components/upcloud/__init__.py b/homeassistant/components/upcloud/__init__.py index 371dedab49c..4b65406f312 100644 --- a/homeassistant/components/upcloud/__init__.py +++ b/homeassistant/components/upcloud/__init__.py @@ -27,12 +27,10 @@ from homeassistant.helpers.dispatcher import ( async_dispatcher_connect, async_dispatcher_send, ) -from homeassistant.helpers.update_coordinator import ( - CoordinatorEntity, - DataUpdateCoordinator, -) +from homeassistant.helpers.update_coordinator import CoordinatorEntity from .const import CONFIG_ENTRY_UPDATE_SIGNAL_TEMPLATE, DEFAULT_SCAN_INTERVAL, DOMAIN +from .coordinator import UpCloudDataUpdateCoordinator _LOGGER = logging.getLogger(__name__) @@ -56,40 +54,6 @@ SIGNAL_UPDATE_UPCLOUD = "upcloud_update" STATE_MAP = {"error": STATE_PROBLEM, "started": STATE_ON, "stopped": STATE_OFF} -class UpCloudDataUpdateCoordinator( - DataUpdateCoordinator[dict[str, upcloud_api.Server]] -): # pylint: disable=hass-enforce-coordinator-module - """UpCloud data update coordinator.""" - - def __init__( - self, - hass: HomeAssistant, - *, - cloud_manager: upcloud_api.CloudManager, - update_interval: timedelta, - username: str, - ) -> None: - """Initialize coordinator.""" - super().__init__( - hass, _LOGGER, name=f"{username}@UpCloud", update_interval=update_interval - ) - self.cloud_manager = cloud_manager - - async def async_update_config(self, config_entry: ConfigEntry) -> None: - """Handle config update.""" - self.update_interval = timedelta( - seconds=config_entry.options[CONF_SCAN_INTERVAL] - ) - - async def _async_update_data(self) -> dict[str, upcloud_api.Server]: - return { - x.uuid: x - for x in await self.hass.async_add_executor_job( - self.cloud_manager.get_servers - ) - } - - @dataclasses.dataclass class UpCloudHassData: """Home Assistant UpCloud runtime data.""" diff --git a/homeassistant/components/upcloud/coordinator.py b/homeassistant/components/upcloud/coordinator.py new file mode 100644 index 00000000000..e10128a30e4 --- /dev/null +++ b/homeassistant/components/upcloud/coordinator.py @@ -0,0 +1,49 @@ +"""Coordinator for UpCloud.""" + +from __future__ import annotations + +from datetime import timedelta +import logging + +import upcloud_api + +from homeassistant.config_entries import ConfigEntry +from homeassistant.const import CONF_SCAN_INTERVAL +from homeassistant.core import HomeAssistant +from homeassistant.helpers.update_coordinator import DataUpdateCoordinator + +_LOGGER = logging.getLogger(__name__) + + +class UpCloudDataUpdateCoordinator( + DataUpdateCoordinator[dict[str, upcloud_api.Server]] +): + """UpCloud data update coordinator.""" + + def __init__( + self, + hass: HomeAssistant, + *, + cloud_manager: upcloud_api.CloudManager, + update_interval: timedelta, + username: str, + ) -> None: + """Initialize coordinator.""" + super().__init__( + hass, _LOGGER, name=f"{username}@UpCloud", update_interval=update_interval + ) + self.cloud_manager = cloud_manager + + async def async_update_config(self, config_entry: ConfigEntry) -> None: + """Handle config update.""" + self.update_interval = timedelta( + seconds=config_entry.options[CONF_SCAN_INTERVAL] + ) + + async def _async_update_data(self) -> dict[str, upcloud_api.Server]: + return { + x.uuid: x + for x in await self.hass.async_add_executor_job( + self.cloud_manager.get_servers + ) + }