diff options
| author | Kravchenko Pavel <kpavel@il.ibm.com> | 2012-12-25 17:50:37 +0200 |
|---|---|---|
| committer | Kravchenko Pavel <kpavel@il.ibm.com> | 2012-12-27 01:06:05 +0200 |
| commit | a1c90a3b3dca567c0075b24901b85a2d41265305 (patch) | |
| tree | 68f4fd280f43bf46539a8babd1dfedadbbc69763 | |
| parent | 094d6b294bec70501f9bbdce3df63c8a328e06bf (diff) | |
Check for image_meta in libvirt.driver.spawn
This adds check that image_meta exists in libvirt driver
spawn method. In case it doesn't the image shouldn't be
created.
part of libvirt driver support for blueprint rebuild-for-ha
DocImpact
Change-Id: I097c7cbfde96bcb21b4f06af4e5bac00440849c2
Co-authored-by: Oshrit Feder <oshritf@il.ibm.com>
| -rw-r--r-- | nova/tests/test_libvirt.py | 32 | ||||
| -rw-r--r-- | nova/virt/libvirt/driver.py | 4 |
2 files changed, 35 insertions, 1 deletions
diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py index 02578e888..362b53205 100644 --- a/nova/tests/test_libvirt.py +++ b/nova/tests/test_libvirt.py @@ -2451,6 +2451,38 @@ class LibvirtConnTestCase(test.TestCase): shutil.rmtree(os.path.join(CONF.instances_path, CONF.base_dir_name)) + def test_spawn_without_image_meta(self): + self.create_image_called = False + + def fake_none(*args, **kwargs): + return + + def fake_create_image(*args, **kwargs): + self.create_image_called = True + + def fake_get_info(instance): + return {'state': power_state.RUNNING} + + instance_ref = self.test_instance + instance_ref['image_ref'] = 1 + instance = db.instance_create(self.context, instance_ref) + + conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False) + self.stubs.Set(conn, 'to_xml', fake_none) + self.stubs.Set(conn, '_create_image', fake_create_image) + self.stubs.Set(conn, '_create_domain_and_network', fake_none) + self.stubs.Set(conn, 'get_info', fake_get_info) + + conn.spawn(self.context, instance, None, [], None) + self.assertFalse(self.create_image_called) + + conn.spawn(self.context, + instance, + {'id': instance['image_ref']}, + [], + None) + self.assertTrue(self.create_image_called) + def test_get_console_output_file(self): fake_libvirt_utils.files['console.log'] = '01234567890' diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index bf45aad1d..cc2edfef1 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -1100,7 +1100,9 @@ class LibvirtDriver(driver.ComputeDriver): admin_password, network_info=None, block_device_info=None): xml = self.to_xml(instance, network_info, image_meta, block_device_info=block_device_info) - self._create_image(context, instance, xml, network_info=network_info, + if image_meta: + self._create_image(context, instance, xml, + network_info=network_info, block_device_info=block_device_info, files=injected_files, admin_pass=admin_password) |
