summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-05-14 07:43:12 +0000
committerGerrit Code Review <review@openstack.org>2013-05-14 07:43:12 +0000
commit0d1e9ea11b184c20c260fd6bb8a249a079a67275 (patch)
treeb74f9fe247206921ad77490e886e4cc7eaa34e84
parent9648676783c483391836185d07c358cef744cd37 (diff)
parent07a8213437e41311335fe59c433c690475a34e6b (diff)
downloadnova-0d1e9ea11b184c20c260fd6bb8a249a079a67275.tar.gz
nova-0d1e9ea11b184c20c260fd6bb8a249a079a67275.tar.xz
nova-0d1e9ea11b184c20c260fd6bb8a249a079a67275.zip
Merge "Pass None to image if booted from volume in live migration"
-rw-r--r--nova/scheduler/driver.py6
-rw-r--r--nova/tests/scheduler/test_scheduler.py25
2 files changed, 30 insertions, 1 deletions
diff --git a/nova/scheduler/driver.py b/nova/scheduler/driver.py
index 506c77cff..4ad6b8513 100644
--- a/nova/scheduler/driver.py
+++ b/nova/scheduler/driver.py
@@ -258,7 +258,11 @@ class Scheduler(object):
# If dest is not specified, have scheduler pick one.
if dest is None:
instance_type = flavors.extract_instance_type(instance_ref)
- image = self.image_service.show(context, instance_ref['image_ref'])
+ if not instance_ref['image_ref']:
+ image = None
+ else:
+ image = self.image_service.show(context,
+ instance_ref['image_ref'])
request_spec = {'instance_properties': instance_ref,
'instance_type': instance_type,
'instance_uuids': [instance_ref['uuid']],
diff --git a/nova/tests/scheduler/test_scheduler.py b/nova/tests/scheduler/test_scheduler.py
index 60d45fed4..f4f607647 100644
--- a/nova/tests/scheduler/test_scheduler.py
+++ b/nova/tests/scheduler/test_scheduler.py
@@ -808,6 +808,31 @@ class SchedulerTestCase(test.TestCase):
None, ignore_hosts)
self.assertEqual('fake_host2', result)
+ def test_live_migration_dest_check_no_image(self):
+ instance = self._live_migration_instance()
+ instance['image_ref'] = ''
+
+ # Confirm dest is picked by scheduler if not set.
+ self.mox.StubOutWithMock(self.driver, 'select_hosts')
+ self.mox.StubOutWithMock(flavors, 'extract_instance_type')
+
+ request_spec = {'instance_properties': instance,
+ 'instance_type': {},
+ 'instance_uuids': [instance['uuid']],
+ 'image': None
+ }
+ ignore_hosts = [instance['host']]
+ filter_properties = {'ignore_hosts': ignore_hosts}
+
+ flavors.extract_instance_type(instance).AndReturn({})
+ self.driver.select_hosts(self.context, request_spec,
+ filter_properties).AndReturn(['fake_host2'])
+
+ self.mox.ReplayAll()
+ result = self.driver._live_migration_dest_check(self.context, instance,
+ None, ignore_hosts)
+ self.assertEqual('fake_host2', result)
+
def test_live_migration_auto_set_dest(self):
instance = self._live_migration_instance()