Store preferred border agent ID for each thread dataset (#98384)

This commit is contained in:
Erik Montnemery 2023-08-14 15:47:18 +02:00 committed by GitHub
parent b0f68f1ef3
commit e0fd83daab
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 92 additions and 100 deletions

View file

@ -20,7 +20,6 @@ def async_setup(hass: HomeAssistant) -> None:
websocket_api.async_register_command(hass, ws_discover_routers)
websocket_api.async_register_command(hass, ws_get_dataset)
websocket_api.async_register_command(hass, ws_list_datasets)
websocket_api.async_register_command(hass, ws_get_preferred_border_agent_id)
websocket_api.async_register_command(hass, ws_set_preferred_border_agent_id)
websocket_api.async_register_command(hass, ws_set_preferred_dataset)
@ -52,25 +51,11 @@ async def ws_add_dataset(
connection.send_result(msg["id"])
@websocket_api.require_admin
@websocket_api.websocket_command(
{
vol.Required("type"): "thread/get_preferred_border_agent_id",
}
)
@websocket_api.async_response
async def ws_get_preferred_border_agent_id(
hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]
) -> None:
"""Get the preferred border agent ID."""
border_agent_id = await dataset_store.async_get_preferred_border_agent_id(hass)
connection.send_result(msg["id"], {"border_agent_id": border_agent_id})
@websocket_api.require_admin
@websocket_api.websocket_command(
{
vol.Required("type"): "thread/set_preferred_border_agent_id",
vol.Required("dataset_id"): str,
vol.Required("border_agent_id"): str,
}
)
@ -79,8 +64,10 @@ async def ws_set_preferred_border_agent_id(
hass: HomeAssistant, connection: websocket_api.ActiveConnection, msg: dict[str, Any]
) -> None:
"""Set the preferred border agent ID."""
dataset_id = msg["dataset_id"]
border_agent_id = msg["border_agent_id"]
await dataset_store.async_set_preferred_border_agent_id(hass, border_agent_id)
store = await dataset_store.async_get_store(hass)
store.async_set_preferred_border_agent_id(dataset_id, border_agent_id)
connection.send_result(msg["id"])
@ -186,6 +173,7 @@ async def ws_list_datasets(
"network_name": dataset.network_name,
"pan_id": dataset.pan_id,
"preferred": dataset.id == preferred_dataset,
"preferred_border_agent_id": dataset.preferred_border_agent_id,
"source": dataset.source,
}
)