summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIsaku Yamahata <yamahata@valinux.co.jp>2011-06-16 00:48:25 +0900
committerIsaku Yamahata <yamahata@valinux.co.jp>2011-06-16 00:48:25 +0900
commit31ae0515fbf2dd8f931fb53ef08b40fe0206fc92 (patch)
treee593c3c385ce46febed4f8b64752336e85fffff9
parenta9800765f7eb8430c67d15953bed202752c2e199 (diff)
downloadnova-31ae0515fbf2dd8f931fb53ef08b40fe0206fc92.tar.gz
nova-31ae0515fbf2dd8f931fb53ef08b40fe0206fc92.tar.xz
nova-31ae0515fbf2dd8f931fb53ef08b40fe0206fc92.zip
_setup_block_device_mapping: raise ApiError when db inconsistency found
Instead of assert, log it and raise ApiError if db inconsistency in block_device_mapping table is found.
-rw-r--r--nova/compute/manager.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py
index 7f7f0fa65..1c5d2c858 100644
--- a/nova/compute/manager.py
+++ b/nova/compute/manager.py
@@ -240,8 +240,16 @@ class ComputeManager(manager.SchedulerDependentManager):
context, bdm['id'], {'volume_id': vol['id']})
bdm['volume_id'] = vol['id']
- assert ((bdm['snapshot_id'] is None) or
- (bdm['volume_id'] is not None))
+ if not ((bdm['snapshot_id'] is None) or
+ (bdm['volume_id'] is not None)):
+ LOG.error(_('corrupted state of block device mapping '
+ 'id: %(id)s '
+ 'snapshot: %(snapshot_id) volume: %(vollume_id)') %
+ {'id': bdm['id'],
+ 'snapshot_id': bdm['snapshot'],
+ 'volume_id': bdm['volume_id']})
+ raise exception.ApiError(_('broken block device mapping %d') %
+ bdm['id'])
if bdm['volume_id'] is not None:
volume_api.check_attach(context,