diff options
Diffstat (limited to 'openstackclient/identity')
| -rw-r--r-- | openstackclient/identity/v2_0/ec2creds.py | 14 | ||||
| -rw-r--r-- | openstackclient/identity/v2_0/service.py | 41 | ||||
| -rw-r--r-- | openstackclient/identity/v3/domain.py | 24 | ||||
| -rw-r--r-- | openstackclient/identity/v3/group.py | 39 | ||||
| -rw-r--r-- | openstackclient/identity/v3/region.py | 38 | ||||
| -rw-r--r-- | openstackclient/identity/v3/user.py | 13 |
6 files changed, 103 insertions, 66 deletions
diff --git a/openstackclient/identity/v2_0/ec2creds.py b/openstackclient/identity/v2_0/ec2creds.py index a20ffd4b..90553eb1 100644 --- a/openstackclient/identity/v2_0/ec2creds.py +++ b/openstackclient/identity/v2_0/ec2creds.py @@ -37,12 +37,14 @@ class CreateEC2Creds(show.ShowOne): parser.add_argument( '--project', metavar='<project>', - help=_('Specify a project [admin only]'), + help=_('Specify an alternate project' + ' (default: current authenticated project)'), ) parser.add_argument( '--user', metavar='<user>', - help=_('Specify a user [admin only]'), + help=_('Specify an alternate user' + ' (default: current authenticated user)'), ) return parser @@ -95,7 +97,7 @@ class DeleteEC2Creds(command.Command): parser.add_argument( '--user', metavar='<user>', - help=_('Specify a user [admin only]'), + help=_('Specify a user'), ) return parser @@ -125,7 +127,7 @@ class ListEC2Creds(lister.Lister): parser.add_argument( '--user', metavar='<user>', - help=_('Specify a user [admin only]'), + help=_('Specify a user'), ) return parser @@ -154,7 +156,7 @@ class ListEC2Creds(lister.Lister): class ShowEC2Creds(show.ShowOne): - """Show EC2 credentials""" + """Display EC2 credentials details""" log = logging.getLogger(__name__ + '.ShowEC2Creds') @@ -168,7 +170,7 @@ class ShowEC2Creds(show.ShowOne): parser.add_argument( '--user', metavar='<user>', - help=_('Specify a user [admin only]'), + help=_('Specify a user'), ) return parser diff --git a/openstackclient/identity/v2_0/service.py b/openstackclient/identity/v2_0/service.py index e8848dde..0b98a903 100644 --- a/openstackclient/identity/v2_0/service.py +++ b/openstackclient/identity/v2_0/service.py @@ -15,6 +15,7 @@ """Service action implementations""" +import argparse import logging import six @@ -36,15 +37,20 @@ class CreateService(show.ShowOne): def get_parser(self, prog_name): parser = super(CreateService, self).get_parser(prog_name) parser.add_argument( - 'name', - metavar='<service-name>', - help=_('New service name'), + 'type_or_name', + metavar='<type>', + help=_('New service type (compute, image, identity, volume, etc)'), ) - parser.add_argument( + type_or_name_group = parser.add_mutually_exclusive_group() + type_or_name_group.add_argument( '--type', metavar='<service-type>', - required=True, - help=_('New service type (compute, image, identity, volume, etc)'), + help=argparse.SUPPRESS, + ) + type_or_name_group.add_argument( + '--name', + metavar='<name>', + help=_('New service name'), ) parser.add_argument( '--description', @@ -57,9 +63,28 @@ class CreateService(show.ShowOne): self.log.debug('take_action(%s)', parsed_args) identity_client = self.app.client_manager.identity + type_or_name = parsed_args.type_or_name + name = parsed_args.name + type = parsed_args.type + + # If only a single positional is present, it's a <type>. + # This is not currently legal so it is considered a new case. + if not type and not name: + type = type_or_name + # If --type option is present then positional is handled as <name>; + # display deprecation message. + elif type: + name = type_or_name + self.log.warning(_('The argument --type is deprecated, use service' + ' create --name <service-name> type instead.')) + # If --name option is present the positional is handled as <type>. + # Making --type optional is new, but back-compatible + elif name: + type = type_or_name + service = identity_client.services.create( - parsed_args.name, - parsed_args.type, + name, + type, parsed_args.description) info = {} diff --git a/openstackclient/identity/v3/domain.py b/openstackclient/identity/v3/domain.py index 727f5b18..189f0970 100644 --- a/openstackclient/identity/v3/domain.py +++ b/openstackclient/identity/v3/domain.py @@ -48,15 +48,14 @@ class CreateDomain(show.ShowOne): enable_group = parser.add_mutually_exclusive_group() enable_group.add_argument( '--enable', - dest='enabled', action='store_true', - default=True, - help='Enable domain') + help='Enable domain (default)', + ) enable_group.add_argument( '--disable', - dest='enabled', - action='store_false', - help='Disable domain') + action='store_true', + help='Disable domain', + ) parser.add_argument( '--or-show', action='store_true', @@ -68,11 +67,15 @@ class CreateDomain(show.ShowOne): self.log.debug('take_action(%s)', parsed_args) identity_client = self.app.client_manager.identity + enabled = True + if parsed_args.disable: + enabled = False + try: domain = identity_client.domains.create( name=parsed_args.name, description=parsed_args.description, - enabled=parsed_args.enabled, + enabled=enabled, ) except ksc_exc.Conflict as e: if parsed_args.or_show: @@ -150,13 +153,11 @@ class SetDomain(command.Command): enable_group = parser.add_mutually_exclusive_group() enable_group.add_argument( '--enable', - dest='enabled', action='store_true', help='Enable domain', ) enable_group.add_argument( '--disable', - dest='disabled', action='store_true', help='Disable domain', ) @@ -172,9 +173,10 @@ class SetDomain(command.Command): kwargs['name'] = parsed_args.name if parsed_args.description: kwargs['description'] = parsed_args.description - if parsed_args.enabled: + + if parsed_args.enable: kwargs['enabled'] = True - if parsed_args.disabled: + if parsed_args.disable: kwargs['enabled'] = False if not kwargs: diff --git a/openstackclient/identity/v3/group.py b/openstackclient/identity/v3/group.py index fbd8dd72..94e101f3 100644 --- a/openstackclient/identity/v3/group.py +++ b/openstackclient/identity/v3/group.py @@ -39,12 +39,12 @@ class AddUserToGroup(command.Command): parser.add_argument( 'group', metavar='<group>', - help='Group that user will be added to (name or ID)', + help='Group to contain <user> (name or ID)', ) parser.add_argument( 'user', metavar='<user>', - help='User to add to group (name or ID)', + help='User to add to <group> (name or ID)', ) return parser @@ -68,7 +68,7 @@ class AddUserToGroup(command.Command): class CheckUserInGroup(command.Command): - """Check user in group""" + """Check user membership in group""" log = logging.getLogger(__name__ + '.CheckUserInGroup') @@ -77,7 +77,7 @@ class CheckUserInGroup(command.Command): parser.add_argument( 'group', metavar='<group>', - help='Group to check if user belongs to (name or ID)', + help='Group to check (name or ID)', ) parser.add_argument( 'user', @@ -115,15 +115,18 @@ class CreateGroup(show.ShowOne): parser.add_argument( 'name', metavar='<group-name>', - help='New group name') - parser.add_argument( - '--description', - metavar='<description>', - help='New group description') + help='New group name', + ) parser.add_argument( '--domain', metavar='<domain>', - help='References the domain ID or name which owns the group') + help='Domain to contain new group (name or ID)', + ) + parser.add_argument( + '--description', + metavar='<description>', + help='New group description', + ) parser.add_argument( '--or-show', action='store_true', @@ -173,7 +176,7 @@ class DeleteGroup(command.Command): parser.add_argument( '--domain', metavar='<domain>', - help='Domain where group resides (name or ID)', + help='Domain containing group(s) (name or ID)', ) return parser @@ -211,7 +214,7 @@ class ListGroup(lister.Lister): parser.add_argument( '--user', metavar='<user>', - help='List group memberships for <user> (name or ID)', + help='Filter group list by <user> (name or ID)', ) parser.add_argument( '--long', @@ -259,7 +262,7 @@ class ListGroup(lister.Lister): class RemoveUserFromGroup(command.Command): - """Remove user to group""" + """Remove user from group""" log = logging.getLogger(__name__ + '.RemoveUserFromGroup') @@ -268,12 +271,12 @@ class RemoveUserFromGroup(command.Command): parser.add_argument( 'group', metavar='<group>', - help='Group that user will be removed from (name or ID)', + help='Group containing <user> (name or ID)', ) parser.add_argument( 'user', metavar='<user>', - help='User to remove from group (name or ID)', + help='User to remove from <group> (name or ID)', ) return parser @@ -314,7 +317,7 @@ class SetGroup(command.Command): parser.add_argument( '--domain', metavar='<domain>', - help='New domain that will now own the group (name or ID)') + help='New domain to contain <group> (name or ID)') parser.add_argument( '--description', metavar='<description>', @@ -341,7 +344,7 @@ class SetGroup(command.Command): class ShowGroup(show.ShowOne): - """Show group details""" + """Display group details""" log = logging.getLogger(__name__ + '.ShowGroup') @@ -355,7 +358,7 @@ class ShowGroup(show.ShowOne): parser.add_argument( '--domain', metavar='<domain>', - help='Domain where group resides (name or ID)', + help='Domain containing <group> (name or ID)', ) return parser diff --git a/openstackclient/identity/v3/region.py b/openstackclient/identity/v3/region.py index cce3417d..5fb73913 100644 --- a/openstackclient/identity/v3/region.py +++ b/openstackclient/identity/v3/region.py @@ -35,22 +35,22 @@ class CreateRegion(show.ShowOne): # seems like poor UX, we will only support user-defined IDs. parser.add_argument( 'region', - metavar='<region>', - help=_('New region'), + metavar='<region-id>', + help=_('New region ID'), ) parser.add_argument( '--parent-region', - metavar='<parent-region>', - help=_('The parent region of new region'), + metavar='<region-id>', + help=_('Parent region ID'), ) parser.add_argument( '--description', - metavar='<region-description>', + metavar='<description>', help=_('New region description'), ) parser.add_argument( '--url', - metavar='<region-url>', + metavar='<url>', help=_('New region url'), ) @@ -82,8 +82,8 @@ class DeleteRegion(command.Command): parser = super(DeleteRegion, self).get_parser(prog_name) parser.add_argument( 'region', - metavar='<region>', - help=_('Region to delete'), + metavar='<region-id>', + help=_('Region ID to delete'), ) return parser @@ -104,8 +104,8 @@ class ListRegion(lister.Lister): parser = super(ListRegion, self).get_parser(prog_name) parser.add_argument( '--parent-region', - metavar='<parent-region>', - help=_('Filter by parent region'), + metavar='<region-id>', + help=_('Filter by parent region ID'), ) return parser @@ -137,22 +137,22 @@ class SetRegion(command.Command): parser = super(SetRegion, self).get_parser(prog_name) parser.add_argument( 'region', - metavar='<region>', - help=_('Region to change'), + metavar='<region-id>', + help=_('Region ID to modify'), ) parser.add_argument( '--parent-region', - metavar='<parent-region>', - help=_('New parent region of the region'), + metavar='<region-id>', + help=_('New parent region ID'), ) parser.add_argument( '--description', - metavar='<region-description>', + metavar='<description>', help=_('New region description'), ) parser.add_argument( '--url', - metavar='<region-url>', + metavar='<url>', help=_('New region url'), ) return parser @@ -179,7 +179,7 @@ class SetRegion(command.Command): class ShowRegion(show.ShowOne): - """Show region""" + """Display region details""" log = logging.getLogger(__name__ + '.ShowRegion') @@ -187,8 +187,8 @@ class ShowRegion(show.ShowOne): parser = super(ShowRegion, self).get_parser(prog_name) parser.add_argument( 'region', - metavar='<region>', - help=_('Region to display'), + metavar='<region-id>', + help=_('Region ID to display'), ) return parser diff --git a/openstackclient/identity/v3/user.py b/openstackclient/identity/v3/user.py index dc5468ff..a60c8c83 100644 --- a/openstackclient/identity/v3/user.py +++ b/openstackclient/identity/v3/user.py @@ -15,6 +15,7 @@ """Identity v3 User action implementations""" +import copy import logging import six @@ -220,17 +221,21 @@ class ListUser(lister.Lister): # List users if parsed_args.long: - columns = ('ID', 'Name', 'Project Id', 'Domain Id', - 'Description', 'Email', 'Enabled') + columns = ['ID', 'Name', 'Default Project Id', 'Domain Id', + 'Description', 'Email', 'Enabled'] + column_headers = copy.deepcopy(columns) + column_headers[2] = 'Project' + column_headers[3] = 'Domain' else: - columns = ('ID', 'Name') + columns = ['ID', 'Name'] + column_headers = copy.deepcopy(columns) data = identity_client.users.list( domain=domain, group=group, ) return ( - columns, + column_headers, (utils.get_item_properties( s, columns, formatters={}, |
