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)
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)
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)
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)
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)
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)