Merge "Avoid writing segments to the DB repeatedly" into stable/train
This commit is contained in:
commit
7b9bb35c84
|
@ -398,6 +398,7 @@ class AgentDbMixin(ext_agent.AgentPluginBase, AgentAvailabilityZoneMixin):
|
||||||
agent = self._get_agent_by_type_and_host(
|
agent = self._get_agent_by_type_and_host(
|
||||||
context, agent_state['agent_type'], agent_state['host'])
|
context, agent_state['agent_type'], agent_state['host'])
|
||||||
agent_state_orig = copy.deepcopy(agent_state)
|
agent_state_orig = copy.deepcopy(agent_state)
|
||||||
|
agent_state_previous = copy.deepcopy(agent)
|
||||||
if not agent.is_active:
|
if not agent.is_active:
|
||||||
status = agent_consts.AGENT_REVIVED
|
status = agent_consts.AGENT_REVIVED
|
||||||
if 'resource_versions' not in agent_state:
|
if 'resource_versions' not in agent_state:
|
||||||
|
@ -418,6 +419,7 @@ class AgentDbMixin(ext_agent.AgentPluginBase, AgentAvailabilityZoneMixin):
|
||||||
event_type = events.AFTER_UPDATE
|
event_type = events.AFTER_UPDATE
|
||||||
except agent_exc.AgentNotFoundByTypeHost:
|
except agent_exc.AgentNotFoundByTypeHost:
|
||||||
agent_state_orig = None
|
agent_state_orig = None
|
||||||
|
agent_state_previous = None
|
||||||
greenthread.sleep(0)
|
greenthread.sleep(0)
|
||||||
res['created_at'] = current_time
|
res['created_at'] = current_time
|
||||||
res['started_at'] = current_time
|
res['started_at'] = current_time
|
||||||
|
@ -441,7 +443,7 @@ class AgentDbMixin(ext_agent.AgentPluginBase, AgentAvailabilityZoneMixin):
|
||||||
'plugin': self,
|
'plugin': self,
|
||||||
'status': status
|
'status': status
|
||||||
},
|
},
|
||||||
states=(agent_state_orig, ),
|
states=(agent_state_orig, agent_state_previous),
|
||||||
desired_state=agent_state,
|
desired_state=agent_state,
|
||||||
resource_id=agent.id
|
resource_id=agent.id
|
||||||
))
|
))
|
||||||
|
|
|
@ -298,6 +298,11 @@ def _update_segment_host_mapping_for_agent(resource, event, trigger,
|
||||||
if host in reported_hosts and not start_flag:
|
if host in reported_hosts and not start_flag:
|
||||||
return
|
return
|
||||||
reported_hosts.add(host)
|
reported_hosts.add(host)
|
||||||
|
if (len(payload.states) > 1 and
|
||||||
|
payload.states[1] is not None and
|
||||||
|
agent.get('configurations') == payload.states[1].get(
|
||||||
|
'configurations')):
|
||||||
|
return
|
||||||
segments = get_segments_with_phys_nets(context, phys_nets)
|
segments = get_segments_with_phys_nets(context, phys_nets)
|
||||||
current_segment_ids = {
|
current_segment_ids = {
|
||||||
segment['id'] for segment in segments
|
segment['id'] for segment in segments
|
||||||
|
|
|
@ -947,9 +947,9 @@ class TestMl2HostSegmentMappingAgentServerSynch(HostSegmentMappingTestCase):
|
||||||
self._register_agent(host, mappings={physical_network: 'br-eth-1'},
|
self._register_agent(host, mappings={physical_network: 'br-eth-1'},
|
||||||
plugin=self.plugin, start_flag=True)
|
plugin=self.plugin, start_flag=True)
|
||||||
self.assertIn(host, db.reported_hosts)
|
self.assertIn(host, db.reported_hosts)
|
||||||
self.assertEqual(2, mock_function.call_count)
|
self.assertEqual(1, mock_function.call_count)
|
||||||
expected_call = mock.call(mock.ANY, host, set())
|
expected_call = mock.call(mock.ANY, host, set())
|
||||||
mock_function.assert_has_calls([expected_call, expected_call])
|
mock_function.assert_has_calls([expected_call])
|
||||||
|
|
||||||
@mock.patch(mock_path)
|
@mock.patch(mock_path)
|
||||||
def test_no_starting_agent_is_not_processed(self, mock_function):
|
def test_no_starting_agent_is_not_processed(self, mock_function):
|
||||||
|
|
Loading…
Reference in New Issue