"oper_state": "Running",
"oper_ram": "Memory", "disk_template": "Disk_template",
"ip": "IP_address", "mac": "MAC_address",
+ "nic_mode": "NIC_Mode", "nic_link": "NIC_Link",
"bridge": "Bridge",
"sda_size": "Disk/0", "sdb_size": "Disk/1",
"disk_usage": "DiskUsage",
"be/auto_balance": "Auto_balance",
"disk.count": "Disks", "disk.sizes": "Disk_sizes",
"nic.count": "NICs", "nic.ips": "NIC_IPs",
+ "nic.modes": "NIC_modes", "nic.links": "NIC_links",
"nic.bridges": "NIC_bridges", "nic.macs": "NIC_MACs",
}
else:
numfields = ["be/memory", "oper_ram", "sd(a|b)_size", "be/vcpus",
"serial_no", "(disk|nic)\.count", "disk\.size/.*"]
- list_type_fields = ("tags", "disk.sizes",
- "nic.macs", "nic.ips", "nic.bridges")
+ list_type_fields = ("tags", "disk.sizes", "nic.macs", "nic.ips",
+ "nic.modes", "nic.links", "nic.bridges")
# change raw values to nicer strings
for row in output:
for idx, field in enumerate(selected_fields):
"iallocator": None,
"primary_node": None,
"secondary_node": None,
- "ip": 'none',
- "mac": 'auto',
- "bridge": None,
+ "nics": None,
"start": True,
"ip_check": True,
"hypervisor": None,
(elem, name, err))
disks.append({"size": size})
- nic0 = {'ip': specs['ip'], 'bridge': specs['bridge'], 'mac': specs['mac']}
-
utils.ForceDictType(specs['backend'], constants.BES_PARAMETER_TYPES)
utils.ForceDictType(hvparams, constants.HVS_PARAMETER_TYPES)
+ tmp_nics = []
+ for field in ('ip', 'mac', 'mode', 'link', 'bridge'):
+ if field in specs:
+ if not tmp_nics:
+ tmp_nics.append({})
+ tmp_nics[0][field] = specs[field]
+
+ if specs['nics'] is not None and tmp_nics:
+ raise errors.OpPrereqError("'nics' list incompatible with using"
+ " individual nic fields as well")
+ elif specs['nics'] is not None:
+ tmp_nics = specs['nics']
+ elif not tmp_nics:
+ tmp_nics = [{}]
+
op = opcodes.OpCreateInstance(instance_name=name,
disks=disks,
disk_template=specs['template'],
os_type=specs['os'],
pnode=specs['primary_node'],
snode=specs['secondary_node'],
- nics=[nic0],
+ nics=tmp_nics,
start=specs['start'],
ip_check=specs['ip_check'],
wait_for_sync=True,
else:
if not opts.force:
usertext = ("This will reinstall the instance %s and remove"
- " all data. Continue?") % instance_name
+ " all data. Continue?") % inames[0]
if not AskUser(usertext):
return 1
buf.write(" - memory: %dMiB\n" %
instance["be_actual"][constants.BE_MEMORY])
buf.write(" - NICs:\n")
- for idx, (mac, ip, bridge) in enumerate(instance["nics"]):
- buf.write(" - nic/%d: MAC: %s, IP: %s, bridge: %s\n" %
- (idx, mac, ip, bridge))
+ for idx, (mac, ip, mode, link) in enumerate(instance["nics"]):
+ buf.write(" - nic/%d: MAC: %s, IP: %s, mode: %s, link: %s\n" %
+ (idx, mac, ip, mode, link))
buf.write(" Disks:\n")
for idx, device in enumerate(instance["disks"]):
"Lists the instances and their status. The available fields are"
" (see the man page for details): status, oper_state, oper_ram,"
" name, os, pnode, snodes, admin_state, admin_ram, disk_template,"
- " ip, mac, bridge, sda_size, sdb_size, vcpus, serial_no,"
+ " ip, mac, mode, link, sda_size, sdb_size, vcpus, serial_no,"
" hypervisor."
" The default field"
" list is (in order): %s." % ", ".join(_LIST_DEF_FIELDS),