Beispiel #1
0
def do_host_if_list(cc, args):
    """List interfaces."""

    iinterfaces = cc.iinterface.list(args.hostnameorid)
    ihost = ihost_utils._find_ihost(cc, args.hostnameorid)
    for i in iinterfaces[:]:
        iinterface_utils._get_ports(cc, ihost, i)
        if not args.all:
            if i.ifclass is None and i.used_by == []:
                iinterfaces.remove(i)
        attr_str = "MTU=%s" % i.imtu
        if i.iftype == 'ae':
            attr_str = "%s,AE_MODE=%s" % (attr_str, i.aemode)
            if i.aemode in ['balanced', '802.3ad']:
                attr_str = "%s,AE_XMIT_POLICY=%s" % (
                    attr_str, i.txhashpolicy)
        if i.ifclass and i.ifclass == 'data':
            if False in i.dpdksupport:
                attr_str = "%s,accelerated=False" % attr_str
            else:
                attr_str = "%s,accelerated=True" % attr_str
        setattr(i, 'attrs', attr_str)

    field_labels = ['uuid', 'name', 'class', 'type', 'vlan id', 'ports',
                    'uses i/f', 'used by i/f', 'attributes']
    fields = ['uuid', 'ifname', 'ifclass', 'iftype', 'vlan_id', 'ports',
              'uses', 'used_by', 'attrs']
    utils.print_list(
        iinterfaces, fields, field_labels, sortby=0, no_wrap_fields=['ports'])
def do_host_apply_ifprofile(cc, args):
    """Apply an interface profile to a host."""

    # Assemble patch
    profile = iprofile_utils._find_iprofile(cc, args.profilenameoruuid)
    patch = _prepare_profile_patch(profile.uuid)

    # Send patch
    host = ihost_utils._find_ihost(cc, args.hostnameorid)
    try:
        host = cc.ihost.update(host.id, patch)
    except exc.HTTPNotFound:
        raise exc.CommandError('host not found: %s' % args.hostnameorid)

    # Echo list of new host interfaces
    iinterfaces = cc.iinterface.list(host.uuid)
    for i in iinterfaces:
        iinterface_utils._get_ports(cc, host, i)
    field_labels = [
        'uuid', 'name', 'network type', 'type', 'vlan id', 'ports', 'uses',
        'used by', 'mtu', 'provider networks'
    ]
    fields = [
        'uuid', 'ifname', 'networktype', 'iftype', 'vlan_id', 'ports', 'uses',
        'used_by', 'imtu', 'providernetworks'
    ]
    utils.print_list(iinterfaces, fields, field_labels, sortby=0)
Beispiel #3
0
def do_host_if_modify(cc, args):
    """Modify interface attributes."""

    rwfields = ['iftype', 'ifname', 'imtu', 'aemode', 'txhashpolicy',
                'ports', 'ifclass',
                'ipv4_mode', 'ipv6_mode', 'ipv4_pool', 'ipv6_pool',
                'sriov_numvfs', 'sriov_vf_driver']

    ihost = ihost_utils._find_ihost(cc, args.hostnameorid)

    user_specified_fields = dict((k, v) for (k, v) in vars(args).items()
                                 if k in rwfields and not (v is None))

    interface = _find_interface(cc, ihost, args.ifnameoruuid)
    fields = interface.__dict__
    fields.update(user_specified_fields)

    # Allow setting an interface back to a None type
    if 'ifclass' in user_specified_fields.keys():
        if args.ifclass == 'none':
            iinterface_utils._get_ports(cc, ihost, interface)
            if interface.ports or interface.uses:
                if interface.iftype != 'ae' and interface.iftype != 'vlan':
                    for p in interface.ports:
                        user_specified_fields['ifname'] = p
                        break

    patch = []
    for (k, v) in user_specified_fields.items():
        patch.append({'op': 'replace', 'path': '/' + k, 'value': v})

    iinterface = cc.iinterface.update(interface.uuid, patch)
    iinterface_utils._get_ports(cc, ihost, iinterface)
    _print_iinterface_show(cc, iinterface)
Beispiel #4
0
def do_host_if_show(cc, args):
    """Show interface attributes."""
    ihost = ihost_utils._find_ihost(cc, args.hostnameorid)

    i = _find_interface(cc, ihost, args.ifnameoruuid)
    iinterface_utils._get_ports(cc, ihost, i)

    _print_iinterface_show(cc, i)
