Add filtering by user for 'openstack server list'

Add a new option to search by user when listing servers,
include support for domain scoped users, also update
docs

Co-Authored-By: Steve Martinelli <stevemar@ca.ibm.com>

Closes-Bug: #1483974
Change-Id: Ifdade6dc9ca8400fbd85f6b55793ab15ed17b97d
This commit is contained in:
kafka 2015-08-12 12:07:34 +08:00 committed by Steve Martinelli
parent 66010b41f1
commit 10db0df857
2 changed files with 25 additions and 1 deletions

View File

@ -237,6 +237,15 @@ List servers
Domain the project belongs to (name or ID). Domain the project belongs to (name or ID).
This can be used in case collisions between project names exist. This can be used in case collisions between project names exist.
.. option:: --user <user>
Search by user (admin only) (name or ID)
.. option:: --user-domain <user-domain>
Domain the user belongs to (name or ID).
This can be used in case collisions between user names exist.
.. option:: --long .. option:: --long
List additional fields in output List additional fields in output

View File

@ -699,6 +699,12 @@ class ListServer(lister.Lister):
metavar='<project>', metavar='<project>',
help="Search by project (admin only) (name or ID)") help="Search by project (admin only) (name or ID)")
identity_common.add_project_domain_option_to_parser(parser) identity_common.add_project_domain_option_to_parser(parser)
parser.add_argument(
'--user',
metavar='<user>',
help=_('Search by user (admin only) (name or ID)'),
)
identity_common.add_user_domain_option_to_parser(parser)
parser.add_argument( parser.add_argument(
'--long', '--long',
action='store_true', action='store_true',
@ -710,10 +716,10 @@ class ListServer(lister.Lister):
def take_action(self, parsed_args): def take_action(self, parsed_args):
self.log.debug('take_action(%s)', parsed_args) self.log.debug('take_action(%s)', parsed_args)
compute_client = self.app.client_manager.compute compute_client = self.app.client_manager.compute
identity_client = self.app.client_manager.identity
project_id = None project_id = None
if parsed_args.project: if parsed_args.project:
identity_client = self.app.client_manager.identity
project_id = identity_common.find_project( project_id = identity_common.find_project(
identity_client, identity_client,
parsed_args.project, parsed_args.project,
@ -721,6 +727,14 @@ class ListServer(lister.Lister):
).id ).id
parsed_args.all_projects = True parsed_args.all_projects = True
user_id = None
if parsed_args.user:
user_id = identity_common.find_project(
identity_client,
parsed_args.user,
parsed_args.user_domain,
).id
search_opts = { search_opts = {
'reservation_id': parsed_args.reservation_id, 'reservation_id': parsed_args.reservation_id,
'ip': parsed_args.ip, 'ip': parsed_args.ip,
@ -733,6 +747,7 @@ class ListServer(lister.Lister):
'host': parsed_args.host, 'host': parsed_args.host,
'tenant_id': project_id, 'tenant_id': project_id,
'all_tenants': parsed_args.all_projects, 'all_tenants': parsed_args.all_projects,
'user_id': user_id,
} }
self.log.debug('search options: %s', search_opts) self.log.debug('search options: %s', search_opts)