Revision 6797ec29 lib/luxi.py

b/lib/luxi.py
36 36

  
37 37
from ganeti import serializer
38 38
from ganeti import constants
39
from ganeti import errors
39 40

  
40 41

  
41 42
KEY_METHOD = 'method'
......
275 276
        KEY_RESULT not in data):
276 277
      raise DecodingError("Invalid response from server: %s" % str(data))
277 278

  
279
    result = data[KEY_RESULT]
280

  
278 281
    if not data[KEY_SUCCESS]:
279 282
      # TODO: decide on a standard exception
280
      raise RequestError(data[KEY_RESULT])
283
      if (isinstance(result, (tuple, list)) and len(result) == 2 and
284
          isinstance(result[1], (tuple, list))):
285
        # custom ganeti errors
286
        err_class = errors.GetErrorClass(result[0])
287
        if err_class is not None:
288
          raise err_class, tuple(result[1])
289

  
290
      raise RequestError(result)
281 291

  
282
    return data[KEY_RESULT]
292
    return result
283 293

  
284 294
  def SubmitJob(self, ops):
285 295
    ops_state = map(lambda op: op.__getstate__(), ops)

Also available in: Unified diff