Avoid circular import in network integration (#58655)
This commit is contained in:
parent
c6157d5520
commit
7516db3600
2 changed files with 73 additions and 56 deletions
66
homeassistant/components/network/websocket.py
Normal file
66
homeassistant/components/network/websocket.py
Normal file
|
@ -0,0 +1,66 @@
|
|||
"""The Network Configuration integration websocket commands."""
|
||||
from __future__ import annotations
|
||||
|
||||
import voluptuous as vol
|
||||
|
||||
from homeassistant.components import websocket_api
|
||||
from homeassistant.components.websocket_api.connection import ActiveConnection
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
|
||||
from .const import (
|
||||
ATTR_ADAPTERS,
|
||||
ATTR_CONFIGURED_ADAPTERS,
|
||||
DOMAIN,
|
||||
NETWORK_CONFIG_SCHEMA,
|
||||
)
|
||||
from .network import Network
|
||||
|
||||
|
||||
@callback
|
||||
def async_register_websocket_commands(hass: HomeAssistant) -> None:
|
||||
"""Register network websocket commands."""
|
||||
websocket_api.async_register_command(hass, websocket_network_adapters)
|
||||
websocket_api.async_register_command(hass, websocket_network_adapters_configure)
|
||||
|
||||
|
||||
@websocket_api.require_admin
|
||||
@websocket_api.websocket_command({vol.Required("type"): "network"})
|
||||
@websocket_api.async_response
|
||||
async def websocket_network_adapters(
|
||||
hass: HomeAssistant,
|
||||
connection: ActiveConnection,
|
||||
msg: dict,
|
||||
) -> None:
|
||||
"""Return network preferences."""
|
||||
network: Network = hass.data[DOMAIN]
|
||||
connection.send_result(
|
||||
msg["id"],
|
||||
{
|
||||
ATTR_ADAPTERS: network.adapters,
|
||||
ATTR_CONFIGURED_ADAPTERS: network.configured_adapters,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@websocket_api.require_admin
|
||||
@websocket_api.websocket_command(
|
||||
{
|
||||
vol.Required("type"): "network/configure",
|
||||
vol.Required("config", default={}): NETWORK_CONFIG_SCHEMA,
|
||||
}
|
||||
)
|
||||
@websocket_api.async_response
|
||||
async def websocket_network_adapters_configure(
|
||||
hass: HomeAssistant,
|
||||
connection: ActiveConnection,
|
||||
msg: dict,
|
||||
) -> None:
|
||||
"""Update network config."""
|
||||
network: Network = hass.data[DOMAIN]
|
||||
|
||||
await network.async_reconfig(msg["config"])
|
||||
|
||||
connection.send_result(
|
||||
msg["id"],
|
||||
{ATTR_CONFIGURED_ADAPTERS: network.configured_adapters},
|
||||
)
|
Loading…
Add table
Add a link
Reference in a new issue