diff options
| author | Jenkins <jenkins@review.openstack.org> | 2017-01-26 01:51:19 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2017-01-26 01:51:19 +0000 |
| commit | a05e2762dca25e4717655b0d3e78209998d61a69 (patch) | |
| tree | c2f895773264d1e8e0b72282e162c66b6cd04fec /openstackclient | |
| parent | 51c418f8c37eb550879ec32a310f70980de34633 (diff) | |
| parent | 780ce07459f8c196dbf289909c390ff88a380e3f (diff) | |
| download | python-openstackclient-a05e2762dca25e4717655b0d3e78209998d61a69.tar.gz | |
Merge "To support '--project' and '--project-domain' options"
Diffstat (limited to 'openstackclient')
| -rw-r--r-- | openstackclient/network/v2/port.py | 15 | ||||
| -rw-r--r-- | openstackclient/tests/unit/network/v2/test_port.py | 41 |
2 files changed, 56 insertions, 0 deletions
diff --git a/openstackclient/network/v2/port.py b/openstackclient/network/v2/port.py index 9ce0ce63..c9de47e2 100644 --- a/openstackclient/network/v2/port.py +++ b/openstackclient/network/v2/port.py @@ -460,11 +460,18 @@ class ListPort(command.Lister): default=False, help=_("List additional fields in output") ) + parser.add_argument( + '--project', + metavar='<project>', + help=_("List ports according to their project (name or ID)") + ) + identity_common.add_project_domain_option_to_parser(parser) return parser def take_action(self, parsed_args): network_client = self.app.client_manager.network compute_client = self.app.client_manager.compute + identity_client = self.app.client_manager.identity columns = ( 'id', @@ -501,6 +508,14 @@ class ListPort(command.Lister): filters['network_id'] = network.id if parsed_args.mac_address: filters['mac_address'] = parsed_args.mac_address + if parsed_args.project: + project_id = identity_common.find_project( + identity_client, + parsed_args.project, + parsed_args.project_domain, + ).id + filters['tenant_id'] = project_id + filters['project_id'] = project_id data = network_client.ports(**filters) diff --git a/openstackclient/tests/unit/network/v2/test_port.py b/openstackclient/tests/unit/network/v2/test_port.py index 9deb77ac..fc626685 100644 --- a/openstackclient/tests/unit/network/v2/test_port.py +++ b/openstackclient/tests/unit/network/v2/test_port.py @@ -20,6 +20,7 @@ from osc_lib import utils from openstackclient.network.v2 import port from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes +from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes from openstackclient.tests.unit.network.v2 import fakes as network_fakes from openstackclient.tests.unit import utils as tests_utils @@ -31,6 +32,8 @@ class TestPort(network_fakes.TestNetworkV2): # Get a shortcut to the network client self.network = self.app.client_manager.network + # Get a shortcut to the ProjectManager Mock + self.projects_mock = self.app.client_manager.identity.projects def _get_common_cols_data(self, fake_port): columns = ( @@ -741,6 +744,44 @@ class TestListPort(TestPort): self.assertEqual(self.columns_long, columns) self.assertEqual(self.data_long, list(data)) + def test_port_list_project(self): + project = identity_fakes.FakeProject.create_one_project() + self.projects_mock.get.return_value = project + arglist = [ + '--project', project.id, + ] + verifylist = [ + ('project', project.id), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + columns, data = self.cmd.take_action(parsed_args) + filters = {'tenant_id': project.id, 'project_id': project.id} + + self.network.ports.assert_called_once_with(**filters) + self.assertEqual(self.columns, columns) + self.assertEqual(self.data, list(data)) + + def test_port_list_project_domain(self): + project = identity_fakes.FakeProject.create_one_project() + self.projects_mock.get.return_value = project + arglist = [ + '--project', project.id, + '--project-domain', project.domain_id, + ] + verifylist = [ + ('project', project.id), + ('project_domain', project.domain_id), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + columns, data = self.cmd.take_action(parsed_args) + filters = {'tenant_id': project.id, 'project_id': project.id} + + self.network.ports.assert_called_once_with(**filters) + self.assertEqual(self.columns, columns) + self.assertEqual(self.data, list(data)) + class TestSetPort(TestPort): |
