summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-10-10 17:25:50 +0000
committerGerrit Code Review <review@openstack.org>2012-10-10 17:25:50 +0000
commit9125dfe007aaaad9a3f276ebcde8c451c0193c25 (patch)
tree259ecc451aae21b5635c3dae51c6164cf5be13e9
parentc1e5e3352a71cc61ba9e7dba0d9048d8b766e2c0 (diff)
parent800c08dfe36de52429364f96d708fb3bba0c4e3b (diff)
downloadnova-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.py5
-rw-r--r--nova/tests/test_libvirt.py1
-rw-r--r--nova/virt/libvirt/driver.py16
-rw-r--r--nova/virt/libvirt/utils.py8
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