Example #1
0
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
Example #2
0
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
Example #3
0
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
Example #4
0
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
Example #5
0
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