示例#1
0
 def _detectType(name):
     """Returns the LinkType for the specified device."""
     # TODO: Add support for virtual functions
     detectedType = None
     try:
         driver = ethtool.driver_name(name)
     except IOError as ioe:
         if ioe.errno == errno.EOPNOTSUPP:
             if name == 'lo':
                 detectedType = LinkType.LOOPBACK
             else:
                 detectedType = LinkType.DUMMY
             return detectedType
         else:
             raise  # Reraise other errors like ENODEV
     if driver in (
             LinkType.BRIDGE,
             LinkType.MACVLAN,
             LinkType.TUN,
             LinkType.OVS,
             LinkType.TEAM,
             LinkType.VETH,
     ):
         detectedType = driver
     elif driver == 'bonding':
         detectedType = LinkType.BOND
     elif 'VLAN' in driver or 'vlan' in driver:
         detectedType = LinkType.VLAN
     elif os.path.exists('/sys/class/net/%s/device/physfn/' % name):
         detectedType = LinkType.VF
     else:
         detectedType = LinkType.NIC
     return detectedType
示例#2
0
文件: ipwrapper.py 项目: nirs/vdsm
 def _detectType(name):
     """Returns the LinkType for the specified device."""
     # TODO: Add support for virtual functions
     detectedType = None
     try:
         driver = ethtool.driver_name(name)
     except IOError as ioe:
         if ioe.errno == errno.EOPNOTSUPP:
             if name == 'lo':
                 detectedType = LinkType.LOOPBACK
             else:
                 detectedType = LinkType.DUMMY
             return detectedType
         else:
             raise  # Reraise other errors like ENODEV
     if driver in (LinkType.BRIDGE, LinkType.MACVLAN, LinkType.TUN,
                   LinkType.OVS, LinkType.TEAM, LinkType.VETH):
         detectedType = driver
     elif driver == 'bonding':
         detectedType = LinkType.BOND
     elif 'VLAN' in driver or 'vlan' in driver:
         detectedType = LinkType.VLAN
     elif os.path.exists('/sys/class/net/%s/device/physfn/' % name):
         detectedType = LinkType.VF
     else:
         detectedType = LinkType.NIC
     return detectedType
示例#3
0
文件: nics.py 项目: gobindadas/vdsm
def _ibHackedSpeed(nic_name):
    """If the nic is an InfiniBand device, return a speed of 10000 Mbps.

    This is only needed until the kernel reports ib*/speed, see
    https://bugzilla.redhat.com/show_bug.cgi?id=1101314
    """
    try:
        return 10000 if driver_name(nic_name) == 'ib_ipoib' else 0
    except IOError:
        return 0
示例#4
0
def get_alternative_type(device):
    """
    Attemt to detect the iface type through alternative means.
    """
    if os.path.exists(os.path.join(NET_PATH, device, 'device/physfn')):
        return Type.VF
    try:
        driver_name = ethtool.driver_name(device)
        iface_type = Type.NIC if driver_name else None
    except IOError as ioe:
        if ioe.errno == errno.EOPNOTSUPP:
            iface_type = Type.LOOPBACK if device == 'lo' else Type.DUMMY
        else:
            raise
    return iface_type
示例#5
0
文件: iface.py 项目: nirs/vdsm
def get_alternative_type(device):
    """
    Attemt to detect the iface type through alternative means.
    """
    if os.path.exists(os.path.join(NET_PATH, device, 'device/physfn')):
        return Type.VF
    try:
        driver_name = ethtool.driver_name(device)
        iface_type = Type.NIC if driver_name else None
    except IOError as ioe:
        if ioe.errno == errno.EOPNOTSUPP:
            iface_type = Type.LOOPBACK if device == 'lo' else Type.DUMMY
        else:
            raise
    return iface_type
示例#6
0
 def _is_vmfex(self):
     return ethtool.driver_name(self.name) == 'enic'
示例#7
0
 def testUtf8BridgeEthtoolDrvinfo(self):
     self.assertEqual(ethtool.driver_name(self._bridge.devName),
                      ipwrapper.LinkType.BRIDGE)
示例#8
0
 def test_bridge_ethtool_drvinfo(self, bridge0):
     bridge_name = bridge0.devName
     assert ethtool.driver_name(bridge_name) == ipwrapper.LinkType.BRIDGE
示例#9
0
 def test_utf8_bridge_ethtool_drvinfo(self, unicode_bridge):
     driver_name = ethtool.driver_name(unicode_bridge.devName)
     assert driver_name == ipwrapper.LinkType.BRIDGE
示例#10
0
 def test_detect_device_driver(self):
     with bridge_device() as br:
         self.assertEqual('bridge', ethtool.driver_name(br.devName))
示例#11
0
文件: ipwrapper.py 项目: nirs/vdsm
 def _is_vmfex(self):
     return ethtool.driver_name(self.name) == 'enic'
示例#12
0
 def testUtf8BridgeEthtoolDrvinfo(self, unicode_bridge):
     driver_name = ethtool.driver_name(unicode_bridge.devName)
     assert driver_name == ipwrapper.LinkType.BRIDGE
示例#13
0
 def testUtf8BridgeEthtoolDrvinfo(self):
     self.assertEqual(
         ethtool.driver_name(self._bridge.devName),
         ipwrapper.LinkType.BRIDGE)
示例#14
0
 def test_detect_device_driver(self, bridge):
     assert ethtool.driver_name(bridge) == 'bridge'
示例#15
0
文件: ethtool_test.py 项目: nirs/vdsm
 def test_detect_device_driver(self):
     with bridge_device() as br:
         self.assertEqual('bridge', ethtool.driver_name(br.devName))