Revision aca13712 lib/cmdlib.py

b/lib/cmdlib.py
2769 2769
  _ShutdownInstanceDisks.
2770 2770

  
2771 2771
  """
2772
  ins_l = lu.rpc.call_instance_list([instance.primary_node],
2773
                                      [instance.hypervisor])
2774
  ins_l = ins_l[instance.primary_node]
2775
  if ins_l.failed or not isinstance(ins_l.data, list):
2776
    raise errors.OpExecError("Can't contact node '%s'" %
2777
                             instance.primary_node)
2778

  
2779
  if instance.name in ins_l.data:
2772
  pnode = instance.primary_node
2773
  ins_l = lu.rpc.call_instance_list([pnode], [instance.hypervisor])
2774
  ins_l = ins_l[pnode]
2775
  msg = ins_l.RemoteFailMsg()
2776
  if msg:
2777
    raise errors.OpExecError("Can't contact node %s: %s" % (pnode, msg))
2778

  
2779
  if instance.name in ins_l.payload:
2780 2780
    raise errors.OpExecError("Instance is running, can't shutdown"
2781 2781
                             " block devices.")
2782 2782

  
......
3890 3890
                     " a bad state)")
3891 3891
    ins_l = self.rpc.call_instance_list(self.all_nodes, [instance.hypervisor])
3892 3892
    for node, result in ins_l.items():
3893
      result.Raise()
3894
      if not isinstance(result.data, list):
3895
        raise errors.OpExecError("Can't contact node '%s'" % node)
3893
      msg = result.RemoteFailMsg()
3894
      if msg:
3895
        raise errors.OpExecError("Can't contact node %s: %s" % (node, msg))
3896 3896

  
3897
    runningon_source = instance.name in ins_l[source_node].data
3898
    runningon_target = instance.name in ins_l[target_node].data
3897
    runningon_source = instance.name in ins_l[source_node].payload
3898
    runningon_target = instance.name in ins_l[target_node].payload
3899 3899

  
3900 3900
    if runningon_source and runningon_target:
3901 3901
      raise errors.OpExecError("Instance seems to be running on two nodes,"
......
5010 5010

  
5011 5011
    node_insts = self.rpc.call_instance_list([node],
5012 5012
                                             [instance.hypervisor])[node]
5013
    node_insts.Raise()
5013
    msg = node_insts.RemoteFailMsg()
5014
    if msg:
5015
      raise errors.OpExecError("Can't get node information from %s: %s" %
5016
                               (node, msg))
5014 5017

  
5015
    if instance.name not in node_insts.data:
5018
    if instance.name not in node_insts.payload:
5016 5019
      raise errors.OpExecError("Instance %s is not running." % instance.name)
5017 5020

  
5018 5021
    logging.debug("Connecting to console of %s on %s", instance.name, node)
......
6217 6220
                                     " an instance")
6218 6221
        ins_l = self.rpc.call_instance_list([pnode], [instance.hypervisor])
6219 6222
        ins_l = ins_l[pnode]
6220
        if ins_l.failed or not isinstance(ins_l.data, list):
6221
          raise errors.OpPrereqError("Can't contact node '%s'" % pnode)
6222
        if instance.name in ins_l.data:
6223
        msg = ins_l.RemoteFailMsg()
6224
        if msg:
6225
          raise errors.OpPrereqError("Can't contact node %s: %s" %
6226
                                     (pnode, msg))
6227
        if instance.name in ins_l.payload:
6223 6228
          raise errors.OpPrereqError("Instance is running, can't remove"
6224 6229
                                     " disks.")
6225 6230

  

Also available in: Unified diff