in selftest/selftest.py [0:0]
def _validate_interface(self, interface: NetworkInterface) -> None:
"""Ensure the required properties are set for hv_netvsc, mlx4, mlx5, and mana devices."""
if interface.driver in ["mlx4_core", "mlx5_core", "mana"]:
assert (
interface.udev_properties.get("NM_UNMANAGED") == "1"
and interface.udev_properties.get("AZURE_UNMANAGED_SRIOV") == "1"
and interface.udev_properties.get("ID_NET_MANAGED_BY") == "unmanaged"
), f"missing required properties for network interface: {interface}"
elif interface.driver == "hv_netvsc":
assert (
"AZURE_UNMANAGED_SRIOV" not in interface.udev_properties
), f"unexpected AZURE_UNMANAGED_SRIOV property: {interface}"
assert (
interface.udev_properties.get("ID_NET_MANAGED_BY") != "unmanaged"
), f"hv_netvsc interface should be managed: {interface}"
mana_has_synthetic_netvsc = interface.driver == "mana" and any(
i.driver == "hv_netvsc" and i.mac == interface.mac
for i in self.interfaces.values()
)
if interface.driver == "hv_netvsc" or (
interface.driver == "mana" and not mana_has_synthetic_netvsc
):
assert interface.ipv4_addrs, f"missing IPv4 addresses for {interface}"
else:
assert (
not interface.ipv4_addrs
), f"unexpected IPv4 addresses for {interface}"
logger.info("validate_interface %s OK: %r", interface.name, interface)