Remove AMI snapshot format special case
Note that this includes seemingly-unrelated test changes because we were actually skipping the snapshot_running test for libvirt, which has been a bug for years. In that test case, when we went to look for image_meta.disk_format, that attribute was not set on the o.vo object, which raised a NotImplementedError. That error is also checked by the test to skip the test for drivers that do not support snapshot, which meant that for libvirt, we haven't been running that case beyond the point at which we create snapshot metadata and trip that exception. Thus, once removing that, there are other mocks not in place that are required for the test to actually run. So, this adds mocks for qemu_img_info() calls that actually try to read the file on disk, as well as the privsep chown() that attempts to run after. Change-Id: Ie731045629f0899840a4680d21793a16ade9b98e (cherry picked from commitd5a631ba77
) (cherry picked from commit8c5929ff51
) (cherry picked from commitd2d3b2c9e8
) (cherry picked from commit77dfa4f6f3
)
This commit is contained in:
parent
41cdd39e86
commit
e6f4503fe3
@ -9242,7 +9242,7 @@ class LibvirtConnTestCase(test.NoDBTestCase,
|
||||
|
||||
def test_create_snapshot_metadata(self):
|
||||
base = objects.ImageMeta.from_dict(
|
||||
{'disk_format': 'raw'})
|
||||
{'disk_format': 'qcow2'})
|
||||
instance_data = {'kernel_id': 'kernel',
|
||||
'project_id': 'prj_id',
|
||||
'ramdisk_id': 'ram_id',
|
||||
@ -9274,10 +9274,12 @@ class LibvirtConnTestCase(test.NoDBTestCase,
|
||||
{'disk_format': 'ami',
|
||||
'container_format': 'test_container'})
|
||||
expected['properties']['os_type'] = instance['os_type']
|
||||
expected['disk_format'] = base.disk_format
|
||||
# The disk_format of the snapshot should be the *actual* format of the
|
||||
# thing we upload, regardless of what type of image we booted from.
|
||||
expected['disk_format'] = img_fmt
|
||||
expected['container_format'] = base.container_format
|
||||
ret = drvr._create_snapshot_metadata(base, instance, img_fmt, snp_name)
|
||||
self.assertEqual(ret, expected)
|
||||
self.assertEqual(expected, ret)
|
||||
|
||||
def test_get_volume_driver(self):
|
||||
conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)
|
||||
@ -28778,7 +28780,8 @@ class LibvirtSnapshotTests(_BaseSnapshotTests):
|
||||
utils.get_system_metadata_from_image(
|
||||
{'disk_format': 'ami'})
|
||||
|
||||
self._test_snapshot(disk_format='ami')
|
||||
# If we're uploading a qcow2, we must set the disk_format as such
|
||||
self._test_snapshot(disk_format='qcow2')
|
||||
|
||||
@mock.patch('nova.virt.libvirt.utils.get_disk_type_from_path',
|
||||
new=mock.Mock(return_value=None))
|
||||
|
@ -838,6 +838,11 @@ class LibvirtConnTestCase(_VirtDriverTestCase, test.TestCase):
|
||||
# since we don't care about it.
|
||||
self.stub_out('os_vif.unplug', lambda a, kw: None)
|
||||
self.stub_out('nova.compute.utils.get_machine_ips', lambda: [])
|
||||
self.stub_out('nova.virt.libvirt.utils.get_disk_size',
|
||||
lambda *a, **k: 123456)
|
||||
self.stub_out('nova.virt.libvirt.utils.get_disk_backing_file',
|
||||
lambda *a, **k: None)
|
||||
self.stub_out('nova.privsep.path.chown', lambda *a, **k: None)
|
||||
|
||||
def test_init_host_image_type_rbd_force_raw_images_true(self):
|
||||
CONF.set_override('images_type', 'rbd', group='libvirt')
|
||||
|
@ -2938,11 +2938,7 @@ class LibvirtDriver(driver.ComputeDriver):
|
||||
if instance.os_type:
|
||||
metadata['properties']['os_type'] = instance.os_type
|
||||
|
||||
# NOTE(vish): glance forces ami disk format to be ami
|
||||
if image_meta.disk_format == 'ami':
|
||||
metadata['disk_format'] = 'ami'
|
||||
else:
|
||||
metadata['disk_format'] = img_fmt
|
||||
metadata['disk_format'] = img_fmt
|
||||
|
||||
if image_meta.obj_attr_is_set("container_format"):
|
||||
metadata['container_format'] = image_meta.container_format
|
||||
|
Loading…
Reference in New Issue
Block a user