diff options
| author | Huanxuan Ao <huanxuan.ao@easystack.cn> | 2017-03-17 13:28:49 +0800 |
|---|---|---|
| committer | Huanxuan Ao <huanxuan.ao@easystack.cn> | 2017-03-21 10:39:42 +0800 |
| commit | ef5a7caf85bd6169701371da67029457abdaf47f (patch) | |
| tree | 7dcb3234daf13a0f9bb8f45c7e3e82f3408c17d9 /openstackclient/identity | |
| parent | 49e866174f2e24ce996cdb588c38b5b08daed5a0 (diff) | |
| download | python-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.py | 68 |
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) |
