diff options
| author | Ankur Gupta <ankur.gupta@intel.com> | 2016-10-12 22:39:35 -0500 |
|---|---|---|
| committer | Akihiro Motoki <amotoki@gmail.com> | 2017-07-11 08:17:09 +0000 |
| commit | 18c532377a2f6d87adef80465fea7ed50d5a17d1 (patch) | |
| tree | bb153cbaf3a07fff1bfc9bc5437ea0cb9d87a694 /openstackclient/tests | |
| parent | faf6e16120206de763c1570698f71114307dab98 (diff) | |
| download | python-openstackclient-18c532377a2f6d87adef80465fea7ed50d5a17d1.tar.gz | |
Network L3 Router Commands for OSC
Implements: blueprint network-l3-commands
Co-Authored-By: Akihiro Motoki <amotoki@gmail.com>
Change-Id: Ia24d76227e164062e89a74c1621b8acb830b26cf
Diffstat (limited to 'openstackclient/tests')
4 files changed, 269 insertions, 24 deletions
diff --git a/openstackclient/tests/functional/network/v2/test_network_agent.py b/openstackclient/tests/functional/network/v2/test_network_agent.py index 16487955..0c74ea1d 100644 --- a/openstackclient/tests/functional/network/v2/test_network_agent.py +++ b/openstackclient/tests/functional/network/v2/test_network_agent.py @@ -137,3 +137,39 @@ class NetworkAgentListTests(common.NetworkTests): self.assertIn( agent_id, col_name ) + + def test_network_agent_list_routers(self): + """Add agent to router, list agents on router, delete.""" + name = uuid.uuid4().hex + cmd_output = json.loads(self.openstack( + 'router create -f json ' + name)) + + self.addCleanup(self.openstack, 'router delete ' + name) + # Get router ID + router_id = cmd_output['id'] + # Get l3 agent id + cmd_output = json.loads(self.openstack( + 'network agent list -f json --agent-type l3')) + + # Check at least one L3 agent is included in the response. + self.assertTrue(cmd_output) + agent_id = cmd_output[0]['ID'] + + # Add router to agent + self.openstack( + 'network agent add router --l3 ' + agent_id + ' ' + router_id) + + # Test router list --agent + cmd_output = json.loads(self.openstack( + 'network agent list -f json --router ' + router_id)) + + agent_ids = [x['ID'] for x in cmd_output] + self.assertIn(agent_id, agent_ids) + + # Remove router from agent + self.openstack( + 'network agent remove router --l3 ' + agent_id + ' ' + router_id) + cmd_output = json.loads(self.openstack( + 'network agent list -f json --router ' + router_id)) + agent_ids = [x['ID'] for x in cmd_output] + self.assertNotIn(agent_id, agent_ids) diff --git a/openstackclient/tests/functional/network/v2/test_router.py b/openstackclient/tests/functional/network/v2/test_router.py index 313feefc..2e5cb5ef 100644 --- a/openstackclient/tests/functional/network/v2/test_router.py +++ b/openstackclient/tests/functional/network/v2/test_router.py @@ -151,6 +151,40 @@ class RouterTests(common.NetworkTests): self.assertIn(name1, names) self.assertIn(name2, names) + def test_router_list_l3_agent(self): + """Tests create router, add l3 agent, list, delete""" + name = uuid.uuid4().hex + cmd_output = json.loads(self.openstack( + 'router create -f json ' + name)) + + self.addCleanup(self.openstack, 'router delete ' + name) + # Get router ID + router_id = cmd_output['id'] + # Get l3 agent id + cmd_output = json.loads(self.openstack( + 'network agent list -f json --agent-type l3')) + + # Check at least one L3 agent is included in the response. + self.assertTrue(cmd_output) + agent_id = cmd_output[0]['ID'] + + # Add router to agent + self.openstack( + 'network agent add router --l3 ' + agent_id + ' ' + router_id) + + cmd_output = json.loads(self.openstack( + 'router list -f json --agent ' + agent_id)) + router_ids = [x['ID'] for x in cmd_output] + self.assertIn(router_id, router_ids) + + # Remove router from agent + self.openstack( + 'network agent remove router --l3 ' + agent_id + ' ' + router_id) + cmd_output = json.loads(self.openstack( + 'router list -f json --agent ' + agent_id)) + router_ids = [x['ID'] for x in cmd_output] + self.assertNotIn(router_id, router_ids) + def test_router_set_show_unset(self): """Tests create router, set, unset, show""" diff --git a/openstackclient/tests/unit/network/v2/test_network_agent.py b/openstackclient/tests/unit/network/v2/test_network_agent.py index 9bb3f090..12e40cdb 100644 --- a/openstackclient/tests/unit/network/v2/test_network_agent.py +++ b/openstackclient/tests/unit/network/v2/test_network_agent.py @@ -73,6 +73,46 @@ class TestAddNetworkToAgent(TestNetworkAgent): self.agent, self.net) +class TestAddRouterAgent(TestNetworkAgent): + + _router = network_fakes.FakeRouter.create_one_router() + _agent = network_fakes.FakeNetworkAgent.create_one_network_agent() + + def setUp(self): + super(TestAddRouterAgent, self).setUp() + self.network.add_router_to_agent = mock.Mock() + self.cmd = network_agent.AddRouterToAgent(self.app, self.namespace) + self.network.get_agent = mock.Mock(return_value=self._agent) + self.network.find_router = mock.Mock(return_value=self._router) + + def test_add_no_options(self): + arglist = [] + verifylist = [] + + # Missing agent ID will cause command to bail + self.assertRaises(tests_utils.ParserException, self.check_parser, + self.cmd, arglist, verifylist) + + def test_add_router_required_options(self): + arglist = [ + self._agent.id, + self._router.id, + '--l3', + ] + verifylist = [ + ('l3', True), + ('agent_id', self._agent.id), + ('router', self._router.id), + ] + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + result = self.cmd.take_action(parsed_args) + + self.network.add_router_to_agent.assert_called_with( + self._agent, self._router) + self.assertIsNone(result) + + class TestDeleteNetworkAgent(TestNetworkAgent): network_agents = ( @@ -171,34 +211,16 @@ class TestListNetworkAgent(TestNetworkAgent): ) data = [] for agent in network_agents: - agent.agent_type = 'DHCP agent' data.append(( agent.id, agent.agent_type, agent.host, agent.availability_zone, - agent.alive, + network_agent._format_alive(agent.alive), network_agent._format_admin_state(agent.admin_state_up), agent.binary, )) - network_agent_columns = ( - 'ID', - 'Host', - 'Admin State Up', - 'Alive', - ) - - network_agent_data = [] - - for agent in network_agents: - network_agent_data.append(( - agent.id, - agent.host, - network_agent._format_admin_state(agent.admin_state_up), - agent.alive, - )) - def setUp(self): super(TestListNetworkAgent, self).setUp() self.network.agents = mock.Mock( @@ -213,6 +235,14 @@ class TestListNetworkAgent(TestNetworkAgent): self.network.network_hosting_dhcp_agents = mock.Mock( return_value=self.network_agents) + self.network.get_agent = mock.Mock(return_value=_testagent) + + self._testrouter = \ + network_fakes.FakeRouter.create_one_router() + self.network.find_router = mock.Mock(return_value=self._testrouter) + self.network.routers_hosting_l3_agents = mock.Mock( + return_value=self.network_agents) + # Get the command object to test self.cmd = network_agent.ListNetworkAgent(self.app, self.namespace) @@ -239,7 +269,7 @@ class TestListNetworkAgent(TestNetworkAgent): columns, data = self.cmd.take_action(parsed_args) self.network.agents.assert_called_once_with(**{ - 'agent_type': self.network_agents[0].agent_type, + 'agent_type': 'DHCP agent', }) self.assertEqual(self.columns, columns) self.assertEqual(self.data, list(data)) @@ -276,8 +306,53 @@ class TestListNetworkAgent(TestNetworkAgent): self.network.network_hosting_dhcp_agents.assert_called_once_with( *attrs) - self.assertEqual(self.network_agent_columns, columns) - self.assertEqual(list(self.network_agent_data), list(data)) + self.assertEqual(self.columns, columns) + self.assertEqual(self.data, list(data)) + + def test_network_agents_list_routers(self): + arglist = [ + '--router', self._testrouter.id, + ] + verifylist = [ + ('router', self._testrouter.id), + ('long', False) + ] + + attrs = {self._testrouter, } + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + columns, data = self.cmd.take_action(parsed_args) + + self.network.routers_hosting_l3_agents.assert_called_once_with( + *attrs) + + self.assertEqual(self.columns, columns) + self.assertEqual(self.data, list(data)) + + def test_network_agents_list_routers_with_long_option(self): + arglist = [ + '--router', self._testrouter.id, + '--long', + ] + verifylist = [ + ('router', self._testrouter.id), + ('long', True) + ] + + attrs = {self._testrouter, } + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + columns, data = self.cmd.take_action(parsed_args) + + self.network.routers_hosting_l3_agents.assert_called_once_with( + *attrs) + + # Add a column 'HA State' and corresponding data. + router_agent_columns = self.columns + ('HA State',) + router_agent_data = [d + ('',) for d in self.data] + + self.assertEqual(router_agent_columns, columns) + self.assertEqual(router_agent_data, list(data)) class TestRemoveNetworkFromAgent(TestNetworkAgent): @@ -303,6 +378,16 @@ class TestRemoveNetworkFromAgent(TestNetworkAgent): self.assertRaises(tests_utils.ParserException, self.check_parser, self.cmd, arglist, verifylist) + def test_network_agents_list_routers_no_arg(self): + arglist = [ + '--routers', + ] + verifylist = [] + + # Missing required args should bail here + self.assertRaises(tests_utils.ParserException, self.check_parser, + self.cmd, arglist, verifylist) + def test_network_from_dhcp_agent(self): arglist = [ '--dhcp', @@ -322,6 +407,46 @@ class TestRemoveNetworkFromAgent(TestNetworkAgent): self.agent, self.net) +class TestRemoveRouterAgent(TestNetworkAgent): + _router = network_fakes.FakeRouter.create_one_router() + _agent = network_fakes.FakeNetworkAgent.create_one_network_agent() + + def setUp(self): + super(TestRemoveRouterAgent, self).setUp() + self.network.remove_router_from_agent = mock.Mock() + self.cmd = network_agent.RemoveRouterFromAgent(self.app, + self.namespace) + self.network.get_agent = mock.Mock(return_value=self._agent) + self.network.find_router = mock.Mock(return_value=self._router) + + def test_remove_no_options(self): + arglist = [] + verifylist = [] + + # Missing agent ID will cause command to bail + self.assertRaises(tests_utils.ParserException, self.check_parser, + self.cmd, arglist, verifylist) + + def test_remove_router_required_options(self): + arglist = [ + '--l3', + self._agent.id, + self._router.id, + ] + verifylist = [ + ('l3', True), + ('agent_id', self._agent.id), + ('router', self._router.id), + ] + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + result = self.cmd.take_action(parsed_args) + + self.network.remove_router_from_agent.assert_called_with( + self._agent, self._router) + self.assertIsNone(result) + + class TestSetNetworkAgent(TestNetworkAgent): _network_agent = ( @@ -415,9 +540,9 @@ class TestShowNetworkAgent(TestNetworkAgent): 'id', ) data = ( - network_agent._format_admin_state(_network_agent.admin_state_up), + network_agent._format_admin_state(_network_agent.is_admin_state_up), _network_agent.agent_type, - _network_agent.alive, + network_agent._format_alive(_network_agent.is_alive), _network_agent.availability_zone, _network_agent.binary, utils.format_dict(_network_agent.configurations), diff --git a/openstackclient/tests/unit/network/v2/test_router.py b/openstackclient/tests/unit/network/v2/test_router.py index 02e0be94..c153fe4a 100644 --- a/openstackclient/tests/unit/network/v2/test_router.py +++ b/openstackclient/tests/unit/network/v2/test_router.py @@ -381,6 +381,21 @@ class TestListRouter(TestRouter): r.ha, r.tenant_id, )) + + router_agent_data = [] + for r in routers: + router_agent_data.append(( + r.id, + r.name, + r.external_gateway_info, + )) + + agents_columns = ( + 'ID', + 'Name', + 'External Gateway Info', + ) + data_long = [] for i in range(0, len(routers)): r = routers[i] @@ -407,8 +422,15 @@ class TestListRouter(TestRouter): # Get the command object to test self.cmd = router.ListRouter(self.app, self.namespace) + self.network.agent_hosted_routers = mock.Mock( + return_value=self.routers) self.network.routers = mock.Mock(return_value=self.routers) self.network.find_extension = mock.Mock(return_value=self._extensions) + self.network.find_router = mock.Mock(return_value=self.routers[0]) + self._testagent = \ + network_fakes.FakeNetworkAgent.create_one_network_agent() + self.network.get_agent = mock.Mock(return_value=self._testagent) + self.network.get_router = mock.Mock(return_value=self.routers[0]) def test_router_list_no_options(self): arglist = [] @@ -556,6 +578,34 @@ class TestListRouter(TestRouter): self.assertEqual(self.columns, columns) self.assertEqual(self.data, list(data)) + def test_router_list_agents_no_args(self): + arglist = [ + '--agents', + ] + verifylist = [] + + # Missing required router ID should bail here + self.assertRaises(tests_utils.ParserException, self.check_parser, + self.cmd, arglist, verifylist) + + def test_router_list_agents(self): + arglist = [ + '--agent', self._testagent.id, + ] + verifylist = [ + ('agent', self._testagent.id), + ] + + attrs = {self._testagent.id, } + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + columns, data = self.cmd.take_action(parsed_args) + + self.network.agent_hosted_routers( + *attrs) + self.assertEqual(self.columns, columns) + self.assertEqual(self.data, list(data)) + class TestRemovePortFromRouter(TestRouter): '''Remove port from a Router ''' |
