Merge "Avoid redundant call to update_resource_stats from RT"
This commit is contained in:
@@ -713,7 +713,8 @@ class ResourceTracker(object):
|
||||
"""Check to see if any resources have changed."""
|
||||
nodename = compute_node.hypervisor_hostname
|
||||
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)
|
||||
return True
|
||||
return False
|
||||
|
||||
@@ -1099,6 +1099,26 @@ class TestUpdateComputeNode(BaseTestCase):
|
||||
self.rt._update(mock.sentinel.ctx, new_compute)
|
||||
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')
|
||||
def test_existing_compute_node_updated_new_resources(self, service_mock):
|
||||
self._setup_rt()
|
||||
|
||||
Reference in New Issue
Block a user