Home Assistant Unofficial Reference 2024.12.1
coordinator.py
Go to the documentation of this file.
1 """Coordinator for UpCloud."""
2 
3 from __future__ import annotations
4 
5 from datetime import timedelta
6 import logging
7 
8 import upcloud_api
9 
10 from homeassistant.config_entries import ConfigEntry
11 from homeassistant.const import CONF_SCAN_INTERVAL
12 from homeassistant.core import HomeAssistant
13 from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
14 
15 _LOGGER = logging.getLogger(__name__)
16 
17 
19  DataUpdateCoordinator[dict[str, upcloud_api.Server]]
20 ):
21  """UpCloud data update coordinator."""
22 
23  def __init__(
24  self,
25  hass: HomeAssistant,
26  *,
27  cloud_manager: upcloud_api.CloudManager,
28  update_interval: timedelta,
29  username: str,
30  ) -> None:
31  """Initialize coordinator."""
32  super().__init__(
33  hass, _LOGGER, name=f"{username}@UpCloud", update_interval=update_interval
34  )
35  self.cloud_managercloud_manager = cloud_manager
36 
37  async def async_update_config(self, config_entry: ConfigEntry) -> None:
38  """Handle config update."""
40  seconds=config_entry.options[CONF_SCAN_INTERVAL]
41  )
42 
43  async def _async_update_data(self) -> dict[str, upcloud_api.Server]:
44  return {
45  x.uuid: x
46  for x in await self.hasshass.async_add_executor_job(
47  self.cloud_managercloud_manager.get_servers
48  )
49  }
None __init__(self, HomeAssistant hass, *upcloud_api.CloudManager cloud_manager, timedelta update_interval, str username)
Definition: coordinator.py:30