summaryrefslogtreecommitdiffstats
path: root/nova/exception.py
diff options
context:
space:
mode:
authorVishvananda Ishaya <vishvananda@gmail.com>2011-01-21 15:48:10 -0800
committerVishvananda Ishaya <vishvananda@gmail.com>2011-01-21 15:48:10 -0800
commit9bdcc71733105a49636f74a99130112ef96d0bce (patch)
treed1da5a6780f4c88c7199362af57b300c44edef14 /nova/exception.py
parentffe08ea0c5c47ef13a459ac2821e7f706b4070a4 (diff)
downloadnova-9bdcc71733105a49636f74a99130112ef96d0bce.tar.gz
nova-9bdcc71733105a49636f74a99130112ef96d0bce.tar.xz
nova-9bdcc71733105a49636f74a99130112ef96d0bce.zip
wrap sqlalchemy exceptions in a generic error
Diffstat (limited to 'nova/exception.py')
-rw-r--r--nova/exception.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/nova/exception.py b/nova/exception.py
index ecd814e5d..f36ffaee1 100644
--- a/nova/exception.py
+++ b/nova/exception.py
@@ -80,6 +80,24 @@ class TimeoutException(Error):
pass
+class DBError(Error):
+ """Wraps an implementation specific exception"""
+ def __init__(self, inner_exception):
+ self.inner_exception = inner_exception
+ super(DBError, self).__init__(str(inner_exception))
+
+
+def wrap_db_error(f):
+ def _wrap(*args, **kwargs):
+ try:
+ return f(*args, **kwargs)
+ except Exception, e:
+ LOG.exception(_('DB exception wrapped'))
+ raise DBError(e)
+ return _wrap
+ _wrap.func_name = f.func_name
+
+
def wrap_exception(f):
def _wrap(*args, **kw):
try: