summaryrefslogtreecommitdiffstats
path: root/nova/exception.py
diff options
context:
space:
mode:
authorRyan Lane <rlane@wikimedia.org>2011-01-27 12:17:43 +0000
committerRyan Lane <rlane@wikimedia.org>2011-01-27 12:17:43 +0000
commitc02a587ea03fecde26f49bec52f8d96aa551979a (patch)
tree68e236b508d5019812bf7de65fc1a209d0df474f /nova/exception.py
parentfc8f41e9c34c8d14d1c66ca03ce7098cc6b7f04d (diff)
parentcaca4a1320638b0d806f1854ba8233d941f50e86 (diff)
downloadnova-c02a587ea03fecde26f49bec52f8d96aa551979a.tar.gz
nova-c02a587ea03fecde26f49bec52f8d96aa551979a.tar.xz
nova-c02a587ea03fecde26f49bec52f8d96aa551979a.zip
Merge from trunk
Diffstat (limited to 'nova/exception.py')
-rw-r--r--nova/exception.py31
1 files changed, 30 insertions, 1 deletions
diff --git a/nova/exception.py b/nova/exception.py
index 2320e2214..7d65bd6a5 100644
--- a/nova/exception.py
+++ b/nova/exception.py
@@ -46,7 +46,6 @@ class Error(Exception):
class ApiError(Error):
-
def __init__(self, message='Unknown', code='Unknown'):
self.message = message
self.code = code
@@ -57,6 +56,18 @@ class NotFound(Error):
pass
+class InstanceNotFound(NotFound):
+ def __init__(self, message, instance_id):
+ self.instance_id = instance_id
+ super(InstanceNotFound, self).__init__(message)
+
+
+class VolumeNotFound(NotFound):
+ def __init__(self, message, volume_id):
+ self.volume_id = volume_id
+ super(VolumeNotFound, self).__init__(message)
+
+
class Duplicate(Error):
pass
@@ -81,6 +92,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: