1 """Support for the QNAP QSW update."""
3 from __future__
import annotations
5 from typing
import Any, Final
7 from aioqsw.const
import (
17 UpdateEntityDescription,
25 from .const
import DOMAIN, QSW_COORD_FW, QSW_UPDATE
26 from .coordinator
import QswFirmwareCoordinator
27 from .entity
import QswFirmwareEntity
29 UPDATE_TYPES: Final[tuple[UpdateEntityDescription, ...]] = (
31 device_class=UpdateDeviceClass.FIRMWARE,
32 entity_category=EntityCategory.CONFIG,
39 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
41 """Add QNAP QSW updates from a config_entry."""
42 coordinator: QswFirmwareCoordinator = hass.data[DOMAIN][entry.entry_id][
46 QswUpdate(coordinator, description, entry)
for description
in UPDATE_TYPES
51 """Define a QNAP QSW update."""
53 _attr_supported_features = UpdateEntityFeature.INSTALL
54 entity_description: UpdateEntityDescription
58 coordinator: QswFirmwareCoordinator,
59 description: UpdateEntityDescription,
68 QSD_FIRMWARE_INFO, QSD_VERSION
74 """Update attributes when the coordinator updates."""
80 """Update attributes."""
82 QSD_FIRMWARE_CHECK, QSD_VERSION
85 QSD_FIRMWARE_CHECK, QSD_DESCRIPTION
89 self, version: str |
None, backup: bool, **kwargs: Any
91 """Install an update."""
93 await self.coordinator.qsw.live_update()
Any get_device_value(self, str key, str subkey)
None __init__(self, QswFirmwareCoordinator coordinator, UpdateEntityDescription description, ConfigEntry entry)
None _handle_coordinator_update(self)
None async_install(self, str|None version, bool backup, **Any kwargs)
None _async_update_attrs(self)
str|None latest_version(self)
None async_write_ha_state(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)