Add network reload to api (#2319)

This commit is contained in:
Pascal Vizeli 2020-12-01 14:03:59 +01:00 committed by GitHub
parent 06e10fdd3c
commit e2a473baa3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 1 deletions

View File

@ -112,6 +112,7 @@ class RestAPI(CoreSysAttributes):
self.webapp.add_routes( self.webapp.add_routes(
[ [
web.get("/network/info", api_network.info), web.get("/network/info", api_network.info),
web.post("/network/reload", api_network.reload),
web.get( web.get(
"/network/interface/{interface}/info", api_network.interface_info "/network/interface/{interface}/info", api_network.interface_info
), ),

View File

@ -1,7 +1,7 @@
"""REST API for network.""" """REST API for network."""
import asyncio import asyncio
from ipaddress import ip_address, ip_interface from ipaddress import ip_address, ip_interface
from typing import Any, Dict from typing import Any, Awaitable, Dict
from aiohttp import web from aiohttp import web
import attr import attr
@ -207,6 +207,11 @@ class APINetwork(CoreSysAttributes):
await asyncio.shield(self.sys_host.network.apply_changes(interface)) await asyncio.shield(self.sys_host.network.apply_changes(interface))
@api_process
def reload(self, request: web.Request) -> Awaitable[None]:
"""Reload network data."""
return asyncio.shield(self.sys_host.network.update())
@api_process @api_process
async def scan_accesspoints(self, request: web.Request) -> Dict[str, Any]: async def scan_accesspoints(self, request: web.Request) -> Dict[str, Any]:
"""Scan and return a list of available networks.""" """Scan and return a list of available networks."""

View File

@ -185,3 +185,12 @@ async def test_api_network_wireless_scan(api_client):
ap["ssid"] for ap in result["data"]["accesspoints"] ap["ssid"] for ap in result["data"]["accesspoints"]
] ]
assert [47, 63] == [ap["signal"] for ap in result["data"]["accesspoints"]] assert [47, 63] == [ap["signal"] for ap in result["data"]["accesspoints"]]
@pytest.mark.asyncio
async def test_api_network_reload(api_client, coresys):
"""Test network manager reload api."""
resp = await api_client.post("/network/reload")
result = await resp.json()
assert result["result"] == "ok"