Merge "Avoid redundant call to update_resource_stats from RT"

This commit is contained in:
Jenkins
2017-01-29 16:58:07 +00:00
committed by Gerrit Code Review
2 changed files with 22 additions and 1 deletions

View File

@@ -713,7 +713,8 @@ class ResourceTracker(object):
"""Check to see if any resources have changed.""" """Check to see if any resources have changed."""
nodename = compute_node.hypervisor_hostname nodename = compute_node.hypervisor_hostname
old_compute = self.old_resources[nodename] old_compute = self.old_resources[nodename]
if not obj_base.obj_equal_prims(compute_node, old_compute): if not obj_base.obj_equal_prims(
compute_node, old_compute, ['updated_at']):
self.old_resources[nodename] = copy.deepcopy(compute_node) self.old_resources[nodename] = copy.deepcopy(compute_node)
return True return True
return False return False

View File

@@ -1099,6 +1099,26 @@ class TestUpdateComputeNode(BaseTestCase):
self.rt._update(mock.sentinel.ctx, new_compute) self.rt._update(mock.sentinel.ctx, new_compute)
self.assertFalse(urs_mock.called) self.assertFalse(urs_mock.called)
@mock.patch('nova.objects.Service.get_by_compute_host')
def test_existing_compute_node_updated_diff_updated_at(self, service_mock):
self._setup_rt()
ts1 = timeutils.utcnow()
ts2 = ts1 + datetime.timedelta(seconds=10)
orig_compute = _COMPUTE_NODE_FIXTURES[0].obj_clone()
orig_compute.updated_at = ts1
self.rt.compute_nodes[_NODENAME] = orig_compute
self.rt.old_resources[_NODENAME] = orig_compute
# Make the new_compute object have a different timestamp
# from orig_compute.
new_compute = orig_compute.obj_clone()
new_compute.updated_at = ts2
urs_mock = self.sched_client_mock.update_resource_stats
self.rt._update(mock.sentinel.ctx, new_compute)
self.assertFalse(urs_mock.called)
@mock.patch('nova.objects.Service.get_by_compute_host') @mock.patch('nova.objects.Service.get_by_compute_host')
def test_existing_compute_node_updated_new_resources(self, service_mock): def test_existing_compute_node_updated_new_resources(self, service_mock):
self._setup_rt() self._setup_rt()