Migrate qnap to use runtime_data (#167198)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
epenet
2026-04-02 14:47:09 +02:00
committed by GitHub
co-authored by Claude Opus 4.6
parent 0e521eda2e
commit 7f23a35155
3 changed files with 15 additions and 22 deletions
+7 -13
View File
@@ -2,33 +2,27 @@
from __future__ import annotations
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from .const import DOMAIN
from .coordinator import QnapCoordinator
from .coordinator import QnapConfigEntry, QnapCoordinator
PLATFORMS: list[Platform] = [
Platform.SENSOR,
]
async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool:
async def async_setup_entry(hass: HomeAssistant, config_entry: QnapConfigEntry) -> bool:
"""Set the config entry up."""
hass.data.setdefault(DOMAIN, {})
coordinator = QnapCoordinator(hass, config_entry)
# Fetch initial data so we have data when entities subscribe
await coordinator.async_config_entry_first_refresh()
hass.data[DOMAIN][config_entry.entry_id] = coordinator
config_entry.runtime_data = coordinator
await hass.config_entries.async_forward_entry_setups(config_entry, PLATFORMS)
return True
async def async_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool:
async def async_unload_entry(
hass: HomeAssistant, config_entry: QnapConfigEntry
) -> bool:
"""Unload a config entry."""
if unload_ok := await hass.config_entries.async_unload_platforms(
config_entry, PLATFORMS
):
hass.data[DOMAIN].pop(config_entry.entry_id)
return unload_ok
return await hass.config_entries.async_unload_platforms(config_entry, PLATFORMS)
+5 -1
View File
@@ -26,6 +26,8 @@ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
from .const import DOMAIN
type QnapConfigEntry = ConfigEntry[QnapCoordinator]
UPDATE_INTERVAL = timedelta(minutes=1)
_LOGGER = logging.getLogger(__name__)
@@ -46,7 +48,9 @@ def suppress_insecure_request_warning():
class QnapCoordinator(DataUpdateCoordinator[dict[str, dict[str, Any]]]):
"""Custom coordinator for the qnap integration."""
def __init__(self, hass: HomeAssistant, config_entry: ConfigEntry) -> None:
config_entry: QnapConfigEntry
def __init__(self, hass: HomeAssistant, config_entry: QnapConfigEntry) -> None:
"""Initialize the qnap coordinator."""
super().__init__(
hass,
+3 -8
View File
@@ -5,7 +5,6 @@ from __future__ import annotations
from datetime import timedelta
from typing import Any
from homeassistant import config_entries
from homeassistant.components.sensor import (
SensorDeviceClass,
SensorEntity,
@@ -20,14 +19,13 @@ from homeassistant.const import (
UnitOfTemperature,
)
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import PlatformNotReady
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from homeassistant.util import dt as dt_util
from .const import DOMAIN
from .coordinator import QnapCoordinator
from .coordinator import QnapConfigEntry, QnapCoordinator
ATTR_DRIVE = "Drive"
ATTR_IP = "IP Address"
@@ -247,14 +245,11 @@ SENSOR_KEYS: list[str] = [
async def async_setup_entry(
hass: HomeAssistant,
config_entry: config_entries.ConfigEntry,
config_entry: QnapConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Set up entry."""
coordinator = QnapCoordinator(hass, config_entry)
await coordinator.async_refresh()
if not coordinator.last_update_success:
raise PlatformNotReady
coordinator = config_entry.runtime_data
uid = config_entry.unique_id
assert uid is not None
sensors: list[QNAPSensor] = []