summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwanghong <w.wanghong@huawei.com>2014-12-10 14:09:01 +0800
committerwanghong <w.wanghong@huawei.com>2014-12-23 09:39:29 +0800
commitd8f1cbd98461d4c2989384d29c7e2a99223468a9 (patch)
tree331fcaca643185c088921f8a510544465f1fda8b
parent3541b0a695af12e31ecae4b4bedbe4235b5c13b4 (diff)
downloadpython-openstackclient-d8f1cbd98461d4c2989384d29c7e2a99223468a9.tar.gz
add multi-delete support for identity
This is part2. Add support for these objects: identity.project(v2.0) identity.role(v2.0) identity.user(v2.0) identity.project(v3) identity.role(v3) identity.user(v3) identity.group(v3) Closes-Bug: #1400597 Change-Id: I270434d657cf4ddc23c3aba2c704d6ef184b0dbc
-rw-r--r--doc/source/command-objects/project.rst10
-rw-r--r--doc/source/command-objects/role.rst10
-rw-r--r--doc/source/command-objects/user.rst10
-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/group.py25
-rw-r--r--openstackclient/identity/v3/project.py25
-rw-r--r--openstackclient/identity/v3/role.py19
-rw-r--r--openstackclient/identity/v3/user.py25
-rw-r--r--openstackclient/tests/identity/v2_0/test_project.py2
-rw-r--r--openstackclient/tests/identity/v2_0/test_role.py2
-rw-r--r--openstackclient/tests/identity/v2_0/test_user.py2
-rw-r--r--openstackclient/tests/identity/v3/test_project.py2
-rw-r--r--openstackclient/tests/identity/v3/test_role.py2
-rw-r--r--openstackclient/tests/identity/v3/test_user.py2
16 files changed, 103 insertions, 90 deletions
diff --git a/doc/source/command-objects/project.rst b/doc/source/command-objects/project.rst
index 305e6114..56f2196f 100644
--- a/doc/source/command-objects/project.rst
+++ b/doc/source/command-objects/project.rst
@@ -47,16 +47,16 @@ Create new project
New project name
-project delete
---------------
+project(s) delete
+-----------------
-Delete an existing project
+Delete project(s)
-.. program:: project delete
+.. program:: project(s) delete
.. code:: bash
os project delete
- <project>
+ <project> [<project> ...]
.. option:: --domain <domain>
diff --git a/doc/source/command-objects/role.rst b/doc/source/command-objects/role.rst
index 1cc80d7d..4c37fc38 100644
--- a/doc/source/command-objects/role.rst
+++ b/doc/source/command-objects/role.rst
@@ -56,16 +56,16 @@ Create new role
New role name
-role delete
------------
+role(s) delete
+--------------
-Delete an existing role
+Delete role(s)
-.. program:: role delete
+.. program:: role(s) delete
.. code:: bash
os role delete
- <role>
+ <role> [<role> ...]
.. option:: <role>
diff --git a/doc/source/command-objects/user.rst b/doc/source/command-objects/user.rst
index 24a2725b..281e8e0d 100644
--- a/doc/source/command-objects/user.rst
+++ b/doc/source/command-objects/user.rst
@@ -69,16 +69,16 @@ Create new user
New user name
-user delete
------------
+user(s) delete
+--------------
-Delete user
+Delete user(s)
-.. program:: user delete
+.. program:: user(s) delete
.. code:: bash
os user delete
- <user>
+ <user> [<user> ...]
.. option:: --domain <domain>
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/group.py b/openstackclient/identity/v3/group.py
index b617cd76..327a64d5 100644
--- a/openstackclient/identity/v3/group.py
+++ b/openstackclient/identity/v3/group.py
@@ -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
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/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/user.py b/openstackclient/identity/v3/user.py
index 037af70e..dc5468ff 100644
--- a/openstackclient/identity/v3/user.py
+++ b/openstackclient/identity/v3/user.py
@@ -137,16 +137,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 +160,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
diff --git a/openstackclient/tests/identity/v2_0/test_project.py b/openstackclient/tests/identity/v2_0/test_project.py
index bb69b99d..0c5ef77f 100644
--- a/openstackclient/tests/identity/v2_0/test_project.py
+++ b/openstackclient/tests/identity/v2_0/test_project.py
@@ -326,7 +326,7 @@ class TestProjectDelete(TestProject):
identity_fakes.project_id,
]
verifylist = [
- ('project', identity_fakes.project_id),
+ ('projects', [identity_fakes.project_id]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
diff --git a/openstackclient/tests/identity/v2_0/test_role.py b/openstackclient/tests/identity/v2_0/test_role.py
index ee1f19cd..2e3a2863 100644
--- a/openstackclient/tests/identity/v2_0/test_role.py
+++ b/openstackclient/tests/identity/v2_0/test_role.py
@@ -234,7 +234,7 @@ class TestRoleDelete(TestRole):
identity_fakes.role_name,
]
verifylist = [
- ('role', identity_fakes.role_name),
+ ('roles', [identity_fakes.role_name]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
diff --git a/openstackclient/tests/identity/v2_0/test_user.py b/openstackclient/tests/identity/v2_0/test_user.py
index 598e1d2b..ccdf240e 100644
--- a/openstackclient/tests/identity/v2_0/test_user.py
+++ b/openstackclient/tests/identity/v2_0/test_user.py
@@ -443,7 +443,7 @@ class TestUserDelete(TestUser):
identity_fakes.user_id,
]
verifylist = [
- ('user', identity_fakes.user_id),
+ ('users', [identity_fakes.user_id]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
diff --git a/openstackclient/tests/identity/v3/test_project.py b/openstackclient/tests/identity/v3/test_project.py
index 1060a277..d16f9732 100644
--- a/openstackclient/tests/identity/v3/test_project.py
+++ b/openstackclient/tests/identity/v3/test_project.py
@@ -353,7 +353,7 @@ class TestProjectDelete(TestProject):
identity_fakes.project_id,
]
verifylist = [
- ('project', identity_fakes.project_id),
+ ('projects', [identity_fakes.project_id]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
diff --git a/openstackclient/tests/identity/v3/test_role.py b/openstackclient/tests/identity/v3/test_role.py
index 3d2a402b..1a9e6aa7 100644
--- a/openstackclient/tests/identity/v3/test_role.py
+++ b/openstackclient/tests/identity/v3/test_role.py
@@ -271,7 +271,7 @@ class TestRoleDelete(TestRole):
identity_fakes.role_name,
]
verifylist = [
- ('role', identity_fakes.role_name),
+ ('roles', [identity_fakes.role_name]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
diff --git a/openstackclient/tests/identity/v3/test_user.py b/openstackclient/tests/identity/v3/test_user.py
index bb59ebe5..9740ed82 100644
--- a/openstackclient/tests/identity/v3/test_user.py
+++ b/openstackclient/tests/identity/v3/test_user.py
@@ -461,7 +461,7 @@ class TestUserDelete(TestUser):
identity_fakes.user_id,
]
verifylist = [
- ('user', identity_fakes.user_id),
+ ('users', [identity_fakes.user_id]),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)