From e2a473baa3441b4e91785cfaee1d814e3084b108 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 1 Dec 2020 14:03:59 +0100 Subject: [PATCH] Add network reload to api (#2319) --- supervisor/api/__init__.py | 1 + supervisor/api/network.py | 7 ++++++- tests/api/test_network.py | 9 +++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/supervisor/api/__init__.py b/supervisor/api/__init__.py index 004f2604c..3ea30f0e0 100644 --- a/supervisor/api/__init__.py +++ b/supervisor/api/__init__.py @@ -112,6 +112,7 @@ class RestAPI(CoreSysAttributes): self.webapp.add_routes( [ web.get("/network/info", api_network.info), + web.post("/network/reload", api_network.reload), web.get( "/network/interface/{interface}/info", api_network.interface_info ), diff --git a/supervisor/api/network.py b/supervisor/api/network.py index d0e78bd5c..e49f0e9b4 100644 --- a/supervisor/api/network.py +++ b/supervisor/api/network.py @@ -1,7 +1,7 @@ """REST API for network.""" import asyncio from ipaddress import ip_address, ip_interface -from typing import Any, Dict +from typing import Any, Awaitable, Dict from aiohttp import web import attr @@ -207,6 +207,11 @@ class APINetwork(CoreSysAttributes): 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 async def scan_accesspoints(self, request: web.Request) -> Dict[str, Any]: """Scan and return a list of available networks.""" diff --git a/tests/api/test_network.py b/tests/api/test_network.py index fc5c1aaa2..2a0fae161 100644 --- a/tests/api/test_network.py +++ b/tests/api/test_network.py @@ -185,3 +185,12 @@ async def test_api_network_wireless_scan(api_client): ap["ssid"] 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"