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