Home Assistant Unofficial Reference 2024.12.1
__init__.py
Go to the documentation of this file.
1 """The QNAP QSW integration."""
2 
3 from __future__ import annotations
4 
5 import logging
6 
7 from aioqsw.localapi import ConnectionOptions, QnapQswApi
8 
9 from homeassistant.config_entries import ConfigEntry
10 from homeassistant.const import CONF_PASSWORD, CONF_URL, CONF_USERNAME, Platform
11 from homeassistant.core import HomeAssistant
12 from homeassistant.exceptions import ConfigEntryNotReady
13 from homeassistant.helpers import aiohttp_client
14 
15 from .const import DOMAIN, QSW_COORD_DATA, QSW_COORD_FW
16 from .coordinator import QswDataCoordinator, QswFirmwareCoordinator
17 
18 _LOGGER = logging.getLogger(__name__)
19 
20 PLATFORMS: list[Platform] = [
21  Platform.BINARY_SENSOR,
22  Platform.BUTTON,
23  Platform.SENSOR,
24  Platform.UPDATE,
25 ]
26 
27 
28 async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
29  """Set up QNAP QSW from a config entry."""
30  options = ConnectionOptions(
31  entry.data[CONF_URL],
32  entry.data[CONF_USERNAME],
33  entry.data[CONF_PASSWORD],
34  )
35 
36  qsw = QnapQswApi(aiohttp_client.async_get_clientsession(hass), options)
37 
38  coord_data = QswDataCoordinator(hass, qsw)
39  await coord_data.async_config_entry_first_refresh()
40 
41  coord_fw = QswFirmwareCoordinator(hass, qsw)
42  try:
43  await coord_fw.async_config_entry_first_refresh()
44  except ConfigEntryNotReady as error:
45  _LOGGER.warning(error)
46 
47  hass.data.setdefault(DOMAIN, {})[entry.entry_id] = {
48  QSW_COORD_DATA: coord_data,
49  QSW_COORD_FW: coord_fw,
50  }
51 
52  await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
53 
54  return True
55 
56 
57 async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
58  """Unload a config entry."""
59  if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
60  hass.data[DOMAIN].pop(entry.entry_id)
61 
62  return unload_ok
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)
Definition: __init__.py:57
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)
Definition: __init__.py:28