def test_report_state_one_node_one_port(self, mock_conn, mock_ir_client): self.agent = ironic_neutron_agent.BaremetalNeutronAgent() with mock.patch.object(self.agent.state_rpc, 'report_state', autospec=True) as mock_report_state: self.agent.ironic_client = mock_conn mock_conn.ports.return_value = iter([FakePort1()]) self.agent.agent_id = 'agent_id' self.agent.member_manager.hashring = hashring.HashRing( [self.agent.agent_id]) expected = { 'topic': n_const.L2_AGENT_TOPIC, 'start_flag': True, 'binary': constants.BAREMETAL_BINARY, 'host': '55555555-4444-3333-2222-111111111111', 'configurations': { 'bridge_mappings': { 'physnet1': 'yes' }, 'log_agent_heartbeats': False, }, 'agent_type': constants.BAREMETAL_AGENT_TYPE } self.agent._report_state() mock_report_state.assert_called_with(self.agent.context, expected)
def test_start_flag_true_on_update_after_config_change( self, mock_conn, mock_ir_client): self.agent = ironic_neutron_agent.BaremetalNeutronAgent() with mock.patch.object(self.agent.state_rpc, 'report_state', autospec=True) as mock_report_state: self.agent.ironic_client = mock_conn mock_conn.ports.return_value = iter([FakePort1()]) self.agent.agent_id = 'agent_id' self.agent.member_manager.hashring = hashring.HashRing( [self.agent.agent_id]) expected = { 'topic': n_const.L2_AGENT_TOPIC, 'start_flag': 'PLACEHOLDER', 'binary': constants.BAREMETAL_BINARY, 'host': '55555555-4444-3333-2222-111111111111', 'configurations': { 'bridge_mappings': { 'physnet1': 'yes' }, 'log_agent_heartbeats': False, }, 'agent_type': constants.BAREMETAL_AGENT_TYPE } # First time report start_flag is True expected.update({'start_flag': True}) self.agent._report_state() mock_report_state.assert_called_with(self.agent.context, expected) # Subsequent times report start_flag is False mock_conn.ports.return_value = iter([FakePort1()]) expected.update({'start_flag': False}) self.agent._report_state() mock_report_state.assert_called_with(self.agent.context, expected) # After bridge_mapping config change start_flag is True once mock_conn.ports.return_value = iter( [FakePort1(physnet='new_physnet')]) expected.update({ 'configurations': { 'bridge_mappings': { 'new_physnet': 'yes' }, 'log_agent_heartbeats': False } }) expected.update({'start_flag': True}) self.agent._report_state() mock_report_state.assert_called_with(self.agent.context, expected) # Subsequent times report start_flag is False mock_conn.ports.return_value = iter( [FakePort1(physnet='new_physnet')]) expected.update({'start_flag': False}) self.agent._report_state() mock_report_state.assert_called_with(self.agent.context, expected)
def test_ironic_port_list_fail(self, mock_log, mock_conn, mock_ir_client): self.agent = ironic_neutron_agent.BaremetalNeutronAgent() self.agent.ironic_client = mock_conn def mock_generator(details=None): raise sdk_exc.OpenStackCloudException() yield mock_conn.ports.side_effect = mock_generator self.agent._report_state() self.assertEqual(1, mock_log.call_count)
def test_state_rpc_report_state_fail(self, mock_report_state, mock_log, mock_conn, mock_ir_client): self.agent = ironic_neutron_agent.BaremetalNeutronAgent() self.agent.agent_id = 'agent_id' self.agent.member_manager.hashring = hashring.HashRing( [self.agent.agent_id]) self.agent.ironic_client = mock_conn self.agent.state_rpc = mock_report_state mock_conn.ports.return_value = iter([FakePort1(), FakePort2()]) mock_report_state.report_state.side_effect = Exception() self.agent._report_state() self.assertEqual(1, mock_log.call_count)
def test_get_template_node_state(self, mock_conn, mock_ir_client): self.agent = ironic_neutron_agent.BaremetalNeutronAgent() # Verify agent binary expected = constants.BAREMETAL_BINARY self.assertEqual(expected, self.agent.get_template_node_state('uuid')['binary']) # Verify agent_type is Baremetal Node expected = constants.BAREMETAL_AGENT_TYPE self.assertEqual( expected, self.agent.get_template_node_state('uuid')['agent_type']) # Verify topic expected = n_const.L2_AGENT_TOPIC self.assertEqual(expected, self.agent.get_template_node_state('uuid')['topic']) # Verify host expected = 'the_node_uuid' self.assertEqual( expected, self.agent.get_template_node_state('the_node_uuid')['host'])