Revision debac808 scripts/gnt-instance
b/scripts/gnt-instance | ||
---|---|---|
79 | 79 |
client = GetClient() |
80 | 80 |
if mode == _SHUTDOWN_CLUSTER: |
81 | 81 |
if names: |
82 |
raise errors.OpPrereqError("Cluster filter mode takes no arguments") |
|
82 |
raise errors.OpPrereqError("Cluster filter mode takes no arguments", |
|
83 |
errors.ECODE_INVAL) |
|
83 | 84 |
idata = client.QueryInstances([], ["name"], False) |
84 | 85 |
inames = [row[0] for row in idata] |
85 | 86 |
|
... | ... | |
87 | 88 |
_SHUTDOWN_NODES_PRI, |
88 | 89 |
_SHUTDOWN_NODES_SEC): |
89 | 90 |
if not names: |
90 |
raise errors.OpPrereqError("No node names passed") |
|
91 |
raise errors.OpPrereqError("No node names passed", errors.ECODE_INVAL)
|
|
91 | 92 |
ndata = client.QueryNodes(names, ["name", "pinst_list", "sinst_list"], |
92 | 93 |
False) |
93 | 94 |
ipri = [row[1] for row in ndata] |
... | ... | |
105 | 106 |
|
106 | 107 |
elif mode == _SHUTDOWN_INSTANCES: |
107 | 108 |
if not names: |
108 |
raise errors.OpPrereqError("No instance names passed") |
|
109 |
raise errors.OpPrereqError("No instance names passed", |
|
110 |
errors.ECODE_INVAL) |
|
109 | 111 |
idata = client.QueryInstances(names, ["name"], False) |
110 | 112 |
inames = [row[0] for row in idata] |
111 | 113 |
|
112 | 114 |
else: |
113 |
raise errors.OpPrereqError("Unknown mode '%s'" % mode) |
|
115 |
raise errors.OpPrereqError("Unknown mode '%s'" % mode, errors.ECODE_INVAL)
|
|
114 | 116 |
|
115 | 117 |
return inames |
116 | 118 |
|
... | ... | |
171 | 173 |
result = client.QueryInstances(names, ["name"], False) |
172 | 174 |
for orig_name, row in zip(names, result): |
173 | 175 |
if row[0] is None: |
174 |
raise errors.OpPrereqError("Instance '%s' does not exist" % orig_name) |
|
176 |
raise errors.OpPrereqError("Instance '%s' does not exist" % orig_name, |
|
177 |
errors.ECODE_NOENT) |
|
175 | 178 |
|
176 | 179 |
|
177 | 180 |
def GenericManyOps(operation, fn): |
... | ... | |
190 | 193 |
inames = _ExpandMultiNames(opts.multi_mode, args, client=cl) |
191 | 194 |
if not inames: |
192 | 195 |
raise errors.OpPrereqError("Selection filter does not match" |
193 |
" any instances") |
|
196 |
" any instances", errors.ECODE_INVAL)
|
|
194 | 197 |
multi_on = opts.multi_mode != _SHUTDOWN_INSTANCES or len(inames) > 1 |
195 | 198 |
if not (opts.force_multi or not multi_on |
196 | 199 |
or _ConfirmOperation(inames, operation)): |
... | ... | |
371 | 374 |
for required_field in ('os', 'template'): |
372 | 375 |
if required_field not in spec: |
373 | 376 |
raise errors.OpPrereqError('Required field "%s" is missing.' % |
374 |
required_field) |
|
377 |
required_field, errors.ECODE_INVAL)
|
|
375 | 378 |
# Validate special fields |
376 | 379 |
if spec['primary_node'] is not None: |
377 | 380 |
if (spec['template'] in constants.DTS_NET_MIRROR and |
378 | 381 |
spec['secondary_node'] is None): |
379 | 382 |
raise errors.OpPrereqError('Template requires secondary node, but' |
380 |
' there was no secondary provided.') |
|
383 |
' there was no secondary provided.', |
|
384 |
errors.ECODE_INVAL) |
|
381 | 385 |
elif spec['iallocator'] is None: |
382 | 386 |
raise errors.OpPrereqError('You have to provide at least a primary_node' |
383 |
' or an iallocator.') |
|
387 |
' or an iallocator.', |
|
388 |
errors.ECODE_INVAL) |
|
384 | 389 |
|
385 | 390 |
if (spec['hvparams'] and |
386 | 391 |
not isinstance(spec['hvparams'], dict)): |
387 |
raise errors.OpPrereqError('Hypervisor parameters must be a dict.') |
|
392 |
raise errors.OpPrereqError('Hypervisor parameters must be a dict.', |
|
393 |
errors.ECODE_INVAL) |
|
388 | 394 |
|
389 | 395 |
json_filename = args[0] |
390 | 396 |
try: |
... | ... | |
414 | 420 |
except ValueError, err: |
415 | 421 |
raise errors.OpPrereqError("Invalid disk size '%s' for" |
416 | 422 |
" instance %s: %s" % |
417 |
(elem, name, err)) |
|
423 |
(elem, name, err), errors.ECODE_INVAL)
|
|
418 | 424 |
disks.append({"size": size}) |
419 | 425 |
|
420 | 426 |
utils.ForceDictType(specs['backend'], constants.BES_PARAMETER_TYPES) |
... | ... | |
429 | 435 |
|
430 | 436 |
if specs['nics'] is not None and tmp_nics: |
431 | 437 |
raise errors.OpPrereqError("'nics' list incompatible with using" |
432 |
" individual nic fields as well") |
|
438 |
" individual nic fields as well", |
|
439 |
errors.ECODE_INVAL) |
|
433 | 440 |
elif specs['nics'] is not None: |
434 | 441 |
tmp_nics = specs['nics'] |
435 | 442 |
elif not tmp_nics: |
... | ... | |
478 | 485 |
|
479 | 486 |
inames = _ExpandMultiNames(opts.multi_mode, args) |
480 | 487 |
if not inames: |
481 |
raise errors.OpPrereqError("Selection filter does not match any instances") |
|
488 |
raise errors.OpPrereqError("Selection filter does not match any instances", |
|
489 |
errors.ECODE_INVAL) |
|
482 | 490 |
|
483 | 491 |
# second, if requested, ask for an OS |
484 | 492 |
if opts.select_os is True: |
... | ... | |
672 | 680 |
try: |
673 | 681 |
disk = int(disk) |
674 | 682 |
except ValueError, err: |
675 |
raise errors.OpPrereqError("Invalid disk index: %s" % str(err)) |
|
683 |
raise errors.OpPrereqError("Invalid disk index: %s" % str(err), |
|
684 |
errors.ECODE_INVAL) |
|
676 | 685 |
amount = utils.ParseUnit(args[2]) |
677 | 686 |
op = opcodes.OpGrowDisk(instance_name=instance, disk=disk, amount=amount, |
678 | 687 |
wait_for_sync=opts.wait_for_sync) |
... | ... | |
752 | 761 |
try: |
753 | 762 |
disks = [int(i) for i in opts.disks.split(",")] |
754 | 763 |
except ValueError, err: |
755 |
raise errors.OpPrereqError("Invalid disk index passed: %s" % str(err)) |
|
764 |
raise errors.OpPrereqError("Invalid disk index passed: %s" % str(err), |
|
765 |
errors.ECODE_INVAL) |
|
756 | 766 |
cnt = [opts.on_primary, opts.on_secondary, opts.auto, |
757 | 767 |
new_2ndary is not None, iallocator is not None].count(True) |
758 | 768 |
if cnt != 1: |
759 | 769 |
raise errors.OpPrereqError("One and only one of the -p, -s, -a, -n and -i" |
760 |
" options must be passed") |
|
770 |
" options must be passed", errors.ECODE_INVAL)
|
|
761 | 771 |
elif opts.on_primary: |
762 | 772 |
mode = constants.REPLACE_DISK_PRI |
763 | 773 |
elif opts.on_secondary: |
... | ... | |
766 | 776 |
mode = constants.REPLACE_DISK_AUTO |
767 | 777 |
if disks: |
768 | 778 |
raise errors.OpPrereqError("Cannot specify disks when using automatic" |
769 |
" mode") |
|
779 |
" mode", errors.ECODE_INVAL)
|
|
770 | 780 |
elif new_2ndary is not None or iallocator is not None: |
771 | 781 |
# replace secondary |
772 | 782 |
mode = constants.REPLACE_DISK_CHG |
... | ... | |
1208 | 1218 |
pass |
1209 | 1219 |
if disk_op == constants.DDM_ADD: |
1210 | 1220 |
if 'size' not in disk_dict: |
1211 |
raise errors.OpPrereqError("Missing required parameter 'size'") |
|
1221 |
raise errors.OpPrereqError("Missing required parameter 'size'", |
|
1222 |
errors.ECODE_INVAL) |
|
1212 | 1223 |
disk_dict['size'] = utils.ParseUnit(disk_dict['size']) |
1213 | 1224 |
|
1214 | 1225 |
op = opcodes.OpSetInstanceParams(instance_name=args[0], |
Also available in: Unified diff