Move tailscale base entity to separate module (#126527)
This commit is contained in:
parent
60eba6d783
commit
46f9e86f6a
4 changed files with 54 additions and 48 deletions
|
@ -2,17 +2,9 @@
|
|||
|
||||
from __future__ import annotations
|
||||
|
||||
from tailscale import Device as TailscaleDevice
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import Platform
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
|
||||
from homeassistant.helpers.entity import EntityDescription
|
||||
from homeassistant.helpers.update_coordinator import (
|
||||
CoordinatorEntity,
|
||||
DataUpdateCoordinator,
|
||||
)
|
||||
|
||||
from .const import DOMAIN
|
||||
from .coordinator import TailscaleDataUpdateCoordinator
|
||||
|
@ -37,41 +29,3 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||
if unload_ok:
|
||||
del hass.data[DOMAIN][entry.entry_id]
|
||||
return unload_ok
|
||||
|
||||
|
||||
class TailscaleEntity(CoordinatorEntity):
|
||||
"""Defines a Tailscale base entity."""
|
||||
|
||||
_attr_has_entity_name = True
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
*,
|
||||
coordinator: DataUpdateCoordinator,
|
||||
device: TailscaleDevice,
|
||||
description: EntityDescription,
|
||||
) -> None:
|
||||
"""Initialize a Tailscale sensor."""
|
||||
super().__init__(coordinator=coordinator)
|
||||
self.entity_description = description
|
||||
self.device_id = device.device_id
|
||||
self._attr_unique_id = f"{device.device_id}_{description.key}"
|
||||
|
||||
@property
|
||||
def device_info(self) -> DeviceInfo:
|
||||
"""Return the device info."""
|
||||
device: TailscaleDevice = self.coordinator.data[self.device_id]
|
||||
|
||||
configuration_url = "https://login.tailscale.com/admin/machines/"
|
||||
if device.addresses:
|
||||
configuration_url += device.addresses[0]
|
||||
|
||||
return DeviceInfo(
|
||||
configuration_url=configuration_url,
|
||||
entry_type=DeviceEntryType.SERVICE,
|
||||
identifiers={(DOMAIN, device.device_id)},
|
||||
manufacturer="Tailscale Inc.",
|
||||
model=device.os,
|
||||
name=device.name.split(".")[0],
|
||||
sw_version=device.client_version,
|
||||
)
|
||||
|
|
|
@ -17,8 +17,8 @@ from homeassistant.const import EntityCategory
|
|||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from . import TailscaleEntity
|
||||
from .const import DOMAIN
|
||||
from .entity import TailscaleEntity
|
||||
|
||||
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
|
|
52
homeassistant/components/tailscale/entity.py
Normal file
52
homeassistant/components/tailscale/entity.py
Normal file
|
@ -0,0 +1,52 @@
|
|||
"""The Tailscale integration."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from tailscale import Device as TailscaleDevice
|
||||
|
||||
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
|
||||
from homeassistant.helpers.entity import EntityDescription
|
||||
from homeassistant.helpers.update_coordinator import (
|
||||
CoordinatorEntity,
|
||||
DataUpdateCoordinator,
|
||||
)
|
||||
|
||||
from .const import DOMAIN
|
||||
|
||||
|
||||
class TailscaleEntity(CoordinatorEntity):
|
||||
"""Defines a Tailscale base entity."""
|
||||
|
||||
_attr_has_entity_name = True
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
*,
|
||||
coordinator: DataUpdateCoordinator,
|
||||
device: TailscaleDevice,
|
||||
description: EntityDescription,
|
||||
) -> None:
|
||||
"""Initialize a Tailscale sensor."""
|
||||
super().__init__(coordinator=coordinator)
|
||||
self.entity_description = description
|
||||
self.device_id = device.device_id
|
||||
self._attr_unique_id = f"{device.device_id}_{description.key}"
|
||||
|
||||
@property
|
||||
def device_info(self) -> DeviceInfo:
|
||||
"""Return the device info."""
|
||||
device: TailscaleDevice = self.coordinator.data[self.device_id]
|
||||
|
||||
configuration_url = "https://login.tailscale.com/admin/machines/"
|
||||
if device.addresses:
|
||||
configuration_url += device.addresses[0]
|
||||
|
||||
return DeviceInfo(
|
||||
configuration_url=configuration_url,
|
||||
entry_type=DeviceEntryType.SERVICE,
|
||||
identifiers={(DOMAIN, device.device_id)},
|
||||
manufacturer="Tailscale Inc.",
|
||||
model=device.os,
|
||||
name=device.name.split(".")[0],
|
||||
sw_version=device.client_version,
|
||||
)
|
|
@ -18,8 +18,8 @@ from homeassistant.const import EntityCategory
|
|||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from . import TailscaleEntity
|
||||
from .const import DOMAIN
|
||||
from .entity import TailscaleEntity
|
||||
|
||||
|
||||
@dataclass(frozen=True, kw_only=True)
|
||||
|
|
Loading…
Add table
Reference in a new issue