mirror of
https://github.com/home-assistant/core.git
synced 2025-04-23 16:57:53 +00:00
Use runtime_data in ping (#118332)
This commit is contained in:
parent
76aa504e36
commit
2c99925286
@ -28,7 +28,9 @@ class PingDomainData:
|
||||
"""Dataclass to store privileged status."""
|
||||
|
||||
privileged: bool | None
|
||||
coordinators: dict[str, PingUpdateCoordinator]
|
||||
|
||||
|
||||
type PingConfigEntry = ConfigEntry[PingUpdateCoordinator]
|
||||
|
||||
|
||||
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
||||
@ -36,13 +38,12 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
||||
|
||||
hass.data[DOMAIN] = PingDomainData(
|
||||
privileged=await _can_use_icmp_lib_with_privilege(),
|
||||
coordinators={},
|
||||
)
|
||||
|
||||
return True
|
||||
|
||||
|
||||
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
async def async_setup_entry(hass: HomeAssistant, entry: PingConfigEntry) -> bool:
|
||||
"""Set up Ping (ICMP) from a config entry."""
|
||||
|
||||
data: PingDomainData = hass.data[DOMAIN]
|
||||
@ -60,7 +61,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
)
|
||||
await coordinator.async_config_entry_first_refresh()
|
||||
|
||||
data.coordinators[entry.entry_id] = coordinator
|
||||
entry.runtime_data = coordinator
|
||||
|
||||
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
||||
entry.async_on_unload(entry.add_update_listener(async_reload_entry))
|
||||
@ -68,19 +69,14 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
return True
|
||||
|
||||
|
||||
async def async_reload_entry(hass: HomeAssistant, entry: ConfigEntry) -> None:
|
||||
async def async_reload_entry(hass: HomeAssistant, entry: PingConfigEntry) -> None:
|
||||
"""Handle an options update."""
|
||||
await hass.config_entries.async_reload(entry.entry_id)
|
||||
|
||||
|
||||
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
async def async_unload_entry(hass: HomeAssistant, entry: PingConfigEntry) -> bool:
|
||||
"""Unload a config entry."""
|
||||
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
|
||||
if unload_ok:
|
||||
# drop coordinator for config entry
|
||||
hass.data[DOMAIN].coordinators.pop(entry.entry_id)
|
||||
|
||||
return unload_ok
|
||||
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
|
||||
|
||||
|
||||
async def _can_use_icmp_lib_with_privilege() -> bool | None:
|
||||
|
@ -20,7 +20,7 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
from homeassistant.helpers.issue_registry import IssueSeverity, async_create_issue
|
||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||
|
||||
from . import PingDomainData
|
||||
from . import PingConfigEntry
|
||||
from .const import CONF_IMPORTED_BY, CONF_PING_COUNT, DEFAULT_PING_COUNT, DOMAIN
|
||||
from .coordinator import PingUpdateCoordinator
|
||||
from .entity import PingEntity
|
||||
@ -76,13 +76,10 @@ async def async_setup_platform(
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
|
||||
hass: HomeAssistant, entry: PingConfigEntry, async_add_entities: AddEntitiesCallback
|
||||
) -> None:
|
||||
"""Set up a Ping config entry."""
|
||||
|
||||
data: PingDomainData = hass.data[DOMAIN]
|
||||
|
||||
async_add_entities([PingBinarySensor(entry, data.coordinators[entry.entry_id])])
|
||||
async_add_entities([PingBinarySensor(entry, entry.runtime_data)])
|
||||
|
||||
|
||||
class PingBinarySensor(PingEntity, BinarySensorEntity):
|
||||
|
@ -37,7 +37,7 @@ from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||
from homeassistant.helpers.update_coordinator import CoordinatorEntity
|
||||
from homeassistant.util import dt as dt_util
|
||||
|
||||
from . import PingDomainData
|
||||
from . import PingConfigEntry
|
||||
from .const import CONF_IMPORTED_BY, CONF_PING_COUNT, DOMAIN
|
||||
from .coordinator import PingUpdateCoordinator
|
||||
|
||||
@ -125,13 +125,10 @@ async def async_setup_scanner(
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
|
||||
hass: HomeAssistant, entry: PingConfigEntry, async_add_entities: AddEntitiesCallback
|
||||
) -> None:
|
||||
"""Set up a Ping config entry."""
|
||||
|
||||
data: PingDomainData = hass.data[DOMAIN]
|
||||
|
||||
async_add_entities([PingDeviceTracker(entry, data.coordinators[entry.entry_id])])
|
||||
async_add_entities([PingDeviceTracker(entry, entry.runtime_data)])
|
||||
|
||||
|
||||
class PingDeviceTracker(CoordinatorEntity[PingUpdateCoordinator], ScannerEntity):
|
||||
|
@ -14,8 +14,7 @@ from homeassistant.const import EntityCategory, UnitOfTime
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from . import PingDomainData
|
||||
from .const import DOMAIN
|
||||
from . import PingConfigEntry
|
||||
from .coordinator import PingResult, PingUpdateCoordinator
|
||||
from .entity import PingEntity
|
||||
|
||||
@ -77,11 +76,10 @@ SENSORS: tuple[PingSensorEntityDescription, ...] = (
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
|
||||
hass: HomeAssistant, entry: PingConfigEntry, async_add_entities: AddEntitiesCallback
|
||||
) -> None:
|
||||
"""Set up Ping sensors from config entry."""
|
||||
data: PingDomainData = hass.data[DOMAIN]
|
||||
coordinator = data.coordinators[entry.entry_id]
|
||||
coordinator = entry.runtime_data
|
||||
|
||||
async_add_entities(
|
||||
PingSensor(entry, description, coordinator)
|
||||
|
Loading…
x
Reference in New Issue
Block a user