Revision 1a182390
b/lib/backend.py | ||
---|---|---|
3604 | 3604 |
@type checks: list |
3605 | 3605 |
@param checks: list of the checks to run (currently only 'parameters') |
3606 | 3606 |
@type osparams: dict |
3607 |
@param osparams: dictionary with OS parameters |
|
3607 |
@param osparams: dictionary with OS parameters, some of which may be |
|
3608 |
private. |
|
3608 | 3609 |
@rtype: boolean |
3609 | 3610 |
@return: True if the validation passed, or False if the OS was not |
3610 | 3611 |
found and L{required} was false |
b/lib/client/gnt_instance.py | ||
---|---|---|
1310 | 1310 |
@return: the desired exit code |
1311 | 1311 |
|
1312 | 1312 |
""" |
1313 |
if not (opts.nics or opts.disks or opts.disk_template or |
|
1314 |
opts.hvparams or opts.beparams or opts.os or opts.osparams or
|
|
1315 |
opts.offline_inst or opts.online_inst or opts.runtime_mem or |
|
1313 |
if not (opts.nics or opts.disks or opts.disk_template or opts.hvparams or
|
|
1314 |
opts.beparams or opts.os or opts.osparams or opts.osparams_private
|
|
1315 |
or opts.offline_inst or opts.online_inst or opts.runtime_mem or
|
|
1316 | 1316 |
opts.new_primary_node): |
1317 | 1317 |
ToStderr("Please give at least one of the parameters.") |
1318 | 1318 |
return 1 |
... | ... | |
1372 | 1372 |
runtime_mem=opts.runtime_mem, |
1373 | 1373 |
os_name=opts.os, |
1374 | 1374 |
osparams=opts.osparams, |
1375 |
osparams_private=opts.osparams_private, |
|
1375 | 1376 |
force_variant=opts.force_variant, |
1376 | 1377 |
force=opts.force, |
1377 | 1378 |
wait_for_sync=opts.wait_for_sync, |
b/lib/cmdlib/instance.py | ||
---|---|---|
2475 | 2475 |
if not (self.op.nics or self.op.disks or self.op.disk_template or |
2476 | 2476 |
self.op.hvparams or self.op.beparams or self.op.os_name or |
2477 | 2477 |
self.op.osparams or self.op.offline is not None or |
2478 |
self.op.runtime_mem or self.op.pnode): |
|
2478 |
self.op.runtime_mem or self.op.pnode or self.op.osparams_private):
|
|
2479 | 2479 |
raise errors.OpPrereqError("No changes submitted", errors.ECODE_INVAL) |
2480 | 2480 |
|
2481 | 2481 |
if self.op.hvparams: |
... | ... | |
3008 | 3008 |
hvspecs) |
3009 | 3009 |
|
3010 | 3010 |
# osparams processing |
3011 |
if self.op.osparams: |
|
3012 |
i_osdict = GetUpdatedParams(self.instance.osparams, self.op.osparams) |
|
3013 |
CheckOSParams(self, True, node_uuids, instance_os, i_osdict) |
|
3014 |
self.os_inst = i_osdict # the new dict (without defaults) |
|
3011 |
if self.op.osparams or self.op.osparams_private_cluster: |
|
3012 |
public_parms = self.op.osparams or {} |
|
3013 |
private_parms = self.op.osparams_private_cluster or {} |
|
3014 |
dupe_keys = utils.GetRepeatedKeys(public_parms, private_parms) |
|
3015 |
|
|
3016 |
if dupe_keys: |
|
3017 |
raise errors.OpPrereqError("OS parameters repeated multiple times: %s" % |
|
3018 |
utils.CommaJoin(dupe_keys)) |
|
3019 |
|
|
3020 |
self.os_inst = GetUpdatedParams(self.instance.osparams, |
|
3021 |
public_parms) |
|
3022 |
self.os_inst_private = GetUpdatedParams(self.instance.osparams_private, |
|
3023 |
private_parms) |
|
3024 |
|
|
3025 |
CheckOSParams(self, True, node_uuids, instance_os, |
|
3026 |
objects.FillDict(self.os_inst, |
|
3027 |
self.os_inst_private)) |
|
3028 |
|
|
3015 | 3029 |
else: |
3016 | 3030 |
self.os_inst = {} |
3031 |
self.os_inst_private = {} |
|
3017 | 3032 |
|
3018 | 3033 |
#TODO(dynmem): do the appropriate check involving MINMEM |
3019 | 3034 |
if (constants.BE_MAXMEM in self.op.beparams and not self.op.force and |
... | ... | |
3610 | 3625 |
for key, val in self.op.osparams.iteritems(): |
3611 | 3626 |
result.append(("os/%s" % key, val)) |
3612 | 3627 |
|
3628 |
if self.op.osparams_private: |
|
3629 |
self.instance.osparams_private = self.os_inst_private |
|
3630 |
for key, val in self.op.osparams_private.iteritems(): |
|
3631 |
# Show the Private(...) blurb. |
|
3632 |
result.append(("os_private/%s" % key, repr(val))) |
|
3633 |
|
|
3613 | 3634 |
if self.op.offline is None: |
3614 | 3635 |
# Ignore |
3615 | 3636 |
pass |
b/lib/rpc/node.py | ||
---|---|---|
501 | 501 |
# name to the prep_fn, and serialise its return value |
502 | 502 |
encode_args_fn = lambda node: map(compat.partial(self._encoder, node), |
503 | 503 |
zip(map(compat.snd, argdefs), args)) |
504 |
pnbody = dict((n, serializer.DumpJson(prep_fn(n, encode_args_fn(n)))) |
|
505 |
for n in node_list) |
|
504 |
pnbody = dict( |
|
505 |
(n, |
|
506 |
serializer.DumpJson(prep_fn(n, encode_args_fn(n)), |
|
507 |
private_encoder=serializer.EncodeWithPrivateFields)) |
|
508 |
for n in node_list |
|
509 |
) |
|
506 | 510 |
|
507 | 511 |
result = self._proc(node_list, procedure, pnbody, read_timeout, |
508 | 512 |
req_resolver_opts) |
b/man/gnt-instance.rst | ||
---|---|---|
1173 | 1173 |
| [\--new-primary=*node*] |
1174 | 1174 |
| [\--os-type=*OS* [\--force-variant]] |
1175 | 1175 |
| [{-O|\--os-parameters} *param*=*value*... ] |
1176 |
| [--os-parameters-private *param*=*value*... ] |
|
1176 | 1177 |
| [\--offline \| \--online] |
1177 | 1178 |
| [\--submit] [\--print-job-id] |
1178 | 1179 |
| [\--ignore-ipolicy] |
b/src/Ganeti/OpCodes.hs | ||
---|---|---|
648 | 648 |
pRemoteNodeUuid |
649 | 649 |
, pOsNameChange |
650 | 650 |
, pInstOsParams |
651 |
, pInstOsParamsPrivate |
|
651 | 652 |
, pWaitForSync |
652 | 653 |
, withDoc "Whether to mark the instance as offline" pOffline |
653 | 654 |
, pIpConflictsCheck |
b/test/hs/Test/Ganeti/OpCodes.hs | ||
---|---|---|
285 | 285 |
OpCodes.OpInstanceQueryData <$> arbitrary <*> |
286 | 286 |
genNodeNamesNE <*> arbitrary |
287 | 287 |
"OP_INSTANCE_SET_PARAMS" -> |
288 |
OpCodes.OpInstanceSetParams <$> genFQDN <*> return Nothing <*> |
|
289 |
arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> |
|
290 |
arbitrary <*> pure emptyJSObject <*> arbitrary <*> |
|
291 |
pure emptyJSObject <*> arbitrary <*> genMaybe genNodeNameNE <*> |
|
292 |
return Nothing <*> genMaybe genNodeNameNE <*> return Nothing <*> |
|
293 |
genMaybe genNameNE <*> pure emptyJSObject <*> arbitrary <*> |
|
294 |
arbitrary <*> arbitrary <*> arbitrary <*> arbitrary |
|
288 |
OpCodes.OpInstanceSetParams |
|
289 |
<$> genFQDN -- instance_name |
|
290 |
<*> return Nothing -- instance_uuid |
|
291 |
<*> arbitrary -- force |
|
292 |
<*> arbitrary -- force_variant |
|
293 |
<*> arbitrary -- ignore_ipolicy |
|
294 |
<*> arbitrary -- nics |
|
295 |
<*> arbitrary -- disks |
|
296 |
<*> pure emptyJSObject -- beparams |
|
297 |
<*> arbitrary -- runtime_mem |
|
298 |
<*> pure emptyJSObject -- hvparams |
|
299 |
<*> arbitrary -- disk_template |
|
300 |
<*> genMaybe genNodeNameNE -- pnode |
|
301 |
<*> return Nothing -- pnode_uuid |
|
302 |
<*> genMaybe genNodeNameNE -- remote_node |
|
303 |
<*> return Nothing -- remote_node_uuid |
|
304 |
<*> genMaybe genNameNE -- os_name |
|
305 |
<*> pure emptyJSObject -- osparams |
|
306 |
<*> genMaybe arbitraryPrivateJSObj -- osparams_private |
|
307 |
<*> arbitrary -- wait_for_sync |
|
308 |
<*> arbitrary -- offline |
|
309 |
<*> arbitrary -- conflicts_check |
|
310 |
<*> arbitrary -- hotplug |
|
311 |
<*> arbitrary -- hotplug_if_possible |
|
295 | 312 |
"OP_INSTANCE_GROW_DISK" -> |
296 | 313 |
OpCodes.OpInstanceGrowDisk <$> genFQDN <*> return Nothing <*> |
297 | 314 |
arbitrary <*> arbitrary <*> arbitrary <*> arbitrary |
Also available in: Unified diff