mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-07-07 17:26:32 +00:00
Debug info for network connection problem (#3828)
* Debug info for network connection problem * Update network tests
This commit is contained in:
parent
df030e6209
commit
bae7fe4184
@ -30,6 +30,7 @@ from ..const import (
|
||||
ATTR_PARENT,
|
||||
ATTR_PRIMARY,
|
||||
ATTR_PSK,
|
||||
ATTR_READY,
|
||||
ATTR_SIGNAL,
|
||||
ATTR_SSID,
|
||||
ATTR_SUPERVISOR_INTERNET,
|
||||
@ -89,6 +90,7 @@ def ipconfig_struct(config: IpConfig) -> dict[str, Any]:
|
||||
ATTR_ADDRESS: [address.with_prefixlen for address in config.address],
|
||||
ATTR_NAMESERVERS: [str(address) for address in config.nameservers],
|
||||
ATTR_GATEWAY: str(config.gateway) if config.gateway else None,
|
||||
ATTR_READY: config.ready,
|
||||
}
|
||||
|
||||
|
||||
|
@ -251,6 +251,7 @@ ATTR_PROVIDERS = "providers"
|
||||
ATTR_PSK = "psk"
|
||||
ATTR_PWNED = "pwned"
|
||||
ATTR_RATING = "rating"
|
||||
ATTR_READY = "ready"
|
||||
ATTR_REALTIME = "realtime"
|
||||
ATTR_REFRESH_TOKEN = "refresh_token"
|
||||
ATTR_REGISTRIES = "registries"
|
||||
|
@ -12,6 +12,7 @@ from ..const import ATTR_HOST_INTERNET
|
||||
from ..coresys import CoreSys, CoreSysAttributes
|
||||
from ..dbus.const import (
|
||||
DBUS_SIGNAL_NM_CONNECTION_ACTIVE_CHANGED,
|
||||
ConnectionStateFlags,
|
||||
ConnectionStateType,
|
||||
ConnectivityState,
|
||||
DeviceType,
|
||||
@ -309,6 +310,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()
|
||||
|
||||
|
||||
@attr.s(slots=True)
|
||||
@ -357,6 +359,14 @@ class Interface:
|
||||
if inet.settings and inet.settings.ipv6
|
||||
else InterfaceMethod.DISABLED
|
||||
)
|
||||
ipv4_ready = (
|
||||
bool(inet.connection)
|
||||
and ConnectionStateFlags.IP4_READY in inet.connection.state_flags
|
||||
)
|
||||
ipv6_ready = (
|
||||
bool(inet.connection)
|
||||
and ConnectionStateFlags.IP6_READY in inet.connection.state_flags
|
||||
)
|
||||
return Interface(
|
||||
inet.name,
|
||||
inet.settings is not None,
|
||||
@ -368,17 +378,19 @@ class Interface:
|
||||
inet.connection.ipv4.address,
|
||||
inet.connection.ipv4.gateway,
|
||||
inet.connection.ipv4.nameservers,
|
||||
ipv4_ready,
|
||||
)
|
||||
if inet.connection and inet.connection.ipv4
|
||||
else IpConfig(ipv4_method, [], None, []),
|
||||
else IpConfig(ipv4_method, [], None, [], ipv4_ready),
|
||||
IpConfig(
|
||||
ipv6_method,
|
||||
inet.connection.ipv6.address,
|
||||
inet.connection.ipv6.gateway,
|
||||
inet.connection.ipv6.nameservers,
|
||||
ipv6_ready,
|
||||
)
|
||||
if inet.connection and inet.connection.ipv6
|
||||
else IpConfig(ipv6_method, [], None, []),
|
||||
else IpConfig(ipv6_method, [], None, [], ipv6_ready),
|
||||
Interface._map_nm_wifi(inet),
|
||||
Interface._map_nm_vlan(inet),
|
||||
)
|
||||
|
@ -31,12 +31,14 @@ async def test_api_network_info(api_client, coresys):
|
||||
"gateway": None,
|
||||
"method": "disabled",
|
||||
"nameservers": [],
|
||||
"ready": False,
|
||||
}
|
||||
assert interface["ipv6"] == {
|
||||
"address": [],
|
||||
"gateway": None,
|
||||
"method": "disabled",
|
||||
"nameservers": [],
|
||||
"ready": False,
|
||||
}
|
||||
|
||||
assert result["data"]["docker"]["interface"] == DOCKER_NETWORK
|
||||
@ -53,6 +55,7 @@ async def test_api_network_interface_info(api_client):
|
||||
assert result["data"]["ipv4"]["address"][-1] == "192.168.2.148/24"
|
||||
assert result["data"]["ipv4"]["gateway"] == "192.168.2.1"
|
||||
assert result["data"]["ipv4"]["nameservers"] == ["192.168.2.2"]
|
||||
assert result["data"]["ipv4"]["ready"] is True
|
||||
assert (
|
||||
result["data"]["ipv6"]["address"][0] == "2a03:169:3df5:0:6be9:2588:b26a:a679/64"
|
||||
)
|
||||
@ -65,6 +68,7 @@ async def test_api_network_interface_info(api_client):
|
||||
"2001:1620:2777:1::10",
|
||||
"2001:1620:2777:2::20",
|
||||
]
|
||||
assert result["data"]["ipv6"]["ready"] is True
|
||||
assert result["data"]["interface"] == TEST_INTERFACE
|
||||
|
||||
|
||||
@ -76,6 +80,7 @@ async def test_api_network_interface_info_default(api_client):
|
||||
assert result["data"]["ipv4"]["address"][-1] == "192.168.2.148/24"
|
||||
assert result["data"]["ipv4"]["gateway"] == "192.168.2.1"
|
||||
assert result["data"]["ipv4"]["nameservers"] == ["192.168.2.2"]
|
||||
assert result["data"]["ipv4"]["ready"] is True
|
||||
assert (
|
||||
result["data"]["ipv6"]["address"][0] == "2a03:169:3df5:0:6be9:2588:b26a:a679/64"
|
||||
)
|
||||
@ -88,6 +93,7 @@ async def test_api_network_interface_info_default(api_client):
|
||||
"2001:1620:2777:1::10",
|
||||
"2001:1620:2777:2::20",
|
||||
]
|
||||
assert result["data"]["ipv6"]["ready"] is True
|
||||
assert result["data"]["interface"] == TEST_INTERFACE
|
||||
|
||||
|
||||
|
@ -29,10 +29,12 @@ async def test_load(coresys: CoreSys):
|
||||
assert coresys.host.network.interfaces[0].ipv4.gateway == IPv4Address(
|
||||
"192.168.2.1"
|
||||
)
|
||||
assert coresys.host.network.interfaces[0].ipv4.ready is True
|
||||
assert coresys.host.network.interfaces[0].ipv6.method == InterfaceMethod.AUTO
|
||||
assert coresys.host.network.interfaces[0].ipv6.gateway == IPv6Address(
|
||||
"fe80::da58:d7ff:fe00:9c69"
|
||||
)
|
||||
assert coresys.host.network.interfaces[0].ipv6.ready is True
|
||||
assert coresys.host.network.interfaces[1].name == "wlan0"
|
||||
assert coresys.host.network.interfaces[1].enabled is False
|
||||
|
||||
@ -52,8 +54,8 @@ async def test_load_with_disabled_methods(coresys: CoreSys):
|
||||
False,
|
||||
False,
|
||||
InterfaceType.ETHERNET,
|
||||
IpConfig(InterfaceMethod.DISABLED, [], None, []),
|
||||
IpConfig(InterfaceMethod.DISABLED, [], None, []),
|
||||
IpConfig(InterfaceMethod.DISABLED, [], None, [], False),
|
||||
IpConfig(InterfaceMethod.DISABLED, [], None, [], False),
|
||||
None,
|
||||
None,
|
||||
),
|
||||
|
Loading…
x
Reference in New Issue
Block a user