diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-10-10 17:25:50 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-10-10 17:25:50 +0000 |
| commit | 9125dfe007aaaad9a3f276ebcde8c451c0193c25 (patch) | |
| tree | 259ecc451aae21b5635c3dae51c6164cf5be13e9 | |
| parent | c1e5e3352a71cc61ba9e7dba0d9048d8b766e2c0 (diff) | |
| parent | 800c08dfe36de52429364f96d708fb3bba0c4e3b (diff) | |
| download | nova-9125dfe007aaaad9a3f276ebcde8c451c0193c25.tar.gz nova-9125dfe007aaaad9a3f276ebcde8c451c0193c25.tar.xz nova-9125dfe007aaaad9a3f276ebcde8c451c0193c25.zip | |
Merge "Add util for disk type retrieval"
| -rw-r--r-- | nova/tests/fake_libvirt_utils.py | 5 | ||||
| -rw-r--r-- | nova/tests/test_libvirt.py | 1 | ||||
| -rw-r--r-- | nova/virt/libvirt/driver.py | 16 | ||||
| -rw-r--r-- | nova/virt/libvirt/utils.py | 8 |
4 files changed, 18 insertions, 12 deletions
diff --git a/nova/tests/fake_libvirt_utils.py b/nova/tests/fake_libvirt_utils.py index 378515ac0..1862521c1 100644 --- a/nova/tests/fake_libvirt_utils.py +++ b/nova/tests/fake_libvirt_utils.py @@ -21,6 +21,7 @@ import StringIO files = {} disk_sizes = {} disk_backing_files = {} +disk_type = "qcow2" def get_iscsi_initiator(): @@ -39,6 +40,10 @@ def get_disk_backing_file(path): return disk_backing_files.get(path, None) +def get_disk_type(path): + return disk_type + + def copy_image(src, dest): pass diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py index 05873bd79..8861eb8de 100644 --- a/nova/tests/test_libvirt.py +++ b/nova/tests/test_libvirt.py @@ -1162,6 +1162,7 @@ class LibvirtConnTestCase(test.TestCase): libvirt_driver.LibvirtDriver._conn.lookupByName = self.fake_lookup self.mox.StubOutWithMock(libvirt_driver.utils, 'execute') libvirt_driver.utils.execute = self.fake_execute + self.stubs.Set(libvirt_driver.libvirt_utils, 'disk_type', 'raw') self.mox.ReplayAll() diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index 78b02633f..50227ae6d 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -808,16 +808,11 @@ class LibvirtDriver(driver.ComputeDriver): arch = base['properties']['architecture'] metadata['properties']['architecture'] = arch - source_format = base.get('disk_format') or 'raw' - if source_format == 'ami': - # NOTE(vish): assume amis are raw - source_format = 'raw' + disk_path = libvirt_utils.find_disk(virt_dom) + source_format = libvirt_utils.get_disk_type(disk_path) + image_format = FLAGS.snapshot_image_format or source_format - use_qcow2 = ((FLAGS.libvirt_images_type == 'default' and - FLAGS.use_cow_images) or - FLAGS.libvirt_images_type == 'qcow2') - if use_qcow2: - source_format = 'qcow2' + # NOTE(vish): glance forces ami disk format to be ami if base.get('disk_format') == 'ami': metadata['disk_format'] = 'ami' @@ -826,9 +821,6 @@ class LibvirtDriver(driver.ComputeDriver): metadata['container_format'] = base.get('container_format', 'bare') - # Find the disk - disk_path = libvirt_utils.find_disk(virt_dom) - snapshot_name = uuid.uuid4().hex (state, _max_mem, _mem, _cpus, _t) = virt_dom.info() diff --git a/nova/virt/libvirt/utils.py b/nova/virt/libvirt/utils.py index 73e0201df..2d1b5558c 100644 --- a/nova/virt/libvirt/utils.py +++ b/nova/virt/libvirt/utils.py @@ -411,6 +411,14 @@ def find_disk(virt_dom): return disk_path +def get_disk_type(path): + """Retrieve disk type (raw, qcow2, lvm) for given file""" + if path.startswith('/dev'): + return 'lvm' + + return images.qemu_img_info(path)['file format'] + + def get_fs_info(path): """Get free/used/total space info for a filesystem |
