def speed(bond_name): """Return the bond speed if bond_name refers to a bond, 0 otherwise.""" opts = properties(bond_name, filter_properties=('slaves', 'active_slave', 'mode')) try: if opts['slaves']: if opts['mode'][1] in BONDING_FAILOVER_MODES: active_slave = opts['active_slave'] s = nic.speed(active_slave[0]) if active_slave else 0 elif opts['mode'][1] in BONDING_LOADBALANCE_MODES: s = sum(nic.speed(slave) for slave in opts['slaves']) return s except Exception: logging.exception('cannot read %s speed', bond_name) return 0
def speed(bond_name): """Return the bond speed if bond_name refers to a bond, 0 otherwise.""" opts = properties(bond_name, filter_properties=('slaves', 'active_slave', 'mode')) try: if opts['slaves']: if opts['mode'][1] in BONDING_FAILOVER_MODES: active_slave = opts['active_slave'] s = nic.speed(active_slave[0]) if active_slave else 0 elif opts['mode'][1] in BONDING_LOADBALANCE_MODES: s = sum(nic.speed(slave) for slave in opts['slaves']) return s except Exception: logging.exception('cannot read %s speed', bond_name) return 0
def _getLinkSpeed(dev): if dev.isNIC(): speed = nic.speed(dev.name) elif dev.isBOND(): speed = bond.speed(dev.name) elif dev.isVLAN(): speed = vlan.speed(dev.name) else: speed = 0 return speed
def _add_speed_device_info(net_caps): """Collect and include device speed information in the report.""" timeout = 2 for devname, devattr in six.viewitems(net_caps['nics']): timeout -= _wait_for_link_up(devname, timeout) devattr['speed'] = nic.speed(devname) for devname, devattr in six.viewitems(net_caps['bondings']): timeout -= _wait_for_link_up(devname, timeout) devattr['speed'] = bond.speed(devname)
def _add_speed_device_info(net_caps): """Collect and include device speed information in the report.""" timeout = 2 for devname, devattr in six.viewitems(net_caps['nics']): timeout -= _wait_for_link_up(devname, timeout) devattr['speed'] = nic.speed(devname) for devname, devattr in six.viewitems(net_caps['bondings']): timeout -= _wait_for_link_up(devname, timeout) devattr['speed'] = bond.speed(devname)
def test_valid_nic_speed(self, mock_io_open, mock_iface): IS_UP = True values = ((b'0', IS_UP, 0), (b'-10', IS_UP, 0), (six.b(str(2**16 - 1)), IS_UP, 0), (six.b(str(2**32 - 1)), IS_UP, 0), (b'123', IS_UP, 123), (b'', IS_UP, 0), (b'', not IS_UP, 0), (b'123', not IS_UP, 0)) for passed, is_nic_up, expected in values: mock_io_open.return_value = io.BytesIO(passed) mock_iface.return_value.is_oper_up.return_value = is_nic_up self.assertEqual(nic.speed('fake_nic'), expected)
def speed(dev_name): """Return the vlan's underlying device speed.""" dev_speed = 0 dev_vlan = iface.iface(dev_name) dev_base_name = dev_vlan.properties()['device'] dev_base = iface.iface(dev_base_name) dev_base_type = dev_base.type() if dev_base_type == iface.Type.NIC: dev_speed = nic.speed(dev_name) elif dev_base_type == iface.Type.BOND: dev_speed = bond.speed(dev_base_name) return dev_speed
def speed(dev_name): """Return the vlan's underlying device speed.""" dev_speed = 0 dev_vlan = iface.iface(dev_name) dev_base_name = dev_vlan.properties()['device'] dev_base = iface.iface(dev_base_name) dev_base_type = dev_base.type() if dev_base_type == iface.Type.NIC: dev_speed = nic.speed(dev_name) elif dev_base_type == iface.Type.BOND: dev_speed = bond.speed(dev_base_name) return dev_speed
def _generate_iface_stats(interface): stats = interface.statistics() speed = 0 if interface.type() == iface.Type.NIC: speed = nic.speed(interface.device) elif interface.type() == iface.Type.BOND: speed = bond.speed(interface.device) elif interface.type() == iface.Type.VLAN: speed = vlan.speed(interface.device) stats['speed'] = speed stats['duplex'] = nic.duplex(interface.device) return stats
def test_valid_nic_speed(self, mock_io_open, mock_iface): IS_UP = True values = ((b'0', IS_UP, 0), (b'-10', IS_UP, 0), (six.b(str(2 ** 16 - 1)), IS_UP, 0), (six.b(str(2 ** 32 - 1)), IS_UP, 0), (b'123', IS_UP, 123), (b'', IS_UP, 0), (b'', not IS_UP, 0), (b'123', not IS_UP, 0)) for passed, is_nic_up, expected in values: mock_io_open.return_value = io.BytesIO(passed) mock_iface.return_value.is_oper_up.return_value = is_nic_up self.assertEqual(nic.speed('fake_nic'), expected)
def test_valid_nic_speed(self, mock_io_open, mock_iface): IS_UP = True values = ( (b'0', IS_UP, 0), (b'-10', IS_UP, 0), (str(2**16 - 1).encode("utf8"), IS_UP, 0), (str(2**32 - 1).encode("utf8"), IS_UP, 0), (b'123', IS_UP, 123), (b'', IS_UP, 0), (b'', not IS_UP, 0), (b'123', not IS_UP, 0), ) for passed, is_nic_up, expected in values: mock_io_open.return_value = io.BytesIO(passed) mock_iface.return_value.is_oper_up.return_value = is_nic_up assert nic.speed('fake_nic') == expected
def report(): stats = {} for iface_properties in iface.list(): i = iface.iface(iface_properties['name']) stats[i.device] = i.statistics() speed = 0 if i.type() == iface.Type.NIC: speed = nic.speed(i.device) elif i.type() == iface.Type.BOND: speed = bond.speed(i.device) elif i.type() == iface.Type.VLAN: speed = vlan.speed(i.device) elif i.type() == iface.Type.DPDK: speed = dpdk.speed(i.device) stats[i.device]['speed'] = speed stats[i.device]['duplex'] = nic.duplex(i.device) return stats
def test_dpdk_device_speed(self): assert nic.speed('dpdk0') == 0
def test_speed_in_range(self): for d in nics.nics(): s = nic.speed(d) self.assertFalse(s < 0) self.assertTrue(s in ETHTOOL_SPEEDS or s == 0)
def test_speed_on_an_iface_that_does_not_support_speed(self): self.assertEqual(nic.speed('lo'), 0)
def test_dpdk_device_speed(self): self.assertEqual(nic.speed('dpdk0'), 0)
def test_dpdk_device_speed(self): self.assertEqual(nic.speed('dpdk0'), 0)
def test_speed_in_range(self): for d in nics.nics(): s = nic.speed(d) self.assertFalse(s < 0) self.assertTrue(s in ETHTOOL_SPEEDS or s == 0)
def test_speed_on_an_iface_that_does_not_support_speed(self): self.assertEqual(nic.speed('lo'), 0)
def test_speed_in_range(self): for d in nics.nics(): s = nic.speed(d) assert not s < 0 assert s in ETHTOOL_SPEEDS or s == 0
def test_speed_on_an_iface_that_does_not_support_speed(self): assert nic.speed('lo') == 0