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."""
|
"""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
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user