diff options
Diffstat (limited to 'nova')
| -rw-r--r-- | nova/tests/fake_libvirt_utils.py | 4 | ||||
| -rw-r--r-- | nova/virt/libvirt/driver.py | 5 | ||||
| -rw-r--r-- | nova/virt/libvirt/utils.py | 17 |
3 files changed, 22 insertions, 4 deletions
diff --git a/nova/tests/fake_libvirt_utils.py b/nova/tests/fake_libvirt_utils.py index 510774939..378515ac0 100644 --- a/nova/tests/fake_libvirt_utils.py +++ b/nova/tests/fake_libvirt_utils.py @@ -98,6 +98,10 @@ def file_open(path, mode=None): return File(path, mode) +def find_disk(virt_dom): + return "some/path" + + def load_file(path): if os.path.exists(path): with open(path, 'r') as fp: diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index 22c64a218..8585c3463 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -823,10 +823,7 @@ class LibvirtDriver(driver.ComputeDriver): metadata['container_format'] = base.get('container_format', 'bare') # Find the disk - xml_desc = virt_dom.XMLDesc(0) - domain = etree.fromstring(xml_desc) - source = domain.find('devices/disk/source') - disk_path = source.get('file') + disk_path = libvirt_utils.find_disk(virt_dom) snapshot_name = uuid.uuid4().hex diff --git a/nova/virt/libvirt/utils.py b/nova/virt/libvirt/utils.py index 8579abb8a..73e0201df 100644 --- a/nova/virt/libvirt/utils.py +++ b/nova/virt/libvirt/utils.py @@ -24,6 +24,7 @@ import hashlib import os import re +from lxml import etree from nova import exception from nova import flags from nova.openstack.common import cfg @@ -394,6 +395,22 @@ def file_delete(path): return os.unlink(path) +def find_disk(virt_dom): + """Find root device path for instance + + May be file or device""" + xml_desc = virt_dom.XMLDesc(0) + domain = etree.fromstring(xml_desc) + source = domain.find('devices/disk/source') + disk_path = source.get('file') or source.get('dev') + + if not disk_path: + raise RuntimeError(_("Can't retrieve root device path " + "from instance libvirt configuration")) + + return disk_path + + def get_fs_info(path): """Get free/used/total space info for a filesystem |