Beispiel #5
0
def do_host_if_add(cc, args):
    """Add an interface."""

    field_list = [
        'ifname', 'iftype', 'imtu', 'ifclass', 'networks', 'aemode',
        'txhashpolicy', 'datanetworks', 'vlan_id', 'ipv4_mode', 'ipv6_mode',
        'ipv4_pool', 'ipv6_pool'
    ]

    ihost = ihost_utils._find_ihost(cc, args.hostnameorid)

    user_specified_fields = dict((k, v) for (k, v) in vars(args).items()
                                 if k in field_list and not (v is None))

    if 'iftype' in user_specified_fields.keys():
        if args.iftype == 'ae' or args.iftype == 'vlan':
            uses = args.portsorifaces
            portnamesoruuids = None
        elif args.iftype == 'virtual':
            uses = None
            portnamesoruuids = []
        else:
            uses = None
            portnamesoruuids = ','.join(args.portsorifaces)

    user_specified_fields = dict((k, v) for (k, v) in vars(args).items()
                                 if k in field_list and not (v is None))

    if 'datanetworks' in user_specified_fields.keys():
        user_specified_fields['datanetworks'] = \
            user_specified_fields['datanetworks'].split(',')

    if 'networks' in user_specified_fields.keys():
        network = network_utils._find_network(cc, args.networks)
        user_specified_fields['networks'] = [str(network.id)]

    user_specified_fields['ihost_uuid'] = ihost.uuid
    user_specified_fields['ports'] = portnamesoruuids
    user_specified_fields['uses'] = uses
    iinterface = cc.iinterface.create(**user_specified_fields)
    suuid = getattr(iinterface, 'uuid', '')
    try:
        iinterface = cc.iinterface.get(suuid)
    except exc.HTTPNotFound:
        raise exc.CommandError('Created Interface UUID not found: %s' % suuid)

    iinterface_utils._get_ports(cc, ihost, iinterface)
    _print_iinterface_show(cc, iinterface)
Beispiel #6
0
def do_host_if_add(cc, args):
    """Add an interface."""

    field_list = ['ifname', 'iftype', 'imtu', 'ifclass', 'aemode',
                  'txhashpolicy', 'vlan_id', 'ptp_role', 'primary_reselect',
                  'ipv4_mode', 'ipv6_mode', 'ipv4_pool', 'ipv6_pool',
                  'sriov_numvfs', 'sriov_vf_driver', 'max_tx_rate']

    ihost = ihost_utils._find_ihost(cc, args.hostnameorid)

    user_specified_fields = dict((k, v) for (k, v) in vars(args).items()
                                 if k in field_list and not (v is None))

    if 'iftype' in list(user_specified_fields.keys()):
        if args.iftype == 'ae' or args.iftype == 'vlan':
            uses = args.portsorifaces
            portnamesoruuids = None
        elif args.iftype == 'virtual':
            uses = None
            portnamesoruuids = []
        elif args.iftype == 'vf':
            uses = args.portsorifaces
            portnamesoruuids = None
        elif args.iftype == 'ethernet':
            uses = args.portsorifaces
            portnamesoruuids = None
        else:
            uses = None
            portnamesoruuids = ','.join(args.portsorifaces)

    user_specified_fields = dict((k, v) for (k, v) in vars(args).items()
                                 if k in field_list and not (v is None))

    user_specified_fields['ihost_uuid'] = ihost.uuid
    user_specified_fields['ports'] = portnamesoruuids
    user_specified_fields['uses'] = uses
    iinterface = cc.iinterface.create(**user_specified_fields)
    suuid = getattr(iinterface, 'uuid', '')
    try:
        iinterface = cc.iinterface.get(suuid)
    except exc.HTTPNotFound:
        raise exc.CommandError('Created Interface UUID not found: %s' % suuid)

    iinterface_utils._get_ports(cc, ihost, iinterface)
    _print_iinterface_show(cc, iinterface)
Beispiel #7
0
def do_host_apply_profile(cc, args):
    """Apply a profile to a host."""

    # Assemble patch
    profile = iprofile_utils._find_iprofile(cc, args.profilenameoruuid)
    patch = _prepare_profile_patch(profile.uuid)

    # Send patch
    host = ihost_utils._find_ihost(cc, args.hostnameorid)
    try:
        host = cc.ihost.update(host.id, patch)
    except exc.HTTPNotFound:
        raise exc.CommandError('host not found: %s' % args.hostnameorid)

    # Echo list of new host interfaces
    iinterfaces = cc.iinterface.list(host.uuid)
    for i in iinterfaces:
        iinterface_utils._get_ports(cc, host, i)
    field_labels = ['uuid', 'name', 'network type', 'type', 'vlan id', 'ports', 'uses', 'used by', 'mtu', 'provider networks']
    fields = ['uuid', 'ifname', 'networktype', 'iftype', 'vlan_id', 'ports', 'uses', 'used_by', 'imtu', 'providernetworks']
    utils.print_list(iinterfaces, fields, field_labels, sortby=0)

    # Echo list of new host cpus
    icpus = cc.icpu.list(host.uuid)
    field_labels = ['uuid', 'log_core', 'processor', 'phy_core', 'thread',
                    'processor_model', 'assigned_function']
    fields = ['uuid', 'cpu', 'numa_node', 'core', 'thread',
              'cpu_model', 'allocated_function']
    utils.print_list(icpus, fields, field_labels, sortby=1,
                     formatters={'allocated_function':
                                 icpu_utils._cpu_function_tuple_formatter})

    _list_storage(cc, host)

    # Echo list of new memory
    imemory = cc.imemory.list(host.uuid)
    field_labels = ['uuid', 'application_hugepages_1G', 'application_hugepages_2M',
                    'application_hugepages_2M_pending',
                    'application_hugepages_1G_pending']

    fields = ['uuid', 'vm_hugepages_nr_1G', 'vm_hugepages_nr_2M',
              'vm_hugepages_nr_2M_pending', 'vm_hugepages_nr_1G_pending']
    utils.print_list(imemory, fields, field_labels, sortby=0)