From 9dbf46b8370becd1100837ee1868c7532e632b81 Mon Sep 17 00:00:00 2001 From: Steve Martinelli <stevemar@ca.ibm.com> Date: Mon, 10 Jun 2013 09:19:54 -0500 Subject: [PATCH] Add methods for user and group interactions * Add user to group * Contains user in group * Remove user from group Change-Id: If5219fa9d4761d7b97950c39556b3e1b8aab6517 --- openstackclient/identity/v3/group.py | 117 +++++++++++++++++++++++++++ setup.cfg | 3 + 2 files changed, 120 insertions(+) diff --git a/openstackclient/identity/v3/group.py b/openstackclient/identity/v3/group.py index 0562b76630..de4fe2d276 100644 --- a/openstackclient/identity/v3/group.py +++ b/openstackclient/identity/v3/group.py @@ -25,6 +25,84 @@ from cliff import show from openstackclient.common import utils +class AddUserToGroup(command.Command): + """Add user to group""" + + api = 'identity' + log = logging.getLogger(__name__ + '.AddUserToGroup') + + def get_parser(self, prog_name): + parser = super(AddUserToGroup, self).get_parser(prog_name) + parser.add_argument( + 'group', + metavar='<group>', + help='Group name or ID that user will be added to', + ) + parser.add_argument( + 'user', + metavar='<user>', + help='User name or ID to add to group', + ) + return parser + + def take_action(self, parsed_args): + self.log.debug('take_action(%s)' % parsed_args) + identity_client = self.app.client_manager.identity + + user_id = utils.find_resource(identity_client.users, + parsed_args.user).id + group_id = utils.find_resource(identity_client.groups, + parsed_args.group).id + + try: + identity_client.users.add_to_group(user_id, group_id) + except Exception: + sys.stderr.write("%s not added to group %s\n" % + (parsed_args.user, parsed_args.group)) + else: + sys.stdout.write("%s added to group %s\n" % + (parsed_args.user, parsed_args.group)) + + +class CheckUserInGroup(command.Command): + """Checks that user is in a specific group""" + + api = 'identity' + log = logging.getLogger(__name__ + '.CheckUserInGroup') + + def get_parser(self, prog_name): + parser = super(CheckUserInGroup, self).get_parser(prog_name) + parser.add_argument( + 'group', + metavar='<group>', + help='Group name or ID that user will be added to', + ) + parser.add_argument( + 'user', + metavar='<user>', + help='User name or ID to add to group', + ) + return parser + + def take_action(self, parsed_args): + self.log.debug('take_action(%s)' % parsed_args) + identity_client = self.app.client_manager.identity + + user_id = utils.find_resource(identity_client.users, + parsed_args.user).id + group_id = utils.find_resource(identity_client.groups, + parsed_args.group).id + + try: + identity_client.users.check_in_group(user_id, group_id) + except Exception: + sys.stderr.write("%s not in group %s\n" % + (parsed_args.user, parsed_args.group)) + else: + sys.stdout.write("%s in group %s\n" % + (parsed_args.user, parsed_args.group)) + + class CreateGroup(show.ShowOne): """Create group command""" @@ -117,6 +195,45 @@ class ListGroup(lister.Lister): ) for s in data)) +class RemoveUserFromGroup(command.Command): + """Remove user to group""" + + api = 'identity' + log = logging.getLogger(__name__ + '.RemoveUserFromGroup') + + def get_parser(self, prog_name): + parser = super(RemoveUserFromGroup, self).get_parser(prog_name) + parser.add_argument( + 'group', + metavar='<group>', + help='Group name or ID that user will be removed from', + ) + parser.add_argument( + 'user', + metavar='<user>', + help='User name or ID to remove from group', + ) + return parser + + def take_action(self, parsed_args): + self.log.debug('take_action(%s)' % parsed_args) + identity_client = self.app.client_manager.identity + + user_id = utils.find_resource(identity_client.users, + parsed_args.user).id + group_id = utils.find_resource(identity_client.groups, + parsed_args.group).id + + try: + identity_client.users.remove_from_group(user_id, group_id) + except Exception: + sys.stderr.write("%s not removed from group %s\n" % + (parsed_args.user, parsed_args.group)) + else: + sys.stdout.write("%s removed from group %s\n" % + (parsed_args.user, parsed_args.group)) + + class SetGroup(command.Command): """Set group command""" diff --git a/setup.cfg b/setup.cfg index 4b2142dd2c..a70306ea0c 100644 --- a/setup.cfg +++ b/setup.cfg @@ -90,9 +90,12 @@ openstack.identity.v3 = endpoint_show = openstackclient.identity.v3.endpoint:ShowEndpoint endpoint_list = openstackclient.identity.v3.endpoint:ListEndpoint + group_add_user = openstackclient.identity.v3.group:AddUserToGroup + group_contains_user = openstackclient.identity.v3.group:CheckUserInGroup group_create = openstackclient.identity.v3.group:CreateGroup group_delete = openstackclient.identity.v3.group:DeleteGroup group_list = openstackclient.identity.v3.group:ListGroup + group_remove_user = openstackclient.identity.v3.group:RemoveUserFromGroup group_set = openstackclient.identity.v3.group:SetGroup group_show = openstackclient.identity.v3.group:ShowGroup