mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 14:17:45 +00:00
Explicitly pass in the config_entry in lidarr coordinator (#138111)
explicitly pass in the config_entry in coordinator
This commit is contained in:
parent
e1ed46f593
commit
9be5976807
@ -2,12 +2,11 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass, fields
|
||||
from dataclasses import fields
|
||||
|
||||
from aiopyarr.lidarr_client import LidarrClient
|
||||
from aiopyarr.models.host_configuration import PyArrHostConfiguration
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import CONF_API_KEY, CONF_URL, CONF_VERIFY_SSL, Platform
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import device_registry as dr
|
||||
@ -18,27 +17,16 @@ from .const import DEFAULT_NAME, DOMAIN
|
||||
from .coordinator import (
|
||||
AlbumsDataUpdateCoordinator,
|
||||
DiskSpaceDataUpdateCoordinator,
|
||||
LidarrConfigEntry,
|
||||
LidarrData,
|
||||
QueueDataUpdateCoordinator,
|
||||
StatusDataUpdateCoordinator,
|
||||
WantedDataUpdateCoordinator,
|
||||
)
|
||||
|
||||
type LidarrConfigEntry = ConfigEntry[LidarrData]
|
||||
|
||||
PLATFORMS = [Platform.SENSOR]
|
||||
|
||||
|
||||
@dataclass(kw_only=True, slots=True)
|
||||
class LidarrData:
|
||||
"""Lidarr data type."""
|
||||
|
||||
disk_space: DiskSpaceDataUpdateCoordinator
|
||||
queue: QueueDataUpdateCoordinator
|
||||
status: StatusDataUpdateCoordinator
|
||||
wanted: WantedDataUpdateCoordinator
|
||||
albums: AlbumsDataUpdateCoordinator
|
||||
|
||||
|
||||
async def async_setup_entry(hass: HomeAssistant, entry: LidarrConfigEntry) -> bool:
|
||||
"""Set up Lidarr from a config entry."""
|
||||
host_configuration = PyArrHostConfiguration(
|
||||
@ -52,11 +40,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: LidarrConfigEntry) -> bo
|
||||
request_timeout=60,
|
||||
)
|
||||
data = LidarrData(
|
||||
disk_space=DiskSpaceDataUpdateCoordinator(hass, host_configuration, lidarr),
|
||||
queue=QueueDataUpdateCoordinator(hass, host_configuration, lidarr),
|
||||
status=StatusDataUpdateCoordinator(hass, host_configuration, lidarr),
|
||||
wanted=WantedDataUpdateCoordinator(hass, host_configuration, lidarr),
|
||||
albums=AlbumsDataUpdateCoordinator(hass, host_configuration, lidarr),
|
||||
disk_space=DiskSpaceDataUpdateCoordinator(
|
||||
hass, entry, host_configuration, lidarr
|
||||
),
|
||||
queue=QueueDataUpdateCoordinator(hass, entry, host_configuration, lidarr),
|
||||
status=StatusDataUpdateCoordinator(hass, entry, host_configuration, lidarr),
|
||||
wanted=WantedDataUpdateCoordinator(hass, entry, host_configuration, lidarr),
|
||||
albums=AlbumsDataUpdateCoordinator(hass, entry, host_configuration, lidarr),
|
||||
)
|
||||
for field in fields(data):
|
||||
coordinator = getattr(data, field.name)
|
||||
|
@ -3,6 +3,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from abc import ABC, abstractmethod
|
||||
from dataclasses import dataclass
|
||||
from datetime import timedelta
|
||||
from typing import Generic, TypeVar, cast
|
||||
|
||||
@ -17,17 +18,32 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, Upda
|
||||
|
||||
from .const import DEFAULT_MAX_RECORDS, DOMAIN, LOGGER
|
||||
|
||||
|
||||
@dataclass(kw_only=True, slots=True)
|
||||
class LidarrData:
|
||||
"""Lidarr data type."""
|
||||
|
||||
disk_space: DiskSpaceDataUpdateCoordinator
|
||||
queue: QueueDataUpdateCoordinator
|
||||
status: StatusDataUpdateCoordinator
|
||||
wanted: WantedDataUpdateCoordinator
|
||||
albums: AlbumsDataUpdateCoordinator
|
||||
|
||||
|
||||
T = TypeVar("T", bound=list[LidarrRootFolder] | LidarrQueue | str | LidarrAlbum | int)
|
||||
|
||||
type LidarrConfigEntry = ConfigEntry[LidarrData]
|
||||
|
||||
|
||||
class LidarrDataUpdateCoordinator(DataUpdateCoordinator[T], Generic[T], ABC):
|
||||
"""Data update coordinator for the Lidarr integration."""
|
||||
|
||||
config_entry: ConfigEntry
|
||||
config_entry: LidarrConfigEntry
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
hass: HomeAssistant,
|
||||
config_entry: LidarrConfigEntry,
|
||||
host_configuration: PyArrHostConfiguration,
|
||||
api_client: LidarrClient,
|
||||
) -> None:
|
||||
@ -35,6 +51,7 @@ class LidarrDataUpdateCoordinator(DataUpdateCoordinator[T], Generic[T], ABC):
|
||||
super().__init__(
|
||||
hass=hass,
|
||||
logger=LOGGER,
|
||||
config_entry=config_entry,
|
||||
name=DOMAIN,
|
||||
update_interval=timedelta(seconds=30),
|
||||
)
|
||||
|
@ -18,9 +18,8 @@ from homeassistant.const import UnitOfInformation
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from . import LidarrConfigEntry
|
||||
from .const import BYTE_SIZES
|
||||
from .coordinator import LidarrDataUpdateCoordinator, T
|
||||
from .coordinator import LidarrConfigEntry, LidarrDataUpdateCoordinator, T
|
||||
from .entity import LidarrEntity
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user