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/project.py19
-rw-r--r--openstackclient/identity/v2_0/role.py19
-rw-r--r--openstackclient/identity/v2_0/user.py19
-rw-r--r--openstackclient/identity/v3/domain.py48
-rw-r--r--openstackclient/identity/v3/group.py61
-rw-r--r--openstackclient/identity/v3/project.py25
-rw-r--r--openstackclient/identity/v3/region.py38
-rw-r--r--openstackclient/identity/v3/role.py19
-rw-r--r--openstackclient/identity/v3/role_assignment.py12
-rw-r--r--openstackclient/identity/v3/service.py14
-rw-r--r--openstackclient/identity/v3/user.py38
12 files changed, 181 insertions, 145 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/project.py b/openstackclient/identity/v2_0/project.py
index 6450d814..9b195600 100644
--- a/openstackclient/identity/v2_0/project.py
+++ b/openstackclient/identity/v2_0/project.py
@@ -104,16 +104,17 @@ class CreateProject(show.ShowOne):
class DeleteProject(command.Command):
- """Delete an existing project"""
+ """Delete project(s)"""
log = logging.getLogger(__name__ + '.DeleteProject')
def get_parser(self, prog_name):
parser = super(DeleteProject, self).get_parser(prog_name)
parser.add_argument(
- 'project',
+ 'projects',
metavar='<project>',
- help=_('Project to delete (name or ID)'),
+ nargs="+",
+ help=_('Project(s) to delete (name or ID)'),
)
return parser
@@ -121,12 +122,12 @@ class DeleteProject(command.Command):
self.log.debug('take_action(%s)', parsed_args)
identity_client = self.app.client_manager.identity
- project = utils.find_resource(
- identity_client.tenants,
- parsed_args.project,
- )
-
- identity_client.tenants.delete(project.id)
+ for project in parsed_args.projects:
+ project_obj = utils.find_resource(
+ identity_client.tenants,
+ project,
+ )
+ identity_client.tenants.delete(project_obj.id)
return
diff --git a/openstackclient/identity/v2_0/role.py b/openstackclient/identity/v2_0/role.py
index 475baa2c..d03664e0 100644
--- a/openstackclient/identity/v2_0/role.py
+++ b/openstackclient/identity/v2_0/role.py
@@ -114,16 +114,17 @@ class CreateRole(show.ShowOne):
class DeleteRole(command.Command):
- """Delete an existing role"""
+ """Delete role(s)"""
log = logging.getLogger(__name__ + '.DeleteRole')
def get_parser(self, prog_name):
parser = super(DeleteRole, self).get_parser(prog_name)
parser.add_argument(
- 'role',
+ 'roles',
metavar='<role>',
- help=_('Role to delete (name or ID)'),
+ nargs="+",
+ help=_('Role(s) to delete (name or ID)'),
)
return parser
@@ -131,12 +132,12 @@ class DeleteRole(command.Command):
self.log.debug('take_action(%s)', parsed_args)
identity_client = self.app.client_manager.identity
- role = utils.find_resource(
- identity_client.roles,
- parsed_args.role,
- )
-
- identity_client.roles.delete(role.id)
+ for role in parsed_args.roles:
+ role_obj = utils.find_resource(
+ identity_client.roles,
+ role,
+ )
+ identity_client.roles.delete(role_obj.id)
return
diff --git a/openstackclient/identity/v2_0/user.py b/openstackclient/identity/v2_0/user.py
index 7f1ea6da..b5bbce3b 100644
--- a/openstackclient/identity/v2_0/user.py
+++ b/openstackclient/identity/v2_0/user.py
@@ -128,16 +128,17 @@ class CreateUser(show.ShowOne):
class DeleteUser(command.Command):
- """Delete user"""
+ """Delete user(s)"""
log = logging.getLogger(__name__ + '.DeleteUser')
def get_parser(self, prog_name):
parser = super(DeleteUser, self).get_parser(prog_name)
parser.add_argument(
- 'user',
+ 'users',
metavar='<user>',
- help=_('User to delete (name or ID)'),
+ nargs="+",
+ help=_('User(s) to delete (name or ID)'),
)
return parser
@@ -145,12 +146,12 @@ class DeleteUser(command.Command):
self.log.debug('take_action(%s)', parsed_args)
identity_client = self.app.client_manager.identity
- user = utils.find_resource(
- identity_client.users,
- parsed_args.user,
- )
-
- identity_client.users.delete(user.id)
+ for user in parsed_args.users:
+ user_obj = utils.find_resource(
+ identity_client.users,
+ user,
+ )
+ identity_client.users.delete(user_obj.id)
return
diff --git a/openstackclient/identity/v3/domain.py b/openstackclient/identity/v3/domain.py
index 9e50fe54..189f0970 100644
--- a/openstackclient/identity/v3/domain.py
+++ b/openstackclient/identity/v3/domain.py
@@ -29,7 +29,7 @@ from openstackclient.i18n import _ # noqa
class CreateDomain(show.ShowOne):
- """Create domain command"""
+ """Create new domain"""
log = logging.getLogger(__name__ + '.CreateDomain')
@@ -42,21 +42,20 @@ class CreateDomain(show.ShowOne):
)
parser.add_argument(
'--description',
- metavar='<domain-description>',
+ metavar='<description>',
help='New domain description',
)
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:
@@ -87,7 +90,7 @@ class CreateDomain(show.ShowOne):
class DeleteDomain(command.Command):
- """Delete domain command"""
+ """Delete domain"""
log = logging.getLogger(__name__ + '.DeleteDomain')
@@ -96,7 +99,7 @@ class DeleteDomain(command.Command):
parser.add_argument(
'domain',
metavar='<domain>',
- help='Name or ID of domain to delete',
+ help='Domain to delete (name or ID)',
)
return parser
@@ -110,7 +113,7 @@ class DeleteDomain(command.Command):
class ListDomain(lister.Lister):
- """List domain command"""
+ """List domains"""
log = logging.getLogger(__name__ + '.ListDomain')
@@ -126,7 +129,7 @@ class ListDomain(lister.Lister):
class SetDomain(command.Command):
- """Set domain command"""
+ """Set domain properties"""
log = logging.getLogger(__name__ + '.SetDomain')
@@ -135,28 +138,26 @@ class SetDomain(command.Command):
parser.add_argument(
'domain',
metavar='<domain>',
- help='Name or ID of domain to change',
+ help='Domain to modify (name or ID)',
)
parser.add_argument(
'--name',
- metavar='<new-domain-name>',
+ metavar='<name>',
help='New domain name',
)
parser.add_argument(
'--description',
- metavar='<domain-description>',
+ metavar='<description>',
help='New domain description',
)
enable_group = parser.add_mutually_exclusive_group()
enable_group.add_argument(
'--enable',
- dest='enabled',
action='store_true',
- help='Enable domain (default)',
+ 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:
@@ -185,7 +187,7 @@ class SetDomain(command.Command):
class ShowDomain(show.ShowOne):
- """Show domain command"""
+ """Show domain details"""
log = logging.getLogger(__name__ + '.ShowDomain')
@@ -194,7 +196,7 @@ class ShowDomain(show.ShowOne):
parser.add_argument(
'domain',
metavar='<domain>',
- help='Name or ID of domain to display',
+ help='Domain to display (name or ID)',
)
return parser
diff --git a/openstackclient/identity/v3/group.py b/openstackclient/identity/v3/group.py
index b617cd76..fbd8dd72 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 name or ID that user will be added to',
+ help='Group that user will be added to (name or ID)',
)
parser.add_argument(
'user',
metavar='<user>',
- help='User name or ID to add to group',
+ help='User to add to group (name or ID)',
)
return parser
@@ -68,7 +68,7 @@ class AddUserToGroup(command.Command):
class CheckUserInGroup(command.Command):
- """Checks that user is in a specific group"""
+ """Check user in group"""
log = logging.getLogger(__name__ + '.CheckUserInGroup')
@@ -77,12 +77,12 @@ class CheckUserInGroup(command.Command):
parser.add_argument(
'group',
metavar='<group>',
- help='Group name or ID that user will be added to',
+ help='Group to check if user belongs to (name or ID)',
)
parser.add_argument(
'user',
metavar='<user>',
- help='User name or ID to add to group',
+ help='User to check (name or ID)',
)
return parser
@@ -106,7 +106,7 @@ class CheckUserInGroup(command.Command):
class CreateGroup(show.ShowOne):
- """Create group command"""
+ """Create new group"""
log = logging.getLogger(__name__ + '.CreateGroup')
@@ -118,11 +118,11 @@ class CreateGroup(show.ShowOne):
help='New group name')
parser.add_argument(
'--description',
- metavar='<group-description>',
+ metavar='<description>',
help='New group description')
parser.add_argument(
'--domain',
- metavar='<group-domain>',
+ metavar='<domain>',
help='References the domain ID or name which owns the group')
parser.add_argument(
'--or-show',
@@ -159,16 +159,17 @@ class CreateGroup(show.ShowOne):
class DeleteGroup(command.Command):
- """Delete group command"""
+ """Delete group(s)"""
log = logging.getLogger(__name__ + '.DeleteGroup')
def get_parser(self, prog_name):
parser = super(DeleteGroup, self).get_parser(prog_name)
parser.add_argument(
- 'group',
+ 'groups',
metavar='<group>',
- help='Name or ID of group to delete')
+ nargs="+",
+ help='Group(s) to delete (name or ID)')
parser.add_argument(
'--domain',
metavar='<domain>',
@@ -180,16 +181,18 @@ class DeleteGroup(command.Command):
self.log.debug('take_action(%s)', parsed_args)
identity_client = self.app.client_manager.identity
+ domain = None
if parsed_args.domain:
domain = common.find_domain(identity_client, parsed_args.domain)
- group = utils.find_resource(identity_client.groups,
- parsed_args.group,
- domain_id=domain.id)
- else:
- group = utils.find_resource(identity_client.groups,
- parsed_args.group)
-
- identity_client.groups.delete(group.id)
+ for group in parsed_args.groups:
+ if domain is not None:
+ group_obj = utils.find_resource(identity_client.groups,
+ group,
+ domain_id=domain.id)
+ else:
+ group_obj = utils.find_resource(identity_client.groups,
+ group)
+ identity_client.groups.delete(group_obj.id)
return
@@ -265,12 +268,12 @@ class RemoveUserFromGroup(command.Command):
parser.add_argument(
'group',
metavar='<group>',
- help='Group name or ID that user will be removed from',
+ help='Group that user will be removed from (name or ID)',
)
parser.add_argument(
'user',
metavar='<user>',
- help='User name or ID to remove from group',
+ help='User to remove from group (name or ID)',
)
return parser
@@ -294,7 +297,7 @@ class RemoveUserFromGroup(command.Command):
class SetGroup(command.Command):
- """Set group command"""
+ """Set group properties"""
log = logging.getLogger(__name__ + '.SetGroup')
@@ -303,18 +306,18 @@ class SetGroup(command.Command):
parser.add_argument(
'group',
metavar='<group>',
- help='Name or ID of group to change')
+ help='Group to modify (name or ID)')
parser.add_argument(
'--name',
- metavar='<new-group-name>',
+ metavar='<name>',
help='New group name')
parser.add_argument(
'--domain',
- metavar='<group-domain>',
- help='New domain name or ID that will now own the group')
+ metavar='<domain>',
+ help='New domain that will now own the group (name or ID)')
parser.add_argument(
'--description',
- metavar='<group-description>',
+ metavar='<description>',
help='New group description')
return parser
@@ -338,7 +341,7 @@ class SetGroup(command.Command):
class ShowGroup(show.ShowOne):
- """Show group command"""
+ """Show group details"""
log = logging.getLogger(__name__ + '.ShowGroup')
@@ -347,7 +350,7 @@ class ShowGroup(show.ShowOne):
parser.add_argument(
'group',
metavar='<group>',
- help='Name or ID of group to display',
+ help='Group to display (name or ID)',
)
parser.add_argument(
'--domain',
diff --git a/openstackclient/identity/v3/project.py b/openstackclient/identity/v3/project.py
index 42412e41..28eb4277 100644
--- a/openstackclient/identity/v3/project.py
+++ b/openstackclient/identity/v3/project.py
@@ -117,16 +117,17 @@ class CreateProject(show.ShowOne):
class DeleteProject(command.Command):
- """Delete an existing project"""
+ """Delete project(s)"""
log = logging.getLogger(__name__ + '.DeleteProject')
def get_parser(self, prog_name):
parser = super(DeleteProject, self).get_parser(prog_name)
parser.add_argument(
- 'project',
+ 'projects',
metavar='<project>',
- help='Project to delete (name or ID)',
+ nargs="+",
+ help='Project(s) to delete (name or ID)',
)
parser.add_argument(
'--domain',
@@ -139,16 +140,18 @@ class DeleteProject(command.Command):
self.log.debug('take_action(%s)', parsed_args)
identity_client = self.app.client_manager.identity
+ domain = None
if parsed_args.domain:
domain = common.find_domain(identity_client, parsed_args.domain)
- project = utils.find_resource(identity_client.projects,
- parsed_args.project,
- domain_id=domain.id)
- else:
- project = utils.find_resource(identity_client.projects,
- parsed_args.project)
-
- identity_client.projects.delete(project.id)
+ for project in parsed_args.projects:
+ if domain is not None:
+ project_obj = utils.find_resource(identity_client.projects,
+ project,
+ domain_id=domain.id)
+ else:
+ project_obj = utils.find_resource(identity_client.projects,
+ project)
+ identity_client.projects.delete(project_obj.id)
return
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/role.py b/openstackclient/identity/v3/role.py
index f86854bc..d680278e 100644
--- a/openstackclient/identity/v3/role.py
+++ b/openstackclient/identity/v3/role.py
@@ -177,16 +177,17 @@ class CreateRole(show.ShowOne):
class DeleteRole(command.Command):
- """Delete an existing role"""
+ """Delete role(s)"""
log = logging.getLogger(__name__ + '.DeleteRole')
def get_parser(self, prog_name):
parser = super(DeleteRole, self).get_parser(prog_name)
parser.add_argument(
- 'role',
+ 'roles',
metavar='<role>',
- help='Role to delete (name or ID)',
+ nargs="+",
+ help='Role(s) to delete (name or ID)',
)
return parser
@@ -194,12 +195,12 @@ class DeleteRole(command.Command):
self.log.debug('take_action(%s)', parsed_args)
identity_client = self.app.client_manager.identity
- role = utils.find_resource(
- identity_client.roles,
- parsed_args.role,
- )
-
- identity_client.roles.delete(role.id)
+ for role in parsed_args.roles:
+ role_obj = utils.find_resource(
+ identity_client.roles,
+ role,
+ )
+ identity_client.roles.delete(role_obj.id)
return
diff --git a/openstackclient/identity/v3/role_assignment.py b/openstackclient/identity/v3/role_assignment.py
index 5cc97e8d..f053b608 100644
--- a/openstackclient/identity/v3/role_assignment.py
+++ b/openstackclient/identity/v3/role_assignment.py
@@ -21,7 +21,7 @@ from openstackclient.common import utils
class ListRoleAssignment(lister.Lister):
- """Lists role assignments according to the given filters"""
+ """List role assignments"""
log = logging.getLogger(__name__ + '.ListRoleAssignment')
@@ -36,29 +36,29 @@ class ListRoleAssignment(lister.Lister):
parser.add_argument(
'--role',
metavar='<role>',
- help='Name or ID of role to filter',
+ help='Role to filter (name or ID)',
)
user_or_group = parser.add_mutually_exclusive_group()
user_or_group.add_argument(
'--user',
metavar='<user>',
- help='Name or ID of user to filter',
+ help='User to filter (name or ID)',
)
user_or_group.add_argument(
'--group',
metavar='<group>',
- help='Name or ID of group to filter',
+ help='Group to filter (name or ID)',
)
domain_or_project = parser.add_mutually_exclusive_group()
domain_or_project.add_argument(
'--domain',
metavar='<domain>',
- help='Name or ID of domain to filter',
+ help='Domain to filter (name or ID)',
)
domain_or_project.add_argument(
'--project',
metavar='<project>',
- help='Name or ID of project to filter',
+ help='Project to filter (name or ID)',
)
return parser
diff --git a/openstackclient/identity/v3/service.py b/openstackclient/identity/v3/service.py
index 4f622269..f4c5d426 100644
--- a/openstackclient/identity/v3/service.py
+++ b/openstackclient/identity/v3/service.py
@@ -43,6 +43,11 @@ class CreateService(show.ShowOne):
metavar='<service-name>',
help='New service name',
)
+ parser.add_argument(
+ '--description',
+ metavar='<description>',
+ help='New service description',
+ )
enable_group = parser.add_mutually_exclusive_group()
enable_group.add_argument(
'--enable',
@@ -67,6 +72,7 @@ class CreateService(show.ShowOne):
service = identity_client.services.create(
name=parsed_args.name,
type=parsed_args.type,
+ description=parsed_args.description,
enabled=enabled,
)
@@ -137,6 +143,11 @@ class SetService(command.Command):
metavar='<service-name>',
help='New service name',
)
+ parser.add_argument(
+ '--description',
+ metavar='<description>',
+ help='New service description',
+ )
enable_group = parser.add_mutually_exclusive_group()
enable_group.add_argument(
'--enable',
@@ -156,6 +167,7 @@ class SetService(command.Command):
if (not parsed_args.name
and not parsed_args.type
+ and not parsed_args.description
and not parsed_args.enable
and not parsed_args.disable):
return
@@ -167,6 +179,8 @@ class SetService(command.Command):
kwargs['type'] = parsed_args.type
if parsed_args.name:
kwargs['name'] = parsed_args.name
+ if parsed_args.description:
+ kwargs['description'] = parsed_args.description
if parsed_args.enable:
kwargs['enabled'] = True
if parsed_args.disable:
diff --git a/openstackclient/identity/v3/user.py b/openstackclient/identity/v3/user.py
index 037af70e..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
@@ -137,16 +138,17 @@ class CreateUser(show.ShowOne):
class DeleteUser(command.Command):
- """Delete user"""
+ """Delete user(s)"""
log = logging.getLogger(__name__ + '.DeleteUser')
def get_parser(self, prog_name):
parser = super(DeleteUser, self).get_parser(prog_name)
parser.add_argument(
- 'user',
+ 'users',
metavar='<user>',
- help='User to delete (name or ID)',
+ nargs="+",
+ help='User(s) to delete (name or ID)',
)
parser.add_argument(
'--domain',
@@ -159,16 +161,18 @@ class DeleteUser(command.Command):
self.log.debug('take_action(%s)', parsed_args)
identity_client = self.app.client_manager.identity
+ domain = None
if parsed_args.domain:
domain = common.find_domain(identity_client, parsed_args.domain)
- user = utils.find_resource(identity_client.users,
- parsed_args.user,
- domain_id=domain.id)
- else:
- user = utils.find_resource(identity_client.users,
- parsed_args.user)
-
- identity_client.users.delete(user.id)
+ for user in parsed_args.users:
+ if domain is not None:
+ user_obj = utils.find_resource(identity_client.users,
+ user,
+ domain_id=domain.id)
+ else:
+ user_obj = utils.find_resource(identity_client.users,
+ user)
+ identity_client.users.delete(user_obj.id)
return
@@ -217,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={},