From b8249548aef05be3353fb6dc45b7df4a200bfa53 Mon Sep 17 00:00:00 2001 From: Mike Degatano Date: Tue, 13 Sep 2022 15:23:13 -0400 Subject: [PATCH] Fix network vlan api (#3865) --- supervisor/api/network.py | 8 ++++++-- supervisor/host/network.py | 2 +- tests/api/test_network.py | 14 ++++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/supervisor/api/network.py b/supervisor/api/network.py index 714d03156..d86bb9fc1 100644 --- a/supervisor/api/network.py +++ b/supervisor/api/network.py @@ -196,12 +196,14 @@ class APINetwork(CoreSysAttributes): for key, config in body.items(): if key == ATTR_IPV4: interface.ipv4 = attr.evolve( - interface.ipv4 or IpConfig(InterfaceMethod.STATIC, [], None, []), + interface.ipv4 + or IpConfig(InterfaceMethod.STATIC, [], None, [], None), **config, ) elif key == ATTR_IPV6: interface.ipv6 = attr.evolve( - interface.ipv6 or IpConfig(InterfaceMethod.STATIC, [], None, []), + interface.ipv6 + or IpConfig(InterfaceMethod.STATIC, [], None, [], None), **config, ) elif key == ATTR_WIFI: @@ -259,6 +261,7 @@ class APINetwork(CoreSysAttributes): body[ATTR_IPV4].get(ATTR_ADDRESS, []), body[ATTR_IPV4].get(ATTR_GATEWAY, None), body[ATTR_IPV4].get(ATTR_NAMESERVERS, []), + None, ) ipv6_config = None @@ -268,6 +271,7 @@ class APINetwork(CoreSysAttributes): body[ATTR_IPV6].get(ATTR_ADDRESS, []), body[ATTR_IPV6].get(ATTR_GATEWAY, None), body[ATTR_IPV6].get(ATTR_NAMESERVERS, []), + None, ) vlan_interface = Interface( diff --git a/supervisor/host/network.py b/supervisor/host/network.py index 1595f853f..7c143361b 100644 --- a/supervisor/host/network.py +++ b/supervisor/host/network.py @@ -301,7 +301,7 @@ class IpConfig: address: list[IPv4Interface | IPv6Interface] = attr.ib() gateway: IPv4Address | IPv6Address | None = attr.ib() nameservers: list[IPv4Address | IPv6Address] = attr.ib() - ready: bool = attr.ib() + ready: bool | None = attr.ib() @attr.s(slots=True) diff --git a/tests/api/test_network.py b/tests/api/test_network.py index 75c58f27c..fc684e925 100644 --- a/tests/api/test_network.py +++ b/tests/api/test_network.py @@ -214,3 +214,17 @@ async def test_api_network_reload(api_client, coresys, dbus: list[str]): "/org/freedesktop/NetworkManager-org.freedesktop.NetworkManager.CheckConnectivity" in dbus ) + + +async def test_api_network_vlan(api_client, coresys: CoreSys, dbus: list[str]): + """Test creating a vlan.""" + dbus.clear() + resp = await api_client.post( + f"/network/interface/{TEST_INTERFACE}/vlan/1", json={"ipv4": {"method": "auto"}} + ) + result = await resp.json() + assert result["result"] == "ok" + assert ( + "/org/freedesktop/NetworkManager/Settings-org.freedesktop.NetworkManager.Settings.AddConnection" + in dbus + )