Use runtime_data in webmin (#117058)

This commit is contained in:
Sid 2024-05-08 09:04:20 +02:00 committed by GitHub
parent 40be1424b5
commit dc1aba0a05
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 14 additions and 18 deletions

View File

@ -4,27 +4,25 @@ from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform from homeassistant.const import Platform
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from .const import DOMAIN
from .coordinator import WebminUpdateCoordinator from .coordinator import WebminUpdateCoordinator
PLATFORMS = [Platform.SENSOR] PLATFORMS = [Platform.SENSOR]
WebminConfigEntry = ConfigEntry[WebminUpdateCoordinator]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_setup_entry(hass: HomeAssistant, entry: WebminConfigEntry) -> bool:
"""Set up Webmin from a config entry.""" """Set up Webmin from a config entry."""
coordinator = WebminUpdateCoordinator(hass, entry) coordinator = WebminUpdateCoordinator(hass, entry)
await coordinator.async_config_entry_first_refresh() await coordinator.async_config_entry_first_refresh()
await coordinator.async_setup() await coordinator.async_setup()
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator entry.runtime_data = coordinator
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_unload_entry(hass: HomeAssistant, entry: WebminConfigEntry) -> bool:
"""Unload a config entry.""" """Unload a config entry."""
if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS): return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok

View File

@ -3,12 +3,10 @@
from typing import Any from typing import Any
from homeassistant.components.diagnostics import async_redact_data from homeassistant.components.diagnostics import async_redact_data
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_UNIQUE_ID, CONF_USERNAME from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_UNIQUE_ID, CONF_USERNAME
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from .const import DOMAIN from . import WebminConfigEntry
from .coordinator import WebminUpdateCoordinator
TO_REDACT = { TO_REDACT = {
CONF_HOST, CONF_HOST,
@ -27,10 +25,9 @@ TO_REDACT = {
async def async_get_config_entry_diagnostics( async def async_get_config_entry_diagnostics(
hass: HomeAssistant, entry: ConfigEntry hass: HomeAssistant, entry: WebminConfigEntry
) -> dict[str, Any]: ) -> dict[str, Any]:
"""Return diagnostics for a config entry.""" """Return diagnostics for a config entry."""
coordinator: WebminUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
return async_redact_data( return async_redact_data(
{"entry": entry.as_dict(), "data": coordinator.data}, TO_REDACT {"entry": entry.as_dict(), "data": entry.runtime_data.data}, TO_REDACT
) )

View File

@ -8,13 +8,12 @@ from homeassistant.components.sensor import (
SensorEntityDescription, SensorEntityDescription,
SensorStateClass, SensorStateClass,
) )
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import UnitOfInformation from homeassistant.const import 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 homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN from . import WebminConfigEntry
from .coordinator import WebminUpdateCoordinator from .coordinator import WebminUpdateCoordinator
SENSOR_TYPES: list[SensorEntityDescription] = [ SENSOR_TYPES: list[SensorEntityDescription] = [
@ -80,10 +79,12 @@ SENSOR_TYPES: list[SensorEntityDescription] = [
async def async_setup_entry( async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback hass: HomeAssistant,
entry: WebminConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None: ) -> None:
"""Set up Webmin sensors based on a config entry.""" """Set up Webmin sensors based on a config entry."""
coordinator: WebminUpdateCoordinator = hass.data[DOMAIN][entry.entry_id] coordinator = entry.runtime_data
async_add_entities( async_add_entities(
WebminSensor(coordinator, description) WebminSensor(coordinator, description)
for description in SENSOR_TYPES for description in SENSOR_TYPES