]> xenbits.xensource.com Git - osstest/openstack-nova.git/commitdiff
Calculate stopped instance's disk sizes for disk_available_least
authorRikimaru Honjo <honjo.rikimaru@po.ntt-tx.co.jp>
Fri, 26 May 2017 05:04:44 +0000 (14:04 +0900)
committerTakashi NATSUME <natsume.takashi@lab.ntt.co.jp>
Wed, 14 Jun 2017 01:50:01 +0000 (10:50 +0900)
disk_available_least is a free disk size information of hypervisors.
This is calculated by the following fomula:

disk_available_least = <free disk size> - <Total gap between virtual
disk size and actual disk size for all instances>

But stopped instance's virtual disk sizes were not calculated
after merging following patch in Juno cycle:
https://review.openstack.org/#/c/105127

So disk_available_least might be larger than actual free disk size.
As a result, instances might be scheduled beyond the actual free
disk size if stopped instances were on a host.

This patch fix it.
Stopped instance's disks will be calculated after merging this patch.

Change-Id: I8abf6edfa80e3920539e4f6d4906c573f9543b91
Closes-Bug: #1693679
(cherry-picked from commit 3342215034c7a7a938c497c39f6405763201a261)

nova/tests/unit/virt/libvirt/test_driver.py
nova/virt/libvirt/driver.py

index b67f9aafda8c4ac3fdb0389114b1ef2bb7c56708..d7c9b89e154393bab2b29151f7272d2f7ba070ca 100644 (file)
@@ -12350,7 +12350,7 @@ class LibvirtConnTestCase(test.NoDBTestCase):
 
             result = drvr._get_disk_over_committed_size_total()
             self.assertEqual(result, 10653532160)
-            mock_list.assert_called_once_with()
+            mock_list.assert_called_once_with(only_running=False)
             self.assertEqual(2, mock_info.call_count)
 
         filters = {'uuid': instance_uuids}
@@ -12461,7 +12461,7 @@ class LibvirtConnTestCase(test.NoDBTestCase):
 
         result = drvr._get_disk_over_committed_size_total()
         self.assertEqual(42949672960, result)
-        mock_list.assert_called_once_with()
+        mock_list.assert_called_once_with(only_running=False)
         self.assertEqual(5, get_disk_info.call_count)
         filters = {'uuid': instance_uuids}
         mock_get.assert_called_once_with(mock.ANY, filters, use_slave=True)
index f0c1a22a2b0fe869551494485cf075db556b459f..303eb2ea9e701be1effeb746aee3d86b16ce5792 100644 (file)
@@ -7071,7 +7071,7 @@ class LibvirtDriver(driver.ComputeDriver):
         """Return total over committed disk size for all instances."""
         # Disk size that all instance uses : virtual_size - disk_size
         disk_over_committed_size = 0
-        instance_domains = self._host.list_instance_domains()
+        instance_domains = self._host.list_instance_domains(only_running=False)
         if not instance_domains:
             return disk_over_committed_size