diff options
-rw-r--r-- | nova/tests/test_libvirt.py | 12 | ||||
-rwxr-xr-x | nova/virt/libvirt/driver.py | 10 |
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 2c08a913e..98c540579 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") % |