Best Python code snippet using lisa_python
nic.py
Source:nic.py  
...253            ).is_not_empty()254    def _initialize(self, *args: Any, **kwargs: Any) -> None:255        self._node.log.debug("loading nic information...")256        self.nic_names = self._get_nic_names()257        self._get_node_nic_info()258        self._get_default_nic()259        self.load_interface_info()260        self._get_nic_uuids()261        for nic in self.get_upper_nics():262            self.get_nic_driver(nic)263    def _get_nic_names(self) -> List[str]:264        # identify all of the nics on the device, excluding tunnels and loopbacks etc.265        all_nics = self._node.execute(266            "ls /sys/class/net/",267            shell=True,268            sudo=True,269        ).stdout.split()270        virtual_nics = self._node.execute(271            "ls /sys/devices/virtual/net",272            shell=True,273            sudo=True,274        ).stdout.split()275        # remove virtual nics from the list276        non_virtual_nics = [x for x in all_nics if x not in virtual_nics]277        # verify if the nics names are not empty278        for item in non_virtual_nics:279            assert_that(item).described_as(280                "nic name could not be found"281            ).is_not_equal_to("")282        return non_virtual_nics283    def _get_nic_device(self, nic_name: str) -> str:284        slot_info_result = self._node.execute(285            f"readlink /sys/class/net/{nic_name}/device"286        )287        slot_info_result.assert_exit_code()288        base_device_result = self._node.execute(f"basename {slot_info_result.stdout}")289        base_device_result.assert_exit_code()290        # todo check addr matches expectation291        return base_device_result.stdout292    def _get_nic_uuid(self, nic_name: str) -> str:293        full_dev_path = self._node.execute(294            f"readlink /sys/class/net/{nic_name}/device",295            expected_exit_code_failure_message=(296                f"could not get sysfs device info for {nic_name}"297            ),298        )299        uuid = os.path.basename(full_dev_path.stdout.strip())300        self._node.log.debug(f"{nic_name} UUID:{uuid}")301        return uuid302    def _get_nic_uuids(self) -> None:303        for nic in self.get_upper_nics():304            self.nics[nic].dev_uuid = self._get_nic_uuid(nic)305    def _get_nic_numa_node(self, name: str) -> int:306        result = self._node.execute(307            f"cat /sys/class/net/{name}/device/numa_node",308            sudo=True,309            shell=True,310            expected_exit_code=0,311            expected_exit_code_failure_message=(312                f"Could not get numa information for nic {name}"313            ),314        )315        numa = int(result.stdout.strip())316        if numa == -1:317            numa = 0318        return numa319    def _get_node_nic_info(self) -> None:320        # Identify which nics are slaved to master devices.321        # This should be really simple with /usr/bin/ip but experience shows322        # the tool isn't super consistent across distros in this regard323        # use sysfs to gather upper/lower nic pairings and pci slot info324        nic_info_fetch_cmd = "ls -la /sys/class/net/*/lower*/device"325        self._node.log.debug(f"Gathering NIC information on {self._node.name}.")326        result = self._node.execute(327            nic_info_fetch_cmd,328            shell=True,329        )330        if result.exit_code != 0:331            nic_info_fetch_cmd = "ls -la /sys/class/net/*/device"332            result = self._node.execute(333                nic_info_fetch_cmd,...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
