Merge "Correct the calculating of disk size when using lvm disk backend."

This commit is contained in:
Jenkins
2013-01-11 23:35:10 +00:00
committed by Gerrit Code Review
2 changed files with 44 additions and 4 deletions

View File

@@ -2034,6 +2034,11 @@ class LibvirtDriver(driver.ComputeDriver):
""" """
if CONF.libvirt_images_type == 'lvm':
vg_total = libvirt_utils.volume_group_total_space(
CONF.libvirt_images_volume_group)
return vg_total / (1024 ** 3)
else:
stats = libvirt_utils.get_fs_info(CONF.instances_path) stats = libvirt_utils.get_fs_info(CONF.instances_path)
return stats['total'] / (1024 ** 3) return stats['total'] / (1024 ** 3)
@@ -2103,6 +2108,11 @@ class LibvirtDriver(driver.ComputeDriver):
""" """
if CONF.libvirt_images_type == 'lvm':
vg_used = libvirt_utils.volume_group_used_space(
CONF.libvirt_images_volume_group)
return vg_used / (1024 ** 3)
else:
stats = libvirt_utils.get_fs_info(CONF.instances_path) stats = libvirt_utils.get_fs_info(CONF.instances_path)
return stats['used'] / (1024 ** 3) return stats['used'] / (1024 ** 3)

View File

@@ -144,6 +144,36 @@ def volume_group_free_space(vg):
return int(out.strip()) return int(out.strip())
def volume_group_total_space(vg):
"""Return total space on volume group in bytes.
:param vg: volume group name
"""
out, err = execute('vgs', '--noheadings', '--nosuffix',
'--units', 'b', '-o', 'vg_size', vg,
run_as_root=True)
return int(out.strip())
def volume_group_used_space(vg):
"""Return available space on volume group in bytes.
:param vg: volume group name
"""
out, err = execute('vgs', '--noheadings', '--nosuffix',
'--separator', '|',
'--units', 'b', '-o', 'vg_size,vg_free', vg,
run_as_root=True)
info = out.split('|')
if len(info) != 2:
raise RuntimeError(_("vg %s must be LVM volume group") % vg)
return int(info[0]) - int(info[1])
def list_logical_volumes(vg): def list_logical_volumes(vg):
"""List logical volumes paths for given volume group. """List logical volumes paths for given volume group.