def create_setting(iface_state, base_con_profile): mtu = iface_state.get('mtu') ethernet = iface_state.get('ethernet', {}) speed = ethernet.get('speed') duplex = ethernet.get('duplex') auto_negotiation = ethernet.get('auto-negotiation') if not (mtu or speed or duplex or (auto_negotiation is not None)): return None wired_setting = None if base_con_profile: wired_setting = base_con_profile.get_setting_wired() if wired_setting: wired_setting = wired_setting.duplicate() if not wired_setting: wired_setting = nmclient.NM.SettingWired.new() if mtu: wired_setting.props.mtu = mtu if auto_negotiation: wired_setting.props.auto_negotiate = True if not speed and not duplex: wired_setting.props.speed = 0 wired_setting.props.duplex = None elif not speed: ethtool_results = minimal_ethtool(str(iface_state['name'])) speed = ethtool_results['speed'] elif not duplex: ethtool_results = minimal_ethtool(str(iface_state['name'])) duplex = ethtool_results['duplex'] elif auto_negotiation is False: wired_setting.props.auto_negotiate = False ethtool_results = minimal_ethtool(str(iface_state['name'])) if not speed: speed = ethtool_results['speed'] if not duplex: duplex = ethtool_results['duplex'] if speed: wired_setting.props.speed = speed if duplex in ['half', 'full']: wired_setting.props.duplex = duplex return wired_setting
def create_setting(iface_state, base_con_profile): setting = WiredSetting(iface_state) nm_wired_setting = None if base_con_profile: nm_wired_setting = base_con_profile.get_setting_wired() if nm_wired_setting: nm_wired_setting = nm_wired_setting.duplicate() if not setting: return nm_wired_setting if not nm_wired_setting: nm_wired_setting = nmclient.NM.SettingWired.new() if setting.mac: nm_wired_setting.props.cloned_mac_address = setting.mac if setting.mtu: nm_wired_setting.props.mtu = setting.mtu if setting.auto_negotiation: nm_wired_setting.props.auto_negotiate = True if not setting.speed and not setting.duplex: nm_wired_setting.props.speed = 0 nm_wired_setting.props.duplex = None elif not setting.speed: ethtool_results = minimal_ethtool(str(iface_state[Interface.NAME])) setting.speed = ethtool_results[Ethernet.SPEED] elif not setting.duplex: ethtool_results = minimal_ethtool(str(iface_state[Interface.NAME])) setting.duplex = ethtool_results[Ethernet.DUPLEX] elif setting.auto_negotiation is False: nm_wired_setting.props.auto_negotiate = False ethtool_results = minimal_ethtool(str(iface_state[Interface.NAME])) if not setting.speed: setting.speed = ethtool_results[Ethernet.SPEED] if not setting.duplex: setting.duplex = ethtool_results[Ethernet.DUPLEX] if setting.speed: nm_wired_setting.props.speed = setting.speed if setting.duplex in [Ethernet.HALF_DUPLEX, Ethernet.FULL_DUPLEX]: nm_wired_setting.props.duplex = setting.duplex return nm_wired_setting
def _get_ethernet_info(device, iface): ethernet = {} try: speed = int(device.get_speed()) if speed > 0: ethernet[Ethernet.SPEED] = speed else: return None except AttributeError: return None ethtool_results = minimal_ethtool(iface) auto_setting = ethtool_results[Ethernet.AUTO_NEGOTIATION] if auto_setting is True: ethernet[Ethernet.AUTO_NEGOTIATION] = True elif auto_setting is False: ethernet[Ethernet.AUTO_NEGOTIATION] = False else: return None duplex_setting = ethtool_results[Ethernet.DUPLEX] if duplex_setting in [Ethernet.HALF_DUPLEX, Ethernet.FULL_DUPLEX]: ethernet[Ethernet.DUPLEX] = duplex_setting else: return None sriov_info = sriov.get_info(device) if sriov_info: ethernet.update(sriov_info) return ethernet
def _get_ethernet_info(device, iface): ethernet = {} try: speed = int(device.get_speed()) if speed > 0: ethernet['speed'] = speed else: return None except AttributeError: return None ethtool_results = minimal_ethtool(iface) auto_setting = ethtool_results['auto-negotiation'] if auto_setting is True: ethernet['auto-negotiation'] = True elif auto_setting is False: ethernet['auto-negotiation'] = False else: return None duplex_setting = ethtool_results['duplex'] if duplex_setting in ['half', 'full']: ethernet['duplex'] = duplex_setting else: return None return ethernet
def get_info(device): """ Provides the current active values for a device """ info = {} iface = device.get_iface() try: info['mtu'] = int(device.get_mtu()) except AttributeError: pass ethernet = {} try: speed = int(device.get_speed()) if speed > 0: ethernet['speed'] = speed except AttributeError: pass ethtool_results = minimal_ethtool(iface) auto_setting = ethtool_results['auto-negotiation'] if auto_setting is True: ethernet['auto-negotiation'] = True elif auto_setting is False: ethernet['auto-negotiation'] = False duplex_setting = ethtool_results['duplex'] if duplex_setting != 'unknown': ethernet['duplex'] = duplex_setting if ethernet: info['ethernet'] = ethernet return info