Revision 75248363 lib/cmdlib.py

b/lib/cmdlib.py
13358 13358
  def CheckArguments(self):
13359 13359
    if not (self.op.nics or self.op.disks or self.op.disk_template or
13360 13360
            self.op.hvparams or self.op.beparams or self.op.os_name or
13361
            self.op.offline is not None or self.op.runtime_mem):
13361
            self.op.offline is not None or self.op.runtime_mem or
13362
            self.op.pnode):
13362 13363
      raise errors.OpPrereqError("No changes submitted", errors.ECODE_INVAL)
13363 13364

  
13364 13365
    if self.op.hvparams:
......
13386 13387
    self._CheckMods("NIC", self.op.nics, constants.INIC_PARAMS_TYPES,
13387 13388
                    self._VerifyNicModification)
13388 13389

  
13390
    if self.op.pnode:
13391
      self.op.pnode = _ExpandNodeName(self.cfg, self.op.pnode)
13392

  
13389 13393
  def ExpandNames(self):
13390 13394
    self._ExpandAndLockInstance()
13391 13395
    self.needed_locks[locking.LEVEL_NODEGROUP] = []
......
13668 13672
      "Cannot retrieve locked instance %s" % self.op.instance_name
13669 13673

  
13670 13674
    pnode = instance.primary_node
13675

  
13676
    self.warn = []
13677

  
13678
    if (self.op.pnode is not None and self.op.pnode != pnode and
13679
        not self.op.force):
13680
      # verify that the instance is not up
13681
      instance_info = self.rpc.call_instance_info(pnode, instance.name,
13682
                                                  instance.hypervisor)
13683
      if instance_info.fail_msg:
13684
        self.warn.append("Can't get instance runtime information: %s" %
13685
                         instance_info.fail_msg)
13686
      elif instance_info.payload:
13687
        raise errors.OpPrereqError("Instance is still running on %s" % pnode,
13688
                                   errors.ECODE_STATE)
13689

  
13671 13690
    assert pnode in self.owned_locks(locking.LEVEL_NODE)
13672 13691
    nodelist = list(instance.all_nodes)
13673 13692
    pnode_info = self.cfg.GetNodeInfo(pnode)
......
13800 13819
    else:
13801 13820
      self.os_inst = {}
13802 13821

  
13803
    self.warn = []
13804

  
13805 13822
    #TODO(dynmem): do the appropriate check involving MINMEM
13806 13823
    if (constants.BE_MAXMEM in self.op.beparams and not self.op.force and
13807 13824
        be_new[constants.BE_MAXMEM] > be_old[constants.BE_MAXMEM]):
......
14234 14251
    result = []
14235 14252
    instance = self.instance
14236 14253

  
14254
    # New primary node
14255
    if self.op.pnode:
14256
      instance.primary_node = self.op.pnode
14257

  
14237 14258
    # runtime memory
14238 14259
    if self.op.runtime_mem:
14239 14260
      rpcres = self.rpc.call_instance_balloon_memory(instance.primary_node,

Also available in: Unified diff