def _validate_interface()

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)