diff options
author | Ryan Lane <rlane@wikimedia.org> | 2011-01-27 12:17:43 +0000 |
---|---|---|
committer | Ryan Lane <rlane@wikimedia.org> | 2011-01-27 12:17:43 +0000 |
commit | c02a587ea03fecde26f49bec52f8d96aa551979a (patch) | |
tree | 68e236b508d5019812bf7de65fc1a209d0df474f /nova/exception.py | |
parent | fc8f41e9c34c8d14d1c66ca03ce7098cc6b7f04d (diff) | |
parent | caca4a1320638b0d806f1854ba8233d941f50e86 (diff) | |
download | nova-c02a587ea03fecde26f49bec52f8d96aa551979a.tar.gz nova-c02a587ea03fecde26f49bec52f8d96aa551979a.tar.xz nova-c02a587ea03fecde26f49bec52f8d96aa551979a.zip |
Merge from trunk
Diffstat (limited to 'nova/exception.py')
-rw-r--r-- | nova/exception.py | 31 |
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: |