Revision 045dd6d9

b/lib/cmdlib.py
716 716
  if brlist:
717 717
    result = lu.rpc.call_bridges_exist(target_node, brlist)
718 718
    result.Raise("Error checking bridges on destination node '%s'" %
719
                 target_node, prereq=True)
719
                 target_node, prereq=True, ecode=errors.ECODE_ENVIRON)
720 720

  
721 721

  
722 722
def _CheckInstanceBridgesExist(lu, instance, node=None):
......
797 797

  
798 798
  result = rpc.call_blockdev_getmirrorstatus(node_name, instance.disks)
799 799
  result.Raise("Failed to get disk status from node %s" % node_name,
800
               prereq=prereq)
800
               prereq=prereq, ecode=errors.ECODE_ENVIRON)
801 801

  
802 802
  for idx, bdev_status in enumerate(result.payload):
803 803
    if bdev_status and bdev_status.ldisk_status == constants.LDS_FAULTY:
......
2967 2967
      result = self.rpc.call_node_has_ip_address(new_node.name,
2968 2968
                                                 new_node.secondary_ip)
2969 2969
      result.Raise("Failure checking secondary ip on node %s" % new_node.name,
2970
                   prereq=True)
2970
                   prereq=True, ecode=errors.ECODE_ENVIRON)
2971 2971
      if not result.payload:
2972 2972
        raise errors.OpExecError("Node claims it doesn't have the secondary ip"
2973 2973
                                 " you gave (%s). Please fix and re-run this"
......
3539 3539

  
3540 3540
  """
3541 3541
  nodeinfo = lu.rpc.call_node_info([node], lu.cfg.GetVGName(), hypervisor_name)
3542
  nodeinfo[node].Raise("Can't get data from node %s" % node, prereq=True)
3542
  nodeinfo[node].Raise("Can't get data from node %s" % node,
3543
                       prereq=True, ecode=errors.ECODE_ENVIRON)
3543 3544
  free_mem = nodeinfo[node].payload.get('memory_free', None)
3544 3545
  if not isinstance(free_mem, int):
3545 3546
    raise errors.OpPrereqError("Can't compute free memory on node %s, result"
......
3627 3628
                                              instance.name,
3628 3629
                                              instance.hypervisor)
3629 3630
    remote_info.Raise("Error checking node %s" % instance.primary_node,
3630
                      prereq=True)
3631
                      prereq=True, ecode=errors.ECODE_ENVIRON)
3631 3632
    if not remote_info.payload: # not running already
3632 3633
      _CheckNodeFreeMemory(self, instance.primary_node,
3633 3634
                           "starting instance %s" % instance.name,
......
3846 3847
                                              instance.name,
3847 3848
                                              instance.hypervisor)
3848 3849
    remote_info.Raise("Error checking node %s" % instance.primary_node,
3849
                      prereq=True)
3850
                      prereq=True, ecode=errors.ECODE_ENVIRON)
3850 3851
    if remote_info.payload:
3851 3852
      raise errors.OpPrereqError("Instance '%s' is running on the node %s" %
3852 3853
                                 (self.op.instance_name,
......
3864 3865
                                   self.op.pnode, errors.ECODE_NOENT)
3865 3866
      result = self.rpc.call_os_get(pnode.name, self.op.os_type)
3866 3867
      result.Raise("OS '%s' not in supported OS list for primary node %s" %
3867
                   (self.op.os_type, pnode.name), prereq=True)
3868
                   (self.op.os_type, pnode.name),
3869
                   prereq=True, ecode=errors.ECODE_INVAL)
3868 3870
      if not self.op.force_variant:
3869 3871
        _CheckOSVariant(result.payload, self.op.os_type)
3870 3872

  
......
3946 3948
                                              instance.name,
3947 3949
                                              instance.hypervisor)
3948 3950
    remote_info.Raise("Error checking node %s" % instance.primary_node,
3949
                      prereq=True)
3951
                      prereq=True, ecode=errors.ECODE_ENVIRON)
3950 3952
    if remote_info.payload:
3951 3953
      raise errors.OpPrereqError("Instance '%s' is running on the node %s" %
3952 3954
                                 (self.op.instance_name,
......
4014 4016
                                              instance.name,
4015 4017
                                              instance.hypervisor)
4016 4018
    remote_info.Raise("Error checking node %s" % instance.primary_node,
4017
                      prereq=True)
4019
                      prereq=True, ecode=errors.ECODE_ENVIRON)
4018 4020
    if remote_info.payload:
4019 4021
      raise errors.OpPrereqError("Instance '%s' is running on the node %s" %
4020 4022
                                 (self.op.instance_name,
......
4910 4912
      _CheckNodeNotDrained(self, target_node)
4911 4913
      result = self.rpc.call_instance_migratable(instance.primary_node,
4912 4914
                                                 instance)
4913
      result.Raise("Can't migrate, please use failover", prereq=True)
4915
      result.Raise("Can't migrate, please use failover",
4916
                   prereq=True, ecode=errors.ECODE_STATE)
4914 4917

  
4915 4918
    self.instance = instance
4916 4919

  
......
5979 5982
    # os verification
5980 5983
    result = self.rpc.call_os_get(pnode.name, self.op.os_type)
5981 5984
    result.Raise("OS '%s' not in supported os list for primary node %s" %
5982
                 (self.op.os_type, pnode.name), prereq=True)
5985
                 (self.op.os_type, pnode.name),
5986
                 prereq=True, ecode=errors.ECODE_INVAL)
5983 5987
    if not self.op.force_variant:
5984 5988
      _CheckOSVariant(result.payload, self.op.os_type)
5985 5989

  
b/lib/rpc.py
137 137
    else:
138 138
      return "No error information"
139 139

  
140
  def Raise(self, msg, prereq=False):
140
  def Raise(self, msg, prereq=False, ecode=None):
141 141
    """If the result has failed, raise an OpExecError.
142 142

  
143 143
    This is used so that LU code doesn't have to check for each
......
156 156
      ec = errors.OpPrereqError
157 157
    else:
158 158
      ec = errors.OpExecError
159
    raise ec(msg)
159
    if ecode is not None:
160
      args = (msg, prereq)
161
    else:
162
      args = (msg, )
163
    raise ec(*args)
160 164

  
161 165

  
162 166
class Client:

Also available in: Unified diff