summaryrefslogtreecommitdiffstats
path: root/nova/compute
diff options
context:
space:
mode:
authormatt.dietz@rackspace.com <>2011-07-29 17:59:23 +0000
committerTarmac <>2011-07-29 17:59:23 +0000
commitab0c38efa5440347c3c75171e703e010023affe2 (patch)
tree7f042f9c391ed7033a91a39cdf2ee2a9dabec168 /nova/compute
parent8c099960a0938f168fe8ca85c63988d697228512 (diff)
parent396cf66676a64643645e25f81bd2422ac3ba5dbf (diff)
--Stolen from https://code.launchpad.net/~cerberus/nova/lp809909/+merge/68602
Fixes lp809909 Migrate of instance with no local storage fails with exception Simply checks to see if the instance has any local storage, and if not, skips over the resize VDI step.
Diffstat (limited to 'nova/compute')
-rw-r--r--nova/compute/manager.py24
1 files changed, 15 insertions, 9 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py
index 173469bc3..a2d84cd76 100644
--- a/nova/compute/manager.py
+++ b/nova/compute/manager.py
@@ -747,7 +747,7 @@ class ComputeManager(manager.SchedulerDependentManager):
local_gb=instance_type['local_gb'],
instance_type_id=instance_type['id']))
- self.driver.revert_resize(instance_ref)
+ self.driver.revert_migration(instance_ref)
self.db.migration_update(context, migration_id,
{'status': 'reverted'})
usage_info = utils.usage_from_instance(instance_ref)
@@ -845,20 +845,26 @@ class ComputeManager(manager.SchedulerDependentManager):
"""
migration_ref = self.db.migration_get(context, migration_id)
+
+ resize_instance = False
instance_ref = self.db.instance_get_by_uuid(context,
migration_ref.instance_uuid)
- instance_type = self.db.instance_type_get_by_flavor_id(context,
- migration_ref['new_flavor_id'])
- self.db.instance_update(context, instance_ref.uuid,
- dict(instance_type_id=instance_type['id'],
- memory_mb=instance_type['memory_mb'],
- vcpus=instance_type['vcpus'],
- local_gb=instance_type['local_gb']))
+ if migration_ref['old_flavor_id'] != migration_ref['new_flavor_id']:
+ instance_type = self.db.instance_type_get_by_flavor_id(context,
+ migration_ref['new_flavor_id'])
+ self.db.instance_update(context, instance_ref.uuid,
+ dict(instance_type_id=instance_type['id'],
+ memory_mb=instance_type['memory_mb'],
+ vcpus=instance_type['vcpus'],
+ local_gb=instance_type['local_gb']))
+ resize_instance = True
instance_ref = self.db.instance_get_by_uuid(context,
instance_ref.uuid)
+
network_info = self._get_instance_nw_info(context, instance_ref)
- self.driver.finish_resize(instance_ref, disk_info, network_info)
+ self.driver.finish_migration(instance_ref, disk_info, network_info,
+ resize_instance)
self.db.migration_update(context, migration_id,
{'status': 'finished', })