def test_schedule_bgp_speaker(self):
        """Test happy path over full scheduling cycle."""
        with self.bgp_speaker(4, 1234) as ri:
            bgp_speaker_id = ri['id']
            helpers.register_bgp_dragent(host='host1')
            agent = self._list('agents')['agents'][0]
            agent_id = agent['id']

            data = {'bgp_speaker_id': bgp_speaker_id}
            req = self.new_create_request('agents', data, self.fmt, agent_id,
                                          'bgp-drinstances')
            res = req.get_response(self.ext_api)
            self.assertEqual(exc.HTTPCreated.code, res.status_int)

            req_show = self.new_show_request('agents', agent_id, self.fmt,
                                             'bgp-drinstances')
            res = req_show.get_response(self.ext_api)
            self.assertEqual(exc.HTTPOk.code, res.status_int)
            res = self.deserialize(self.fmt, res)
            self.assertIn('bgp_speakers', res)
            self.assertTrue(bgp_speaker_id, res['bgp_speakers'][0]['id'])

            req = self.new_delete_request('agents', agent_id, self.fmt,
                                          'bgp-drinstances', bgp_speaker_id)
            res = req.get_response(self.ext_api)
            self.assertEqual(exc.HTTPNoContent.code, res.status_int)

            res = req_show.get_response(self.ext_api)
            self.assertEqual(exc.HTTPOk.code, res.status_int)
            res = self.deserialize(self.fmt, res)
            self.assertIn('bgp_speakers', res)
            self.assertEqual([], res['bgp_speakers'])
 def test_non_scheduled_bgp_speaker_binding_removal(self):
     """Test exception while removing an invalid binding."""
     with self.bgp_speaker(4, 1234) as ri1:
         helpers.register_bgp_dragent(host='host1')
         agent = self._list('agents')['agents'][0]
         agent_id = agent['id']
         self.assertRaises(bgp_dras_ext.DrAgentNotHostingBgpSpeaker,
                           self.bgp_plugin.remove_bgp_speaker_from_dragent,
                           self.context, agent_id, ri1['id'])
 def test_non_scheduled_bgp_speaker_binding_removal(self):
     """Test exception while removing an invalid binding."""
     with self.bgp_speaker(4, 1234) as ri1:
         helpers.register_bgp_dragent(host='host1')
         agent = self._list('agents')['agents'][0]
         agent_id = agent['id']
         self.assertRaises(bgp_dras_ext.DrAgentNotHostingBgpSpeaker,
                           self.bgp_plugin.remove_bgp_speaker_from_dragent,
                           self.context, agent_id, ri1['id'])
    def test_schedule_bgp_speaker_twice_on_same_agent(self):
        """Test error if a BGP speaker is scheduled twice on same agent"""
        with self.bgp_speaker(4, 1234) as ri:
            bgp_speaker_id = ri['id']
            helpers.register_bgp_dragent(host='host1')
            agent = self._list('agents')['agents'][0]
            data = {'bgp_speaker_id': bgp_speaker_id}
            req = self.new_create_request('agents', data, self.fmt,
                                          agent['id'], 'bgp-drinstances')
            res = req.get_response(self.ext_api)
            self.assertEqual(exc.HTTPCreated.code, res.status_int)

            # Try second time, should raise conflict
            res = req.get_response(self.ext_api)
            self.assertEqual(exc.HTTPConflict.code, res.status_int)
    def test_schedule_bgp_speaker_twice_on_same_agent(self):
        """Test error if a BGP speaker is scheduled twice on same agent"""
        with self.bgp_speaker(4, 1234) as ri:
            bgp_speaker_id = ri['id']
            helpers.register_bgp_dragent(host='host1')
            agent = self._list('agents')['agents'][0]
            data = {'bgp_speaker_id': bgp_speaker_id}
            req = self.new_create_request(
                'agents', data, self.fmt,
                agent['id'], 'bgp-drinstances')
            res = req.get_response(self.ext_api)
            self.assertEqual(exc.HTTPCreated.code, res.status_int)

            # Try second time, should raise conflict
            res = req.get_response(self.ext_api)
            self.assertEqual(exc.HTTPConflict.code, res.status_int)
    def test_schedule_multi_bgp_speaker_on_one_dragent(self):
        """Test only one BGP speaker can be associated to one dragent."""
        with self.bgp_speaker(4, 1) as ri1, self.bgp_speaker(4, 2) as ri2:
            helpers.register_bgp_dragent(host='host1')

            agent = self._list('agents')['agents'][0]
            data = {'bgp_speaker_id': ri1['id']}
            req = self.new_create_request('agents', data, self.fmt,
                                          agent['id'], 'bgp-drinstances')
            res = req.get_response(self.ext_api)
            self.assertEqual(exc.HTTPCreated.code, res.status_int)

            data = {'bgp_speaker_id': ri2['id']}
            req = self.new_create_request('agents', data, self.fmt,
                                          agent['id'], 'bgp-drinstances')
            res = req.get_response(self.ext_api)
            self.assertEqual(exc.HTTPConflict.code, res.status_int)
