mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 12:47:08 +00:00
Explicitly pass in the config_entry in radarr coordinator (#137984)
explicitly pass in the config_entry in coordinator
This commit is contained in:
parent
a90d471be0
commit
106c5c661e
@ -2,12 +2,11 @@
|
|||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from dataclasses import dataclass, fields
|
from dataclasses import fields
|
||||||
|
|
||||||
from aiopyarr.models.host_configuration import PyArrHostConfiguration
|
from aiopyarr.models.host_configuration import PyArrHostConfiguration
|
||||||
from aiopyarr.radarr_client import RadarrClient
|
from aiopyarr.radarr_client import RadarrClient
|
||||||
|
|
||||||
from homeassistant.config_entries import ConfigEntry
|
|
||||||
from homeassistant.const import CONF_API_KEY, CONF_URL, CONF_VERIFY_SSL, Platform
|
from homeassistant.const import CONF_API_KEY, CONF_URL, CONF_VERIFY_SSL, Platform
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||||
@ -18,24 +17,13 @@ from .coordinator import (
|
|||||||
HealthDataUpdateCoordinator,
|
HealthDataUpdateCoordinator,
|
||||||
MoviesDataUpdateCoordinator,
|
MoviesDataUpdateCoordinator,
|
||||||
QueueDataUpdateCoordinator,
|
QueueDataUpdateCoordinator,
|
||||||
|
RadarrConfigEntry,
|
||||||
|
RadarrData,
|
||||||
RadarrDataUpdateCoordinator,
|
RadarrDataUpdateCoordinator,
|
||||||
StatusDataUpdateCoordinator,
|
StatusDataUpdateCoordinator,
|
||||||
)
|
)
|
||||||
|
|
||||||
PLATFORMS = [Platform.BINARY_SENSOR, Platform.CALENDAR, Platform.SENSOR]
|
PLATFORMS = [Platform.BINARY_SENSOR, Platform.CALENDAR, Platform.SENSOR]
|
||||||
type RadarrConfigEntry = ConfigEntry[RadarrData]
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass(kw_only=True, slots=True)
|
|
||||||
class RadarrData:
|
|
||||||
"""Radarr data type."""
|
|
||||||
|
|
||||||
calendar: CalendarUpdateCoordinator
|
|
||||||
disk_space: DiskSpaceDataUpdateCoordinator
|
|
||||||
health: HealthDataUpdateCoordinator
|
|
||||||
movie: MoviesDataUpdateCoordinator
|
|
||||||
queue: QueueDataUpdateCoordinator
|
|
||||||
status: StatusDataUpdateCoordinator
|
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(hass: HomeAssistant, entry: RadarrConfigEntry) -> bool:
|
async def async_setup_entry(hass: HomeAssistant, entry: RadarrConfigEntry) -> bool:
|
||||||
@ -50,12 +38,14 @@ async def async_setup_entry(hass: HomeAssistant, entry: RadarrConfigEntry) -> bo
|
|||||||
session=async_get_clientsession(hass, entry.data[CONF_VERIFY_SSL]),
|
session=async_get_clientsession(hass, entry.data[CONF_VERIFY_SSL]),
|
||||||
)
|
)
|
||||||
data = RadarrData(
|
data = RadarrData(
|
||||||
calendar=CalendarUpdateCoordinator(hass, host_configuration, radarr),
|
calendar=CalendarUpdateCoordinator(hass, entry, host_configuration, radarr),
|
||||||
disk_space=DiskSpaceDataUpdateCoordinator(hass, host_configuration, radarr),
|
disk_space=DiskSpaceDataUpdateCoordinator(
|
||||||
health=HealthDataUpdateCoordinator(hass, host_configuration, radarr),
|
hass, entry, host_configuration, radarr
|
||||||
movie=MoviesDataUpdateCoordinator(hass, host_configuration, radarr),
|
),
|
||||||
queue=QueueDataUpdateCoordinator(hass, host_configuration, radarr),
|
health=HealthDataUpdateCoordinator(hass, entry, host_configuration, radarr),
|
||||||
status=StatusDataUpdateCoordinator(hass, host_configuration, radarr),
|
movie=MoviesDataUpdateCoordinator(hass, entry, host_configuration, radarr),
|
||||||
|
queue=QueueDataUpdateCoordinator(hass, entry, host_configuration, radarr),
|
||||||
|
status=StatusDataUpdateCoordinator(hass, entry, host_configuration, radarr),
|
||||||
)
|
)
|
||||||
for field in fields(data):
|
for field in fields(data):
|
||||||
coordinator: RadarrDataUpdateCoordinator = getattr(data, field.name)
|
coordinator: RadarrDataUpdateCoordinator = getattr(data, field.name)
|
||||||
|
@ -13,8 +13,8 @@ from homeassistant.const import EntityCategory
|
|||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
|
|
||||||
from . import RadarrConfigEntry
|
|
||||||
from .const import HEALTH_ISSUES
|
from .const import HEALTH_ISSUES
|
||||||
|
from .coordinator import RadarrConfigEntry
|
||||||
from .entity import RadarrEntity
|
from .entity import RadarrEntity
|
||||||
|
|
||||||
BINARY_SENSOR_TYPE = BinarySensorEntityDescription(
|
BINARY_SENSOR_TYPE = BinarySensorEntityDescription(
|
||||||
|
@ -9,8 +9,7 @@ from homeassistant.core import HomeAssistant, callback
|
|||||||
from homeassistant.helpers.entity import EntityDescription
|
from homeassistant.helpers.entity import EntityDescription
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
|
|
||||||
from . import RadarrConfigEntry
|
from .coordinator import CalendarUpdateCoordinator, RadarrConfigEntry, RadarrEvent
|
||||||
from .coordinator import CalendarUpdateCoordinator, RadarrEvent
|
|
||||||
from .entity import RadarrEntity
|
from .entity import RadarrEntity
|
||||||
|
|
||||||
CALENDAR_TYPE = EntityDescription(
|
CALENDAR_TYPE = EntityDescription(
|
||||||
|
@ -6,7 +6,7 @@ from abc import ABC, abstractmethod
|
|||||||
import asyncio
|
import asyncio
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from datetime import date, datetime, timedelta
|
from datetime import date, datetime, timedelta
|
||||||
from typing import TYPE_CHECKING, Generic, TypeVar, cast
|
from typing import Generic, TypeVar, cast
|
||||||
|
|
||||||
from aiopyarr import (
|
from aiopyarr import (
|
||||||
Health,
|
Health,
|
||||||
@ -20,14 +20,27 @@ from aiopyarr.models.host_configuration import PyArrHostConfiguration
|
|||||||
from aiopyarr.radarr_client import RadarrClient
|
from aiopyarr.radarr_client import RadarrClient
|
||||||
|
|
||||||
from homeassistant.components.calendar import CalendarEvent
|
from homeassistant.components.calendar import CalendarEvent
|
||||||
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.exceptions import ConfigEntryAuthFailed
|
from homeassistant.exceptions import ConfigEntryAuthFailed
|
||||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
||||||
|
|
||||||
from .const import DEFAULT_MAX_RECORDS, DOMAIN, LOGGER
|
from .const import DEFAULT_MAX_RECORDS, DOMAIN, LOGGER
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
|
||||||
from . import RadarrConfigEntry
|
@dataclass(kw_only=True, slots=True)
|
||||||
|
class RadarrData:
|
||||||
|
"""Radarr data type."""
|
||||||
|
|
||||||
|
calendar: CalendarUpdateCoordinator
|
||||||
|
disk_space: DiskSpaceDataUpdateCoordinator
|
||||||
|
health: HealthDataUpdateCoordinator
|
||||||
|
movie: MoviesDataUpdateCoordinator
|
||||||
|
queue: QueueDataUpdateCoordinator
|
||||||
|
status: StatusDataUpdateCoordinator
|
||||||
|
|
||||||
|
|
||||||
|
type RadarrConfigEntry = ConfigEntry[RadarrData]
|
||||||
|
|
||||||
T = TypeVar("T", bound=SystemStatus | list[RootFolder] | list[Health] | int | None)
|
T = TypeVar("T", bound=SystemStatus | list[RootFolder] | list[Health] | int | None)
|
||||||
|
|
||||||
@ -53,6 +66,7 @@ class RadarrDataUpdateCoordinator(DataUpdateCoordinator[T], Generic[T], ABC):
|
|||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
|
config_entry: RadarrConfigEntry,
|
||||||
host_configuration: PyArrHostConfiguration,
|
host_configuration: PyArrHostConfiguration,
|
||||||
api_client: RadarrClient,
|
api_client: RadarrClient,
|
||||||
) -> None:
|
) -> None:
|
||||||
@ -60,6 +74,7 @@ class RadarrDataUpdateCoordinator(DataUpdateCoordinator[T], Generic[T], ABC):
|
|||||||
super().__init__(
|
super().__init__(
|
||||||
hass=hass,
|
hass=hass,
|
||||||
logger=LOGGER,
|
logger=LOGGER,
|
||||||
|
config_entry=config_entry,
|
||||||
name=DOMAIN,
|
name=DOMAIN,
|
||||||
update_interval=self._update_interval,
|
update_interval=self._update_interval,
|
||||||
)
|
)
|
||||||
@ -140,11 +155,12 @@ class CalendarUpdateCoordinator(RadarrDataUpdateCoordinator[None]):
|
|||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
hass: HomeAssistant,
|
hass: HomeAssistant,
|
||||||
|
config_entry: RadarrConfigEntry,
|
||||||
host_configuration: PyArrHostConfiguration,
|
host_configuration: PyArrHostConfiguration,
|
||||||
api_client: RadarrClient,
|
api_client: RadarrClient,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Initialize."""
|
"""Initialize."""
|
||||||
super().__init__(hass, host_configuration, api_client)
|
super().__init__(hass, config_entry, host_configuration, api_client)
|
||||||
self.event: RadarrEvent | None = None
|
self.event: RadarrEvent | None = None
|
||||||
self._events: list[RadarrEvent] = []
|
self._events: list[RadarrEvent] = []
|
||||||
|
|
||||||
|
@ -19,8 +19,7 @@ from homeassistant.const import EntityCategory, UnitOfInformation
|
|||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
|
|
||||||
from . import RadarrConfigEntry
|
from .coordinator import RadarrConfigEntry, RadarrDataUpdateCoordinator, T
|
||||||
from .coordinator import RadarrDataUpdateCoordinator, T
|
|
||||||
from .entity import RadarrEntity
|
from .entity import RadarrEntity
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user