Skip to content

Commit 9dbf46b

Browse files
author
Steve Martinelli
committed
Add methods for user and group interactions
* Add user to group * Contains user in group * Remove user from group Change-Id: If5219fa9d4761d7b97950c39556b3e1b8aab6517
1 parent 674dd48 commit 9dbf46b

2 files changed

Lines changed: 120 additions & 0 deletions

File tree

‎openstackclient/identity/v3/group.py‎

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,84 @@
2525
from openstackclient.common import utils
2626

2727

28+
class AddUserToGroup(command.Command):
29+
"""Add user to group"""
30+
31+
api = 'identity'
32+
log = logging.getLogger(__name__ + '.AddUserToGroup')
33+
34+
def get_parser(self, prog_name):
35+
parser = super(AddUserToGroup, self).get_parser(prog_name)
36+
parser.add_argument(
37+
'group',
38+
metavar='<group>',
39+
help='Group name or ID that user will be added to',
40+
)
41+
parser.add_argument(
42+
'user',
43+
metavar='<user>',
44+
help='User name or ID to add to group',
45+
)
46+
return parser
47+
48+
def take_action(self, parsed_args):
49+
self.log.debug('take_action(%s)' % parsed_args)
50+
identity_client = self.app.client_manager.identity
51+
52+
user_id = utils.find_resource(identity_client.users,
53+
parsed_args.user).id
54+
group_id = utils.find_resource(identity_client.groups,
55+
parsed_args.group).id
56+
57+
try:
58+
identity_client.users.add_to_group(user_id, group_id)
59+
except Exception:
60+
sys.stderr.write("%s not added to group %s\n" %
61+
(parsed_args.user, parsed_args.group))
62+
else:
63+
sys.stdout.write("%s added to group %s\n" %
64+
(parsed_args.user, parsed_args.group))
65+
66+
67+
class CheckUserInGroup(command.Command):
68+
"""Checks that user is in a specific group"""
69+
70+
api = 'identity'
71+
log = logging.getLogger(__name__ + '.CheckUserInGroup')
72+
73+
def get_parser(self, prog_name):
74+
parser = super(CheckUserInGroup, self).get_parser(prog_name)
75+
parser.add_argument(
76+
'group',
77+
metavar='<group>',
78+
help='Group name or ID that user will be added to',
79+
)
80+
parser.add_argument(
81+
'user',
82+
metavar='<user>',
83+
help='User name or ID to add to group',
84+
)
85+
return parser
86+
87+
def take_action(self, parsed_args):
88+
self.log.debug('take_action(%s)' % parsed_args)
89+
identity_client = self.app.client_manager.identity
90+
91+
user_id = utils.find_resource(identity_client.users,
92+
parsed_args.user).id
93+
group_id = utils.find_resource(identity_client.groups,
94+
parsed_args.group).id
95+
96+
try:
97+
identity_client.users.check_in_group(user_id, group_id)
98+
except Exception:
99+
sys.stderr.write("%s not in group %s\n" %
100+
(parsed_args.user, parsed_args.group))
101+
else:
102+
sys.stdout.write("%s in group %s\n" %
103+
(parsed_args.user, parsed_args.group))
104+
105+
28106
class CreateGroup(show.ShowOne):
29107
"""Create group command"""
30108

@@ -117,6 +195,45 @@ def take_action(self, parsed_args):
117195
) for s in data))
118196

119197

198+
class RemoveUserFromGroup(command.Command):
199+
"""Remove user to group"""
200+
201+
api = 'identity'
202+
log = logging.getLogger(__name__ + '.RemoveUserFromGroup')
203+
204+
def get_parser(self, prog_name):
205+
parser = super(RemoveUserFromGroup, self).get_parser(prog_name)
206+
parser.add_argument(
207+
'group',
208+
metavar='<group>',
209+
help='Group name or ID that user will be removed from',
210+
)
211+
parser.add_argument(
212+
'user',
213+
metavar='<user>',
214+
help='User name or ID to remove from group',
215+
)
216+
return parser
217+
218+
def take_action(self, parsed_args):
219+
self.log.debug('take_action(%s)' % parsed_args)
220+
identity_client = self.app.client_manager.identity
221+
222+
user_id = utils.find_resource(identity_client.users,
223+
parsed_args.user).id
224+
group_id = utils.find_resource(identity_client.groups,
225+
parsed_args.group).id
226+
227+
try:
228+
identity_client.users.remove_from_group(user_id, group_id)
229+
except Exception:
230+
sys.stderr.write("%s not removed from group %s\n" %
231+
(parsed_args.user, parsed_args.group))
232+
else:
233+
sys.stdout.write("%s removed from group %s\n" %
234+
(parsed_args.user, parsed_args.group))
235+
236+
120237
class SetGroup(command.Command):
121238
"""Set group command"""
122239

‎setup.cfg‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,12 @@ openstack.identity.v3 =
9090
endpoint_show = openstackclient.identity.v3.endpoint:ShowEndpoint
9191
endpoint_list = openstackclient.identity.v3.endpoint:ListEndpoint
9292

93+
group_add_user = openstackclient.identity.v3.group:AddUserToGroup
94+
group_contains_user = openstackclient.identity.v3.group:CheckUserInGroup
9395
group_create = openstackclient.identity.v3.group:CreateGroup
9496
group_delete = openstackclient.identity.v3.group:DeleteGroup
9597
group_list = openstackclient.identity.v3.group:ListGroup
98+
group_remove_user = openstackclient.identity.v3.group:RemoveUserFromGroup
9699
group_set = openstackclient.identity.v3.group:SetGroup
97100
group_show = openstackclient.identity.v3.group:ShowGroup
98101

0 commit comments

Comments
 (0)