compute node local_gb_used include swap disks
The ComputeNode.local_gb_used value is set in the ResourceTracker._update_usage() method, based on 1. root_gb in the flavor 2. any disk overhead from the virt driver 3. ephemeral_gb in the flavor The consideration of swap disk in the flavor was ignored. This patch adds swap disk to the consideration. Closes-bug: #1782386 Change-Id: I880e9daa6b97d73a0e33ac9a5bdae9bacfa89aaa
This commit is contained in:
parent
99d2a34d1f
commit
e3df049cad
@ -936,6 +936,7 @@ class ResourceTracker(object):
|
|||||||
cn.memory_mb_used += sign * mem_usage
|
cn.memory_mb_used += sign * mem_usage
|
||||||
cn.local_gb_used += sign * disk_usage
|
cn.local_gb_used += sign * disk_usage
|
||||||
cn.local_gb_used += sign * usage.get('ephemeral_gb', 0)
|
cn.local_gb_used += sign * usage.get('ephemeral_gb', 0)
|
||||||
|
cn.local_gb_used += sign * usage.get('swap', 0) / 1024
|
||||||
cn.vcpus_used += sign * vcpus_usage
|
cn.vcpus_used += sign * vcpus_usage
|
||||||
|
|
||||||
# free ram and disk may be negative, depending on policy:
|
# free ram and disk may be negative, depending on policy:
|
||||||
@ -1457,6 +1458,7 @@ class ResourceTracker(object):
|
|||||||
is_bfv = compute_utils.is_volume_backed_instance(
|
is_bfv = compute_utils.is_volume_backed_instance(
|
||||||
object_or_dict._context, object_or_dict)
|
object_or_dict._context, object_or_dict)
|
||||||
usage = {'memory_mb': object_or_dict.flavor.memory_mb,
|
usage = {'memory_mb': object_or_dict.flavor.memory_mb,
|
||||||
|
'swap': object_or_dict.flavor.swap,
|
||||||
'vcpus': object_or_dict.flavor.vcpus,
|
'vcpus': object_or_dict.flavor.vcpus,
|
||||||
'root_gb': (0 if is_bfv else
|
'root_gb': (0 if is_bfv else
|
||||||
object_or_dict.flavor.root_gb),
|
object_or_dict.flavor.root_gb),
|
||||||
|
@ -3649,9 +3649,7 @@ class VolumeBackedServerTest(integrated_helpers.ProviderUsageBaseTestCase):
|
|||||||
self.assertEqual(expected_usage, resources['DISK_GB'])
|
self.assertEqual(expected_usage, resources['DISK_GB'])
|
||||||
# Ensure the compute node is reporting the correct disk usage
|
# Ensure the compute node is reporting the correct disk usage
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
# TODO(efried): Due to bug #1782386, swap is not being reported.
|
expected_usage,
|
||||||
# expected_usage,
|
|
||||||
30,
|
|
||||||
self.admin_api.get_hypervisor_stats()['local_gb_used'])
|
self.admin_api.get_hypervisor_stats()['local_gb_used'])
|
||||||
|
|
||||||
def test_volume_backed_no_disk_allocation(self):
|
def test_volume_backed_no_disk_allocation(self):
|
||||||
@ -3664,9 +3662,7 @@ class VolumeBackedServerTest(integrated_helpers.ProviderUsageBaseTestCase):
|
|||||||
self.assertEqual(expected_usage, resources['DISK_GB'])
|
self.assertEqual(expected_usage, resources['DISK_GB'])
|
||||||
# Ensure the compute node is reporting the correct disk usage
|
# Ensure the compute node is reporting the correct disk usage
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
# TODO(efried): Due to bug #1782386, swap is not being reported.
|
expected_usage,
|
||||||
# expected_usage,
|
|
||||||
20,
|
|
||||||
self.admin_api.get_hypervisor_stats()['local_gb_used'])
|
self.admin_api.get_hypervisor_stats()['local_gb_used'])
|
||||||
|
|
||||||
# Now let's hack the RequestSpec.is_bfv field to mimic migrating an
|
# Now let's hack the RequestSpec.is_bfv field to mimic migrating an
|
||||||
|
@ -2684,6 +2684,15 @@ class TestUpdateUsageFromInstance(BaseTestCase):
|
|||||||
result = self.rt._get_usage_dict(self.instance)
|
result = self.rt._get_usage_dict(self.instance)
|
||||||
self.assertEqual(0, result['root_gb'])
|
self.assertEqual(0, result['root_gb'])
|
||||||
|
|
||||||
|
@mock.patch('nova.compute.utils.is_volume_backed_instance')
|
||||||
|
def test_get_usage_dict_include_swap(
|
||||||
|
self, mock_check_bfv):
|
||||||
|
mock_check_bfv.return_value = False
|
||||||
|
instance_with_swap = self.instance.obj_clone()
|
||||||
|
instance_with_swap.flavor.swap = 10
|
||||||
|
result = self.rt._get_usage_dict(instance_with_swap)
|
||||||
|
self.assertEqual(10, result['swap'])
|
||||||
|
|
||||||
@mock.patch('nova.compute.utils.is_volume_backed_instance')
|
@mock.patch('nova.compute.utils.is_volume_backed_instance')
|
||||||
@mock.patch('nova.compute.resource_tracker.ResourceTracker.'
|
@mock.patch('nova.compute.resource_tracker.ResourceTracker.'
|
||||||
'_update_usage')
|
'_update_usage')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user