bitkeeper revision 1.1159.102.1 (4163f3e1F0LimXbocHs-QcPviz39JA)

Improve error messages by unwrapping Failures.
This commit is contained in:
mjw@wray-m-3.hpl.hp.com committed 2004-10-06 13:32:17 +00:00
1 parent 28b770962c
commit 2c5e70071a
2 files changed
+19

No files matched your search

+14
View File
@@ -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)
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.