summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/tests/test_libvirt.py12
-rwxr-xr-xnova/virt/libvirt/driver.py10
2 files changed, 14 insertions, 8 deletions
diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py
index e26c25ff1..386476cd2 100644
--- a/nova/tests/test_libvirt.py
+++ b/nova/tests/test_libvirt.py
@@ -2488,7 +2488,7 @@ class LibvirtConnTestCase(test.TestCase):
self.mox.StubOutWithMock(os.path, "getsize")
os.path.getsize('/test/disk').AndReturn((10737418240))
- os.path.getsize('/test/disk.local').AndReturn((21474836480))
+ os.path.getsize('/test/disk.local').AndReturn((3328599655))
ret = ("image: /test/disk\n"
"file format: raw\n"
@@ -2512,10 +2512,12 @@ class LibvirtConnTestCase(test.TestCase):
self.assertEquals(info[0]['path'], '/test/disk')
self.assertEquals(info[0]['disk_size'], 10737418240)
self.assertEquals(info[0]['backing_file'], "")
+ self.assertEquals(info[0]['over_committed_disk_size'], 0)
self.assertEquals(info[1]['type'], 'qcow2')
self.assertEquals(info[1]['path'], '/test/disk.local')
self.assertEquals(info[1]['virt_disk_size'], 21474836480)
self.assertEquals(info[1]['backing_file'], "file")
+ self.assertEquals(info[1]['over_committed_disk_size'], 18146236825)
db.instance_destroy(self.context, instance_ref['uuid'])
@@ -3119,11 +3121,13 @@ class LibvirtConnTestCase(test.TestCase):
fake_disks = {'fake1': [{'type': 'qcow2', 'path': '/somepath/disk1',
'virt_disk_size': '10737418240',
'backing_file': '/somepath/disk1',
- 'disk_size':'83886080'}],
+ 'disk_size':'83886080',
+ 'over_committed_disk_size':'10653532160'}],
'fake2': [{'type': 'raw', 'path': '/somepath/disk2',
- 'virt_disk_size': '10737418240',
+ 'virt_disk_size': '0',
'backing_file': '/somepath/disk2',
- 'disk_size':'10737418240'}]}
+ 'disk_size':'10737418240',
+ 'over_committed_disk_size':'0'}]}
def get_info(instance_name):
return jsonutils.dumps(fake_disks.get(instance_name))
diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py
index 7c7c5f97b..920559db9 100755
--- a/nova/virt/libvirt/driver.py
+++ b/nova/virt/libvirt/driver.py
@@ -3374,15 +3374,18 @@ class LibvirtDriver(driver.ComputeDriver):
if disk_type == "qcow2":
backing_file = libvirt_utils.get_disk_backing_file(path)
virt_size = disk.get_disk_size(path)
+ over_commit_size = int(virt_size) - dk_size
else:
backing_file = ""
virt_size = 0
+ over_commit_size = 0
disk_info.append({'type': disk_type,
'path': path,
'virt_disk_size': virt_size,
'backing_file': backing_file,
- 'disk_size': dk_size})
+ 'disk_size': dk_size,
+ 'over_committed_disk_size': over_commit_size})
return jsonutils.dumps(disk_info)
def get_disk_over_committed_size_total(self):
@@ -3395,9 +3398,8 @@ class LibvirtDriver(driver.ComputeDriver):
disk_infos = jsonutils.loads(
self.get_instance_disk_info(i_name))
for info in disk_infos:
- i_vt_sz = int(info['virt_disk_size'])
- i_dk_sz = int(info['disk_size'])
- disk_over_committed_size += i_vt_sz - i_dk_sz
+ disk_over_committed_size += int(
+ info['over_committed_disk_size'])
except OSError as e:
if e.errno == errno.ENOENT:
LOG.error(_("Getting disk size of %(i_name)s: %(e)s") %