summaryrefslogtreecommitdiff
path: root/openstackclient/network
diff options
context:
space:
mode:
authorsongminglong <songminglong@cmss.chinamobile.com>2016-12-09 14:23:26 +0800
committersongminglong <songminglong@cmss.chinamobile.com>2016-12-09 14:23:26 +0800
commit47716d1ad32b7c879f6b5736687be1553f6fbfb6 (patch)
tree2cde35900514eb84ec03778ee0a8ca8b3614b93d /openstackclient/network
parent83cf09df28e200ba40f403504db3b11e623978fd (diff)
downloadpython-openstackclient-47716d1ad32b7c879f6b5736687be1553f6fbfb6.tar.gz
Add extra filtering options to floating ip list
The patch adds filtering '--long', 'status', '--project', '--project-domain' and '--router' options to floating ip list command. Closes-Bug: #1614379 Partially-Implements: blueprint network-commands-options Change-Id: I2a02cf23845ff435927d8b481f77249915bd94dc
Diffstat (limited to 'openstackclient/network')
-rw-r--r--openstackclient/network/v2/floating_ip.py54
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)