for nidx, ndict in opts.nics.items():
nidx = int(nidx)
nics[nidx] = ndict
+ elif opts.no_nics:
+ # no nics
+ nics = []
else:
# default of one nic, all auto
nics = [{}]
- if not opts.disks and opts.disk_template != constants.DT_DISKLESS:
- raise errors.OpPrereqError("No disk information specified")
- elif opts.disks and opts.disk_template == constants.DT_DISKLESS:
- raise errors.OpPrereqError("Diskless instance but disk information passeD")
+ if opts.disk_template == constants.DT_DISKLESS:
+ if opts.disks:
+ raise errors.OpPrereqError("Diskless instance but disk"
+ " information passed")
+ disks = []
else:
+ if not opts.disks:
+ raise errors.OpPrereqError("No disk information specified")
try:
disk_max = max(int(didx[0])+1 for didx in opts.disks)
except ValueError, err:
data = " - %s, " % dev["iv_name"]
else:
data = " - "
+ data += "access mode: %s, " % dev["mode"]
data += "type: %s" % dev["dev_type"]
if dev["logical_id"] is not None:
data += ", logical_id: %s" % (dev["logical_id"],)
@return: the desired exit code
"""
- if not (opts.ip or opts.bridge or opts.mac or
+ if not (opts.nics or opts.disks or
opts.hypervisor or opts.beparams):
ToStderr("Please give at least one of the parameters.")
return 1
opts.beparams[constants.BE_MEMORY] = utils.ParseUnit(
opts.beparams[constants.BE_MEMORY])
+ for idx, (nic_op, nic_dict) in enumerate(opts.nics):
+ try:
+ nic_op = int(nic_op)
+ opts.nics[idx] = (nic_op, nic_dict)
+ except ValueError:
+ pass
+
+ for idx, (disk_op, disk_dict) in enumerate(opts.disks):
+ try:
+ disk_op = int(disk_op)
+ opts.disks[idx] = (disk_op, disk_dict)
+ except ValueError:
+ pass
+ if disk_op == constants.DDM_ADD:
+ if 'size' not in disk_dict:
+ raise errors.OpPrereqError("Missing required parameter 'size'")
+ disk_dict['size'] = utils.ParseUnit(disk_dict['size'])
+
op = opcodes.OpSetInstanceParams(instance_name=args[0],
- ip=opts.ip,
- bridge=opts.bridge, mac=opts.mac,
+ nics=opts.nics,
+ disks=opts.disks,
hvparams=opts.hypervisor,
beparams=opts.beparams,
force=opts.force)
default=[], dest="nics",
action="append",
type="identkeyval"),
+ make_option("--no-nics", default=False, action="store_true",
+ help="Do not create any network cards for the instance"),
make_option("--no-wait-for-sync", dest="wait_for_sync", default=True,
action="store_false", help="Don't wait for sync (DANGEROUS!)"),
make_option("--no-start", dest="start", default=True,
"Replaces all disks for the instance"),
'modify': (SetInstanceParams, ARGS_ONE,
[DEBUG_OPT, FORCE_OPT,
- make_option("-i", "--ip", dest="ip",
- help="IP address ('none' or numeric IP)",
- default=None, type="string", metavar="<ADDRESS>"),
- make_option("-b", "--bridge", dest="bridge",
- help="Bridge to connect this instance to",
- default=None, type="string", metavar="<bridge>"),
- make_option("--mac", dest="mac",
- help="MAC address", default=None,
- type="string", metavar="<MACADDRESS>"),
keyval_option("-H", "--hypervisor", type="keyval",
default={}, dest="hypervisor",
help="Change hypervisor parameters"),
keyval_option("-B", "--backend", type="keyval",
default={}, dest="beparams",
help="Change backend parameters"),
+ ikv_option("--disk", help="Disk changes",
+ default=[], dest="disks",
+ action="append",
+ type="identkeyval"),
+ ikv_option("--net", help="NIC changes",
+ default=[], dest="nics",
+ action="append",
+ type="identkeyval"),
SUBMIT_OPT,
],
"<instance>", "Alters the parameters of an instance"),