summaryrefslogtreecommitdiff
path: root/openstackclient/identity
diff options
context:
space:
mode:
authorHuanxuan Ao <huanxuan.ao@easystack.cn>2017-03-17 13:28:49 +0800
committerHuanxuan Ao <huanxuan.ao@easystack.cn>2017-03-21 10:39:42 +0800
commitef5a7caf85bd6169701371da67029457abdaf47f (patch)
tree7dcb3234daf13a0f9bb8f45c7e3e82f3408c17d9 /openstackclient/identity
parent49e866174f2e24ce996cdb588c38b5b08daed5a0 (diff)
downloadpython-openstackclient-ef5a7caf85bd6169701371da67029457abdaf47f.tar.gz
Support to add/remove multi users for "group add/remove user"
Similar delete commands in OSC, we can also support add/remove multi users for one specified group, this review implement it. Change-Id: I8ccf99d4ee83a18778fa3ff5c0a42bc7c6ff21fb Implements: bp support-multi-add-remove
Diffstat (limited to 'openstackclient/identity')
-rw-r--r--openstackclient/identity/v3/group.py68
1 files changed, 48 insertions, 20 deletions
diff --git a/openstackclient/identity/v3/group.py b/openstackclient/identity/v3/group.py
index b5f5d8ad..39c8547c 100644
--- a/openstackclient/identity/v3/group.py
+++ b/openstackclient/identity/v3/group.py
@@ -44,7 +44,9 @@ class AddUserToGroup(command.Command):
parser.add_argument(
'user',
metavar='<user>',
- help=_('User to add to <group> (name or ID)'),
+ nargs='+',
+ help=_('User(s) to add to <group> (name or ID) '
+ '(repeat option to add multiple users)'),
)
common.add_group_domain_option_to_parser(parser)
common.add_user_domain_option_to_parser(parser)
@@ -53,20 +55,32 @@ class AddUserToGroup(command.Command):
def take_action(self, parsed_args):
identity_client = self.app.client_manager.identity
- user_id = common.find_user(identity_client,
- parsed_args.user,
- parsed_args.user_domain).id
group_id = common.find_group(identity_client,
parsed_args.group,
parsed_args.group_domain).id
- try:
- identity_client.users.add_to_group(user_id, group_id)
- except Exception as e:
- msg = _("%(user)s not added to group %(group)s: %(e)s") % {
- 'user': parsed_args.user,
+ result = 0
+ for i in parsed_args.user:
+ try:
+ user_id = common.find_user(identity_client,
+ i,
+ parsed_args.user_domain).id
+ identity_client.users.add_to_group(user_id, group_id)
+ except Exception as e:
+ result += 1
+ msg = _("%(user)s not added to group %(group)s: %(e)s") % {
+ 'user': i,
+ 'group': parsed_args.group,
+ 'e': e,
+ }
+ LOG.error(msg)
+ if result > 0:
+ total = len(parsed_args.user)
+ msg = (_("%(result)s of %(total)s users not added to group "
+ "%(group)s.")) % {
+ 'result': result,
+ 'total': total,
'group': parsed_args.group,
- 'e': e,
}
raise exceptions.CommandError(msg)
@@ -286,7 +300,9 @@ class RemoveUserFromGroup(command.Command):
parser.add_argument(
'user',
metavar='<user>',
- help=_('User to remove from <group> (name or ID)'),
+ nargs='+',
+ help=_('User(s) to remove from <group> (name or ID) '
+ '(repeat option to remove multiple users)'),
)
common.add_group_domain_option_to_parser(parser)
common.add_user_domain_option_to_parser(parser)
@@ -295,20 +311,32 @@ class RemoveUserFromGroup(command.Command):
def take_action(self, parsed_args):
identity_client = self.app.client_manager.identity
- user_id = common.find_user(identity_client,
- parsed_args.user,
- parsed_args.user_domain).id
group_id = common.find_group(identity_client,
parsed_args.group,
parsed_args.group_domain).id
- try:
- identity_client.users.remove_from_group(user_id, group_id)
- except Exception as e:
- msg = _("%(user)s not removed from group %(group)s: %(e)s") % {
- 'user': parsed_args.user,
+ result = 0
+ for i in parsed_args.user:
+ try:
+ user_id = common.find_user(identity_client,
+ i,
+ parsed_args.user_domain).id
+ identity_client.users.remove_from_group(user_id, group_id)
+ except Exception as e:
+ result += 1
+ msg = _("%(user)s not removed from group %(group)s: %(e)s") % {
+ 'user': i,
+ 'group': parsed_args.group,
+ 'e': e,
+ }
+ LOG.error(msg)
+ if result > 0:
+ total = len(parsed_args.user)
+ msg = (_("%(result)s of %(total)s users not removed from group "
+ "%(group)s.")) % {
+ 'result': result,
+ 'total': total,
'group': parsed_args.group,
- 'e': e,
}
raise exceptions.CommandError(msg)