mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 02:30:03 +01:00
bitkeeper revision 1.1159.102.1 (4163f3e1F0LimXbocHs-QcPviz39JA)
Improve error messages by unwrapping Failures.
This commit is contained in:
1 parent
28b770962c
commit
2c5e70071a
2 files changed
+19
No files matched your search
@@ -347,6 +347,18 @@ def append_deferred(dlist, v):
|
||||
if isinstance(v, defer.Deferred):
|
||||
dlist.append(v)
|
||||
|
||||
def dlist_err(val):
|
||||
"""Error callback suitable for a deferred list.
|
||||
In a deferred list the error callback is called with with Failure((error, index)).
|
||||
This callback extracts the error and returns it.
|
||||
|
||||
@param val: Failure containing (error, index)
|
||||
@type val: twisted.internet.failure.Failure
|
||||
"""
|
||||
|
||||
(error, index) = val.value
|
||||
return error
|
||||
|
||||
class XendDomainInfo:
|
||||
"""Virtual machine object."""
|
||||
|
||||
@@ -819,6 +831,7 @@ class XendDomainInfo:
|
||||
append_deferred(dlist, v)
|
||||
index[dev_name] = dev_index + 1
|
||||
deferred = defer.DeferredList(dlist, fireOnOneErrback=1)
|
||||
deferred.addErrback(dlist_err)
|
||||
return deferred
|
||||
|
||||
def device_create(self, dev_config):
|
||||
@@ -1050,6 +1063,7 @@ class XendDomainInfo:
|
||||
log.warning("Unknown config field %s", field_name)
|
||||
index[field_name] = field_index + 1
|
||||
d = defer.DeferredList(dlist, fireOnOneErrback=1)
|
||||
deferred.addErrback(dlist_err)
|
||||
return d
|
||||
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ from StringIO import StringIO
|
||||
|
||||
from twisted.protocols import http
|
||||
from twisted.web import error
|
||||
from twisted.python.failure import Failure
|
||||
|
||||
from xen.xend import sxp
|
||||
from xen.xend import XendDomain
|
||||
@@ -94,6 +95,8 @@ class SrvDomainDir(SrvDir):
|
||||
def _op_create_err(self, err, req):
|
||||
"""Callback to handle errors in deferred domain creation.
|
||||
"""
|
||||
if isinstance(err, Failure):
|
||||
err = err.getErrorMessage()
|
||||
print 'op_create> Deferred Exception creating domain:', err
|
||||
req.setResponseCode(http.BAD_REQUEST, "Error creating domain: " + str(err))
|
||||
return str(err)
|
||||
@@ -127,6 +130,8 @@ class SrvDomainDir(SrvDir):
|
||||
return val
|
||||
|
||||
def _op_restore_err(self, err, req):
|
||||
if isinstance(err, Failure):
|
||||
err = err.getErrorMessage()
|
||||
print 'op_create> Deferred Exception restoring domain:', err
|
||||
req.setResponseCode(http.BAD_REQUEST, "Error restoring domain: "+ str(err))
|
||||
return str(err)
|
||||
|
||||