diff options
| author | matt.dietz@rackspace.com <> | 2011-07-29 17:59:23 +0000 |
|---|---|---|
| committer | Tarmac <> | 2011-07-29 17:59:23 +0000 |
| commit | ab0c38efa5440347c3c75171e703e010023affe2 (patch) | |
| tree | 7f042f9c391ed7033a91a39cdf2ee2a9dabec168 /nova/compute | |
| parent | 8c099960a0938f168fe8ca85c63988d697228512 (diff) | |
| parent | 396cf66676a64643645e25f81bd2422ac3ba5dbf (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.py | 24 |
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', }) |
