summaryrefslogtreecommitdiff
path: root/openstackclient/identity
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/identity')
-rw-r--r--openstackclient/identity/v2_0/ec2creds.py14
-rw-r--r--openstackclient/identity/v2_0/service.py41
-rw-r--r--openstackclient/identity/v3/domain.py24
-rw-r--r--openstackclient/identity/v3/group.py39
-rw-r--r--openstackclient/identity/v3/region.py38
-rw-r--r--openstackclient/identity/v3/user.py13
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={},