diff options
| author | Jenkins <jenkins@review.openstack.org> | 2016-12-09 15:21:03 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2016-12-09 15:21:03 +0000 |
| commit | 29587eaa6661493b7df9357ad818bf058e820730 (patch) | |
| tree | b1ce2dec544146bd2bf781c5b2f905aee93df869 /openstackclient/network | |
| parent | 3bc64aa1989726eec8b2d3626e643d7b84382cff (diff) | |
| parent | 47716d1ad32b7c879f6b5736687be1553f6fbfb6 (diff) | |
| download | python-openstackclient-29587eaa6661493b7df9357ad818bf058e820730.tar.gz | |
Merge "Add extra filtering options to floating ip list"
Diffstat (limited to 'openstackclient/network')
| -rw-r--r-- | openstackclient/network/v2/floating_ip.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/openstackclient/network/v2/floating_ip.py b/openstackclient/network/v2/floating_ip.py index 7b8374e2..8202b3fa 100644 --- a/openstackclient/network/v2/floating_ip.py +++ b/openstackclient/network/v2/floating_ip.py @@ -219,6 +219,8 @@ class DeleteIPFloating(DeleteFloatingIP): class ListFloatingIP(common.NetworkAndComputeLister): + # TODO(songminglong): Use SDK resource mapped attribute names once + # the OSC minimum requirements include SDK 1.0 _description = _("List floating IP(s)") def update_parser_network(self, parser): @@ -240,11 +242,38 @@ class ListFloatingIP(common.NetworkAndComputeLister): help=_("List floating IP(s) according to " "given fixed IP address") ) + parser.add_argument( + '--long', + action='store_true', + default=False, + help=_("List additional fields in output") + ) + parser.add_argument( + '--status', + metavar='<status>', + choices=['ACTIVE', 'DOWN'], + help=_("List floating IP(s) according to " + "given status ('ACTIVE', 'DOWN')") + ) + parser.add_argument( + '--project', + metavar='<project>', + help=_("List floating IP(s) according to " + "given project (name or ID)") + ) + identity_common.add_project_domain_option_to_parser(parser) + parser.add_argument( + '--router', + metavar='<router>', + help=_("List floating IP(s) according to " + "given router (name or ID)") + ) return parser def take_action_network(self, client, parsed_args): network_client = self.app.client_manager.network + identity_client = self.app.client_manager.identity columns = ( 'id', @@ -262,6 +291,17 @@ class ListFloatingIP(common.NetworkAndComputeLister): 'Floating Network', 'Project', ) + if parsed_args.long: + columns = columns + ( + 'router_id', + 'status', + 'description', + ) + headers = headers + ( + 'Router', + 'Status', + 'Description', + ) query = {} @@ -275,6 +315,20 @@ class ListFloatingIP(common.NetworkAndComputeLister): query['port_id'] = port.id if parsed_args.fixed_ip_address is not None: query['fixed_ip_address'] = parsed_args.fixed_ip_address + if parsed_args.status: + query['status'] = parsed_args.status + if parsed_args.project is not None: + project = identity_common.find_project( + identity_client, + parsed_args.project, + parsed_args.project_domain, + ) + query['tenant_id'] = project.id + query['project_id'] = project.id + if parsed_args.router is not None: + router = network_client.find_router(parsed_args.router, + ignore_missing=False) + query['router_id'] = router.id data = client.ips(**query) |
