core/homeassistant/components/tailscale/entity.py

53 lines
1.6 KiB
Python

"""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,
)