From 9128dc198ab861963ae2237c5d4b4a356b52e384 Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Tue, 18 Jun 2024 12:10:11 +0200 Subject: [PATCH] Centralize lidarr device creation (#119822) --- homeassistant/components/lidarr/__init__.py | 22 +++++++++---------- .../components/lidarr/coordinator.py | 1 - 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/homeassistant/components/lidarr/__init__.py b/homeassistant/components/lidarr/__init__.py index ee2369a6bc4..e7935501650 100644 --- a/homeassistant/components/lidarr/__init__.py +++ b/homeassistant/components/lidarr/__init__.py @@ -10,6 +10,7 @@ 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 from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo from homeassistant.helpers.entity import EntityDescription @@ -58,14 +59,18 @@ async def async_setup_entry(hass: HomeAssistant, entry: LidarrConfigEntry) -> bo status=StatusDataUpdateCoordinator(hass, host_configuration, lidarr), wanted=WantedDataUpdateCoordinator(hass, host_configuration, lidarr), ) - # Temporary, until we add diagnostic entities - _version = None for field in fields(data): coordinator = getattr(data, field.name) await coordinator.async_config_entry_first_refresh() - if isinstance(coordinator, StatusDataUpdateCoordinator): - _version = coordinator.data - coordinator.system_version = _version + device_registry = dr.async_get(hass) + device_registry.async_get_or_create( + config_entry_id=entry.entry_id, + configuration_url=entry.data[CONF_URL], + entry_type=DeviceEntryType.SERVICE, + identifiers={(DOMAIN, entry.entry_id)}, + manufacturer=DEFAULT_NAME, + sw_version=data.status.data, + ) entry.runtime_data = data await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) @@ -92,10 +97,5 @@ class LidarrEntity(CoordinatorEntity[LidarrDataUpdateCoordinator[T]]): self.entity_description = description self._attr_unique_id = f"{coordinator.config_entry.entry_id}_{description.key}" self._attr_device_info = DeviceInfo( - configuration_url=coordinator.host_configuration.base_url, - entry_type=DeviceEntryType.SERVICE, - identifiers={(DOMAIN, coordinator.config_entry.entry_id)}, - manufacturer=DEFAULT_NAME, - name=coordinator.config_entry.title, - sw_version=coordinator.system_version, + identifiers={(DOMAIN, coordinator.config_entry.entry_id)} ) diff --git a/homeassistant/components/lidarr/coordinator.py b/homeassistant/components/lidarr/coordinator.py index 8b3116055d4..2f18e4f0ebb 100644 --- a/homeassistant/components/lidarr/coordinator.py +++ b/homeassistant/components/lidarr/coordinator.py @@ -40,7 +40,6 @@ class LidarrDataUpdateCoordinator(DataUpdateCoordinator[T], Generic[T], ABC): ) self.api_client = api_client self.host_configuration = host_configuration - self.system_version: str | None = None async def _async_update_data(self) -> T: """Get the latest data from Lidarr."""