mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 13:17:32 +00:00
Fix Ruckus Unleashed SSH connection failures (#75032)
This commit is contained in:
parent
5fdae0fc5b
commit
5489b2111a
@ -29,8 +29,7 @@ from .coordinator import RuckusUnleashedDataUpdateCoordinator
|
||||
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
"""Set up Ruckus Unleashed from a config entry."""
|
||||
try:
|
||||
ruckus = await hass.async_add_executor_job(
|
||||
Ruckus,
|
||||
ruckus = await Ruckus.create(
|
||||
entry.data[CONF_HOST],
|
||||
entry.data[CONF_USERNAME],
|
||||
entry.data[CONF_PASSWORD],
|
||||
@ -42,10 +41,10 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
|
||||
await coordinator.async_config_entry_first_refresh()
|
||||
|
||||
system_info = await hass.async_add_executor_job(ruckus.system_info)
|
||||
system_info = await ruckus.system_info()
|
||||
|
||||
registry = device_registry.async_get(hass)
|
||||
ap_info = await hass.async_add_executor_job(ruckus.ap_info)
|
||||
ap_info = await ruckus.ap_info()
|
||||
for device in ap_info[API_AP][API_ID].values():
|
||||
registry.async_get_or_create(
|
||||
config_entry_id=entry.entry_id,
|
||||
|
@ -21,22 +21,24 @@ DATA_SCHEMA = vol.Schema(
|
||||
)
|
||||
|
||||
|
||||
def validate_input(hass: core.HomeAssistant, data):
|
||||
async def validate_input(hass: core.HomeAssistant, data):
|
||||
"""Validate the user input allows us to connect.
|
||||
|
||||
Data has the keys from DATA_SCHEMA with values provided by the user.
|
||||
"""
|
||||
|
||||
try:
|
||||
ruckus = Ruckus(data[CONF_HOST], data[CONF_USERNAME], data[CONF_PASSWORD])
|
||||
ruckus = await Ruckus.create(
|
||||
data[CONF_HOST], data[CONF_USERNAME], data[CONF_PASSWORD]
|
||||
)
|
||||
except AuthenticationError as error:
|
||||
raise InvalidAuth from error
|
||||
except ConnectionError as error:
|
||||
raise CannotConnect from error
|
||||
|
||||
mesh_name = ruckus.mesh_name()
|
||||
mesh_name = await ruckus.mesh_name()
|
||||
|
||||
system_info = ruckus.system_info()
|
||||
system_info = await ruckus.system_info()
|
||||
try:
|
||||
host_serial = system_info[API_SYSTEM_OVERVIEW][API_SERIAL]
|
||||
except KeyError as error:
|
||||
@ -58,9 +60,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
|
||||
errors = {}
|
||||
if user_input is not None:
|
||||
try:
|
||||
info = await self.hass.async_add_executor_job(
|
||||
validate_input, self.hass, user_input
|
||||
)
|
||||
info = await validate_input(self.hass, user_input)
|
||||
except CannotConnect:
|
||||
errors["base"] = "cannot_connect"
|
||||
except InvalidAuth:
|
||||
|
@ -37,9 +37,7 @@ class RuckusUnleashedDataUpdateCoordinator(DataUpdateCoordinator):
|
||||
|
||||
async def _fetch_clients(self) -> dict:
|
||||
"""Fetch clients from the API and format them."""
|
||||
clients = await self.hass.async_add_executor_job(
|
||||
self.ruckus.current_active_clients
|
||||
)
|
||||
clients = await self.ruckus.current_active_clients()
|
||||
return {e[API_MAC]: e for e in clients[API_CURRENT_ACTIVE_CLIENTS][API_CLIENTS]}
|
||||
|
||||
async def _async_update_data(self) -> dict:
|
||||
|
@ -3,7 +3,7 @@
|
||||
"name": "Ruckus Unleashed",
|
||||
"config_flow": true,
|
||||
"documentation": "https://www.home-assistant.io/integrations/ruckus_unleashed",
|
||||
"requirements": ["pyruckus==0.12"],
|
||||
"requirements": ["pyruckus==0.16"],
|
||||
"codeowners": ["@gabe565"],
|
||||
"iot_class": "local_polling",
|
||||
"loggers": ["pexpect", "pyruckus"]
|
||||
|
@ -1783,7 +1783,7 @@ pyrisco==0.3.1
|
||||
pyrituals==0.0.6
|
||||
|
||||
# homeassistant.components.ruckus_unleashed
|
||||
pyruckus==0.12
|
||||
pyruckus==0.16
|
||||
|
||||
# homeassistant.components.sabnzbd
|
||||
pysabnzbd==1.1.1
|
||||
|
@ -1217,7 +1217,7 @@ pyrisco==0.3.1
|
||||
pyrituals==0.0.6
|
||||
|
||||
# homeassistant.components.ruckus_unleashed
|
||||
pyruckus==0.12
|
||||
pyruckus==0.16
|
||||
|
||||
# homeassistant.components.sabnzbd
|
||||
pysabnzbd==1.1.1
|
||||
|
@ -31,7 +31,7 @@ async def test_setup_entry_login_error(hass):
|
||||
"""Test entry setup failed due to login error."""
|
||||
entry = mock_config_entry()
|
||||
with patch(
|
||||
"homeassistant.components.ruckus_unleashed.Ruckus",
|
||||
"homeassistant.components.ruckus_unleashed.Ruckus.connect",
|
||||
side_effect=AuthenticationError,
|
||||
):
|
||||
entry.add_to_hass(hass)
|
||||
@ -45,7 +45,7 @@ async def test_setup_entry_connection_error(hass):
|
||||
"""Test entry setup failed due to connection error."""
|
||||
entry = mock_config_entry()
|
||||
with patch(
|
||||
"homeassistant.components.ruckus_unleashed.Ruckus",
|
||||
"homeassistant.components.ruckus_unleashed.Ruckus.connect",
|
||||
side_effect=ConnectionError,
|
||||
):
|
||||
entry.add_to_hass(hass)
|
||||
|
Loading…
x
Reference in New Issue
Block a user