mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-07-14 12:46:32 +00:00
Check if connectivity check if available on host (#2265)
* Check if connectivity check if available on host * fix get * not needed * Update const.py * Use enabled
This commit is contained in:
parent
80f4309799
commit
2f9fc39b72
@ -63,6 +63,7 @@ DBUS_ATTR_TYPE = "Type"
|
|||||||
DBUS_ATTR_UUID = "Uuid"
|
DBUS_ATTR_UUID = "Uuid"
|
||||||
DBUS_ATTR_VARIANT = "Variant"
|
DBUS_ATTR_VARIANT = "Variant"
|
||||||
DBUS_ATTR_MANAGED = "Managed"
|
DBUS_ATTR_MANAGED = "Managed"
|
||||||
|
DBUS_ATTR_CONNECTION_ENABLED = "ConnectivityCheckEnabled"
|
||||||
|
|
||||||
|
|
||||||
class RaucState(str, Enum):
|
class RaucState(str, Enum):
|
||||||
|
@ -7,6 +7,7 @@ import sentry_sdk
|
|||||||
from ...exceptions import DBusError, DBusInterfaceError
|
from ...exceptions import DBusError, DBusInterfaceError
|
||||||
from ...utils.gdbus import DBus
|
from ...utils.gdbus import DBus
|
||||||
from ..const import (
|
from ..const import (
|
||||||
|
DBUS_ATTR_CONNECTION_ENABLED,
|
||||||
DBUS_ATTR_DEVICES,
|
DBUS_ATTR_DEVICES,
|
||||||
DBUS_ATTR_PRIMARY_CONNECTION,
|
DBUS_ATTR_PRIMARY_CONNECTION,
|
||||||
DBUS_NAME_NM,
|
DBUS_NAME_NM,
|
||||||
@ -32,6 +33,8 @@ class NetworkManager(DBusInterface):
|
|||||||
self._settings: NetworkManagerSettings = NetworkManagerSettings()
|
self._settings: NetworkManagerSettings = NetworkManagerSettings()
|
||||||
self._interfaces: Dict[str, NetworkInterface] = {}
|
self._interfaces: Dict[str, NetworkInterface] = {}
|
||||||
|
|
||||||
|
self.properties: Dict[str, Any] = {}
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def dns(self) -> NetworkManagerDNS:
|
def dns(self) -> NetworkManagerDNS:
|
||||||
"""Return NetworkManager DNS interface."""
|
"""Return NetworkManager DNS interface."""
|
||||||
@ -47,6 +50,11 @@ class NetworkManager(DBusInterface):
|
|||||||
"""Return a dictionary of active interfaces."""
|
"""Return a dictionary of active interfaces."""
|
||||||
return self._interfaces
|
return self._interfaces
|
||||||
|
|
||||||
|
@property
|
||||||
|
def connectivity_enabled(self) -> bool:
|
||||||
|
"""Return if connectivity check is enabled."""
|
||||||
|
return self.properties[DBUS_ATTR_CONNECTION_ENABLED]
|
||||||
|
|
||||||
@dbus_connected
|
@dbus_connected
|
||||||
def activate_connection(
|
def activate_connection(
|
||||||
self, connection_object: str, device_object: str
|
self, connection_object: str, device_object: str
|
||||||
@ -86,16 +94,12 @@ class NetworkManager(DBusInterface):
|
|||||||
@dbus_connected
|
@dbus_connected
|
||||||
async def update(self):
|
async def update(self):
|
||||||
"""Update Properties."""
|
"""Update Properties."""
|
||||||
|
self.properties = await self.dbus.get_properties(DBUS_NAME_NM)
|
||||||
|
|
||||||
await self.dns.update()
|
await self.dns.update()
|
||||||
|
|
||||||
data = await self.dbus.get_properties(DBUS_NAME_NM)
|
|
||||||
|
|
||||||
if not data:
|
|
||||||
_LOGGER.warning("Can't get properties for Network Manager")
|
|
||||||
return
|
|
||||||
|
|
||||||
self._interfaces.clear()
|
self._interfaces.clear()
|
||||||
for device in data.get(DBUS_ATTR_DEVICES, []):
|
for device in self.properties[DBUS_ATTR_DEVICES]:
|
||||||
interface = NetworkInterface(self.dbus, device)
|
interface = NetworkInterface(self.dbus, device)
|
||||||
|
|
||||||
# Connect to interface
|
# Connect to interface
|
||||||
@ -118,8 +122,10 @@ class NetworkManager(DBusInterface):
|
|||||||
):
|
):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if interface.connection and interface.connection.object_path == data.get(
|
if (
|
||||||
DBUS_ATTR_PRIMARY_CONNECTION
|
interface.connection
|
||||||
|
and interface.connection.object_path
|
||||||
|
== self.properties[DBUS_ATTR_PRIMARY_CONNECTION]
|
||||||
):
|
):
|
||||||
interface.primary = True
|
interface.primary = True
|
||||||
|
|
||||||
|
@ -72,6 +72,10 @@ class NetworkManager(CoreSysAttributes):
|
|||||||
ConnectionState 4 == FULL (has internet)
|
ConnectionState 4 == FULL (has internet)
|
||||||
https://developer.gnome.org/NetworkManager/stable/nm-dbus-types.html#NMConnectivityState
|
https://developer.gnome.org/NetworkManager/stable/nm-dbus-types.html#NMConnectivityState
|
||||||
"""
|
"""
|
||||||
|
if not self.sys_dbus.network.connectivity_enabled:
|
||||||
|
return
|
||||||
|
|
||||||
|
# Check connectivity
|
||||||
try:
|
try:
|
||||||
state = await self.sys_dbus.network.check_connectivity()
|
state = await self.sys_dbus.network.check_connectivity()
|
||||||
self._connectivity = state[0] == 4
|
self._connectivity = state[0] == 4
|
||||||
|
Loading…
x
Reference in New Issue
Block a user