Fix resource tracker VCPU counting
The resource track is double counting the number of vcpus used because it counts the virt driver's view and the resource tracker's view. It should reset the count to 0 before counting the resourcet racker's view. this is done for other resources (memory, disk) in _update_usage_from_instances(). This was not caught in unit tests because they always provide a virt driver view with no resource used for tests that assume instances are already running. This patch adds the reset to 0 and modifies the tests to provide correct counts of used resources from the virt driver. Change-Id: I21acfd7d5b5ed442cd1e9049c986a06bd2b59b81 Closes-Bug: #1519001
This commit is contained in:
parent
4fb0da175d
commit
69eca4c60d
|
@ -862,6 +862,7 @@ class ResourceTracker(object):
|
|||
# set some initial values, reserve room for host/hypervisor:
|
||||
self.compute_node.local_gb_used = CONF.reserved_host_disk_mb / 1024
|
||||
self.compute_node.memory_mb_used = CONF.reserved_host_memory_mb
|
||||
self.compute_node.vcpus_used = 0
|
||||
self.compute_node.free_ram_mb = (self.compute_node.memory_mb -
|
||||
self.compute_node.memory_mb_used)
|
||||
self.compute_node.free_disk_gb = (self.compute_node.local_gb -
|
||||
|
|
|
@ -538,7 +538,14 @@ class TestUpdateAvailableResources(BaseTestCase):
|
|||
get_cn_mock):
|
||||
self.flags(reserved_host_disk_mb=0,
|
||||
reserved_host_memory_mb=0)
|
||||
self._setup_rt()
|
||||
|
||||
# Setup virt resources to match used resources to number
|
||||
# of defined instances on the hypervisor
|
||||
virt_resources = copy.deepcopy(_VIRT_DRIVER_AVAIL_RESOURCES)
|
||||
virt_resources.update(vcpus_used=1,
|
||||
memory_mb_used=128,
|
||||
local_gb_used=1)
|
||||
self._setup_rt(virt_resources=virt_resources)
|
||||
|
||||
get_mock.return_value = _INSTANCE_FIXTURES
|
||||
migr_mock.return_value = []
|
||||
|
@ -583,7 +590,12 @@ class TestUpdateAvailableResources(BaseTestCase):
|
|||
get_cn_mock):
|
||||
self.flags(reserved_host_disk_mb=0,
|
||||
reserved_host_memory_mb=0)
|
||||
self._setup_rt()
|
||||
|
||||
# Setup virt resources to match used resources to number
|
||||
# of defined instances on the hypervisor
|
||||
virt_resources = copy.deepcopy(_VIRT_DRIVER_AVAIL_RESOURCES)
|
||||
virt_resources.update(memory_mb_used=64)
|
||||
self._setup_rt(virt_resources=virt_resources)
|
||||
|
||||
get_mock.return_value = []
|
||||
migr_mock.return_value = []
|
||||
|
@ -660,7 +672,14 @@ class TestUpdateAvailableResources(BaseTestCase):
|
|||
# node in case of a revert of the resize.
|
||||
self.flags(reserved_host_disk_mb=0,
|
||||
reserved_host_memory_mb=0)
|
||||
self._setup_rt()
|
||||
|
||||
# Setup virt resources to match used resources to number
|
||||
# of defined instances on the hypervisor
|
||||
virt_resources = copy.deepcopy(_VIRT_DRIVER_AVAIL_RESOURCES)
|
||||
virt_resources.update(vcpus_used=4,
|
||||
memory_mb_used=128,
|
||||
local_gb_used=1)
|
||||
self._setup_rt(virt_resources=virt_resources)
|
||||
|
||||
get_mock.return_value = []
|
||||
migr_obj = _MIGRATION_FIXTURES['source-only']
|
||||
|
@ -723,7 +742,14 @@ class TestUpdateAvailableResources(BaseTestCase):
|
|||
# node in case of a confirm of the resize.
|
||||
self.flags(reserved_host_disk_mb=0,
|
||||
reserved_host_memory_mb=0)
|
||||
self._setup_rt()
|
||||
|
||||
# Setup virt resources to match used resources to number
|
||||
# of defined instances on the hypervisor
|
||||
virt_resources = copy.deepcopy(_VIRT_DRIVER_AVAIL_RESOURCES)
|
||||
virt_resources.update(vcpus_used=2,
|
||||
memory_mb_used=256,
|
||||
local_gb_used=5)
|
||||
self._setup_rt(virt_resources=virt_resources)
|
||||
|
||||
get_mock.return_value = []
|
||||
migr_obj = _MIGRATION_FIXTURES['dest-only']
|
||||
|
@ -780,7 +806,14 @@ class TestUpdateAvailableResources(BaseTestCase):
|
|||
# is in progress, but not finished yet.
|
||||
self.flags(reserved_host_disk_mb=0,
|
||||
reserved_host_memory_mb=0)
|
||||
self._setup_rt()
|
||||
|
||||
# Setup virt resources to match used resources to number
|
||||
# of defined instances on the hypervisor
|
||||
virt_resources = copy.deepcopy(_VIRT_DRIVER_AVAIL_RESOURCES)
|
||||
virt_resources.update(vcpus_used=2,
|
||||
memory_mb_used=256,
|
||||
local_gb_used=5)
|
||||
self._setup_rt(virt_resources=virt_resources)
|
||||
|
||||
get_mock.return_value = []
|
||||
migr_obj = _MIGRATION_FIXTURES['dest-only-evac']
|
||||
|
@ -842,7 +875,14 @@ class TestUpdateAvailableResources(BaseTestCase):
|
|||
# resize instance types as taking up space on the node.
|
||||
self.flags(reserved_host_disk_mb=0,
|
||||
reserved_host_memory_mb=0)
|
||||
self._setup_rt()
|
||||
|
||||
# Setup virt resources to match used resources to number
|
||||
# of defined instances on the hypervisor
|
||||
virt_resources = copy.deepcopy(_VIRT_DRIVER_AVAIL_RESOURCES)
|
||||
virt_resources.update(vcpus_used=4,
|
||||
memory_mb_used=512,
|
||||
local_gb_used=7)
|
||||
self._setup_rt(virt_resources=virt_resources)
|
||||
|
||||
migr_obj = _MIGRATION_FIXTURES['source-and-dest']
|
||||
migr_mock.return_value = [migr_obj]
|
||||
|
|
Loading…
Reference in New Issue