1 """The Ruckus integration."""
5 from aioruckus
import AjaxSession
6 from aioruckus.exceptions
import AuthenticationError, SchemaError
16 API_AP_FIRMWAREVERSION,
20 API_SYS_SYSINFO_VERSION,
25 UNDO_UPDATE_LISTENERS,
27 from .coordinator
import RuckusDataUpdateCoordinator
29 _LOGGER = logging.getLogger(__package__)
33 """Set up Ruckus from a config entry."""
35 ruckus = AjaxSession.async_create(
36 entry.data[CONF_HOST],
37 entry.data[CONF_USERNAME],
38 entry.data[CONF_PASSWORD],
42 except (ConnectionError, SchemaError)
as conerr:
44 raise ConfigEntryNotReady
from conerr
45 except AuthenticationError
as autherr:
47 raise ConfigEntryAuthFailed
from autherr
51 await coordinator.async_config_entry_first_refresh()
53 system_info = await ruckus.api.get_system_info()
55 registry = dr.async_get(hass)
56 aps = await ruckus.api.get_aps()
57 for access_point
in aps:
58 _LOGGER.debug(
"AP [%s] %s", access_point[API_AP_MAC], entry.entry_id)
59 registry.async_get_or_create(
60 config_entry_id=entry.entry_id,
61 connections={(dr.CONNECTION_NETWORK_MAC, access_point[API_AP_MAC])},
62 identifiers={(DOMAIN, access_point[API_AP_MAC])},
63 manufacturer=MANUFACTURER,
64 name=access_point[API_AP_DEVNAME],
65 model=access_point[API_AP_MODEL],
66 sw_version=access_point.get(
67 API_AP_FIRMWAREVERSION,
68 system_info[API_SYS_SYSINFO][API_SYS_SYSINFO_VERSION],
72 hass.data.setdefault(DOMAIN, {})
73 hass.data[DOMAIN][entry.entry_id] = {
74 COORDINATOR: coordinator,
75 UNDO_UPDATE_LISTENERS: [],
78 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
84 """Unload a config entry."""
86 unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
88 for listener
in hass.data[DOMAIN][entry.entry_id][UNDO_UPDATE_LISTENERS]:
90 await hass.data[DOMAIN][entry.entry_id][COORDINATOR].ruckus.close()
91 hass.data[DOMAIN].pop(entry.entry_id)
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)