diff options
author | Vishvananda Ishaya <vishvananda@gmail.com> | 2011-01-21 15:48:10 -0800 |
---|---|---|
committer | Vishvananda Ishaya <vishvananda@gmail.com> | 2011-01-21 15:48:10 -0800 |
commit | 9bdcc71733105a49636f74a99130112ef96d0bce (patch) | |
tree | d1da5a6780f4c88c7199362af57b300c44edef14 /nova/exception.py | |
parent | ffe08ea0c5c47ef13a459ac2821e7f706b4070a4 (diff) | |
download | nova-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.py | 18 |
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: |