コード例 #7
0
 def _create_and_set_agents_down(self, hosts, down_agent_count=0,
                                 admin_state_up=True):
     agents = []
     for i, host in enumerate(hosts):
         is_alive = i >= down_agent_count
         agents.append(helpers.register_bgp_dragent(
             host,
             admin_state_up=admin_state_up,
             alive=is_alive))
     return agents
    def test_schedule_bgp_speaker_on_two_different_agents(self):
        """Test that a BGP speaker can be associated to two agents."""
        with self.bgp_speaker(4, 1234) as ri:
            bgp_speaker_id = ri['id']
            helpers.register_bgp_dragent(host='host1')
            helpers.register_bgp_dragent(host='host2')
            data = {'bgp_speaker_id': bgp_speaker_id}

            agent1 = self._list('agents')['agents'][0]
            req = self.new_create_request('agents', data, self.fmt,
                                          agent1['id'], 'bgp-drinstances')
            res = req.get_response(self.ext_api)
            self.assertEqual(exc.HTTPCreated.code, res.status_int)

            agent2 = self._list('agents')['agents'][1]
            req = self.new_create_request('agents', data, self.fmt,
                                          agent2['id'], 'bgp-drinstances')
            res = req.get_response(self.ext_api)
            self.assertEqual(exc.HTTPCreated.code, res.status_int)
 def _create_and_set_agents_down(self, hosts, down_agent_count=0,
                                 admin_state_up=True):
     agents = []
     for i, host in enumerate(hosts):
         is_alive = i >= down_agent_count
         agents.append(helpers.register_bgp_dragent(
             host,
             admin_state_up=admin_state_up,
             alive=is_alive))
     return agents
コード例 #10
0
    def test_schedule_multi_bgp_speaker_on_one_dragent(self):
        """Test only one BGP speaker can be associated to one dragent."""
        with self.bgp_speaker(4, 1) as ri1, self.bgp_speaker(4, 2) as ri2:
            helpers.register_bgp_dragent(host='host1')

            agent = self._list('agents')['agents'][0]
            data = {'bgp_speaker_id': ri1['id']}
            req = self.new_create_request(
                'agents', data, self.fmt,
                agent['id'], 'bgp-drinstances')
            res = req.get_response(self.ext_api)
            self.assertEqual(exc.HTTPCreated.code, res.status_int)

            data = {'bgp_speaker_id': ri2['id']}
            req = self.new_create_request(
                'agents', data, self.fmt,
                agent['id'], 'bgp-drinstances')
            res = req.get_response(self.ext_api)
            self.assertEqual(exc.HTTPConflict.code, res.status_int)
コード例 #11
0
    def test_schedule_bgp_speaker_on_two_different_agents(self):
        """Test that a BGP speaker can be associated to two agents."""
        with self.bgp_speaker(4, 1234) as ri:
            bgp_speaker_id = ri['id']
            helpers.register_bgp_dragent(host='host1')
            helpers.register_bgp_dragent(host='host2')
            data = {'bgp_speaker_id': bgp_speaker_id}

            agent1 = self._list('agents')['agents'][0]
            req = self.new_create_request(
                'agents', data, self.fmt,
                agent1['id'], 'bgp-drinstances')
            res = req.get_response(self.ext_api)
            self.assertEqual(exc.HTTPCreated.code, res.status_int)

            agent2 = self._list('agents')['agents'][1]
            req = self.new_create_request(
                'agents', data, self.fmt,
                agent2['id'], 'bgp-drinstances')
            res = req.get_response(self.ext_api)
            self.assertEqual(exc.HTTPCreated.code, res.status_int)
コード例 #12
0
    def test_schedule_bgp_speaker(self):
        """Test happy path over full scheduling cycle."""
        with self.bgp_speaker(4, 1234) as ri:
            bgp_speaker_id = ri['id']
            helpers.register_bgp_dragent(host='host1')
            agent = self._list('agents')['agents'][0]
            agent_id = agent['id']

            data = {'bgp_speaker_id': bgp_speaker_id}
            req = self.new_create_request('agents', data, self.fmt,
                                          agent_id, 'bgp-drinstances')
            res = req.get_response(self.ext_api)
            self.assertEqual(exc.HTTPCreated.code, res.status_int)

            req_show = self.new_show_request('agents', agent_id, self.fmt,
                                             'bgp-drinstances')
            res = req_show.get_response(self.ext_api)
            self.assertEqual(exc.HTTPOk.code, res.status_int)
            res = self.deserialize(self.fmt, res)
            self.assertIn('bgp_speakers', res)
            self.assertTrue(bgp_speaker_id,
                            res['bgp_speakers'][0]['id'])

            req = self.new_delete_request('agents',
                                          agent_id,
                                          self.fmt,
                                          'bgp-drinstances',
                                          bgp_speaker_id)
            res = req.get_response(self.ext_api)
            self.assertEqual(exc.HTTPNoContent.code, res.status_int)

            res = req_show.get_response(self.ext_api)
            self.assertEqual(exc.HTTPOk.code, res.status_int)
            res = self.deserialize(self.fmt, res)
            self.assertIn('bgp_speakers', res)
            self.assertEqual([], res['bgp_speakers'])
コード例 #13
0
 def _kill_bgp_dragent(self, hosts):
     agents = []
     for host in hosts:
         agents.append(
             helpers.register_bgp_dragent(host=host, alive=False))
     return agents
 def _kill_bgp_dragent(self, hosts):
     agents = []
     for host in hosts:
         agents.append(
             helpers.register_bgp_dragent(host=host, alive=False))
     return agents