%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
Server IP : 188.40.95.74 / Your IP : 216.73.216.142 Web Server : Apache System : Linux cp01.striminghost.net 3.10.0-1160.119.1.el7.tuxcare.els13.x86_64 #1 SMP Fri Nov 22 06:29:45 UTC 2024 x86_64 User : vlasotin ( 1054) PHP Version : 5.6.40 Disable Function : NONE MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/leapp-repository/repositories/system_upgrade/common/libraries/ |
Upload File : |
import pyudev from leapp.libraries.stdlib import api from leapp.models import Interface, PCIAddress udev_context = pyudev.Context() def physical_interfaces(): """ Returns a list of pyudev.Device objects for all physical network interfaces """ enumerator = pyudev.Enumerator(udev_context).match_subsystem('net') return [d for d in enumerator if not d.device_path.startswith('/devices/virtual/')] def pci_info(path): """ Returns PCI topology info from string which is expected to be a value of ID_PATH udev device property """ pci = {} # TODO(msekleta): check that path argument actually has ID_PATH format if path.startswith('pci-'): components = path[4:16].split(':') pci['domain'] = components[0] pci['bus'] = components[1] pci['device'] = components[2].split('.')[0] pci['function'] = components[2].split('.')[1] return pci def interfaces(): """ Generator which produces an Interface objects containing assorted interface properties relevant for network naming """ for dev in physical_interfaces(): attrs = {} try: attrs['name'] = dev.sys_name attrs['devpath'] = dev.device_path attrs['driver'] = dev['ID_NET_DRIVER'] attrs['vendor'] = dev['ID_VENDOR_ID'] attrs['pci_info'] = PCIAddress(**pci_info(dev['ID_PATH'])) attrs['mac'] = dev.attributes.get('address') if isinstance(attrs['mac'], bytes): attrs['mac'] = attrs['mac'].decode() except Exception as e: # pylint: disable=broad-except # FIXME(msekleta): We should probably handle errors more granularly # Maybe we should inhibit upgrade process at this point api.current_logger().warning('Failed to gather information about network interface: ' + str(e)) continue yield Interface(**attrs)