Revision 1a182390 lib/cmdlib/instance.py
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 |
Also available in: Unified diff