2626
2727
2828class AddRole (command .Command ):
29- """Add role command """
29+ """Adds a role to a user or group on a domain or project """
3030
3131 api = 'identity'
3232 log = logging .getLogger (__name__ + '.AddRole' )
@@ -42,23 +42,24 @@ def get_parser(self, prog_name):
4242 user_or_group .add_argument (
4343 '--user' ,
4444 metavar = '<user>' ,
45- help = 'Name or ID of user to assign a role' ,
45+ help = 'Name or ID of user to add a role' ,
4646 )
4747 user_or_group .add_argument (
4848 '--group' ,
4949 metavar = '<group>' ,
50- help = 'Name or ID of group to assign a role' ,
50+ help = 'Name or ID of group to add a role' ,
5151 )
5252 domain_or_project = parser .add_mutually_exclusive_group ()
5353 domain_or_project .add_argument (
5454 '--domain' ,
5555 metavar = '<domain>' ,
56- help = 'Name or ID of domain where user or group resides' ,
56+ default = 'default' ,
57+ help = 'Name or ID of domain associated with user or group' ,
5758 )
5859 domain_or_project .add_argument (
5960 '--project' ,
6061 metavar = '<project>' ,
61- help = 'Name or ID of project where user or group resides ' ,
62+ help = 'Name or ID of project associated with user or group' ,
6263 )
6364 return parser
6465
@@ -68,42 +69,40 @@ def take_action(self, parsed_args):
6869
6970 if (not parsed_args .user and not parsed_args .domain
7071 and not parsed_args .group and not parsed_args .project ):
71- sys .stdout .write ("Role not updated , no arguments present \n " )
72+ sys .stderr .write ("Role not added , no arguments present\n " )
7273 return
7374
7475 role_id = utils .find_resource (identity_client .roles ,
7576 parsed_args .role ).id
7677
77- if ( parsed_args .user and parsed_args .domain ) :
78+ if parsed_args .user and parsed_args .domain :
7879 user = utils .find_resource (identity_client .users ,
7980 parsed_args .user )
8081 domain = utils .find_resource (identity_client .domains ,
8182 parsed_args .domain )
8283 identity_client .roles .grant (role_id , user = user , domain = domain )
83- return
84- elif (parsed_args .user and parsed_args .project ):
84+ elif parsed_args .user and parsed_args .project :
8585 user = utils .find_resource (identity_client .users ,
8686 parsed_args .user )
8787 project = utils .find_resource (identity_client .projects ,
8888 parsed_args .project )
8989 identity_client .roles .grant (role_id , user = user , project = project )
90- return
91- elif (parsed_args .group and parsed_args .project ):
90+ elif parsed_args .group and parsed_args .domain :
91+ group = utils .find_resource (identity_client .groups ,
92+ parsed_args .group )
93+ domain = utils .find_resource (identity_client .domains ,
94+ parsed_args .domain )
95+ identity_client .roles .grant (role_id , group = group , domain = domain )
96+ elif parsed_args .group and parsed_args .project :
9297 group = utils .find_resource (identity_client .group ,
9398 parsed_args .group )
9499 project = utils .find_resource (identity_client .projects ,
95100 parsed_args .project )
96101 identity_client .roles .grant (role_id , group = group , project = project )
97- return
98- elif (parsed_args .group and parsed_args .domain ):
99- group = utils .find_resource (identity_client .group ,
100- parsed_args .group )
101- domain = utils .find_resource (identity_client .domains ,
102- parsed_args .domain )
103- identity_client .roles .grant (role_id , group = group , domain = domain )
104- return
105102 else :
106- return
103+ sys .stderr .write ("Role not added, incorrect set of arguments \
104+ provided. See openstack --help for more details\n " )
105+ return
107106
108107
109108class CreateRole (show .ShowOne ):
@@ -115,15 +114,16 @@ class CreateRole(show.ShowOne):
115114 def get_parser (self , prog_name ):
116115 parser = super (CreateRole , self ).get_parser (prog_name )
117116 parser .add_argument (
118- 'role- name' ,
117+ 'name' ,
119118 metavar = '<role-name>' ,
120- help = 'New role name' )
119+ help = 'New role name' ,
120+ )
121121 return parser
122122
123123 def take_action (self , parsed_args ):
124124 self .log .debug ('take_action(%s)' % parsed_args )
125125 identity_client = self .app .client_manager .identity
126- role = identity_client .roles .create (parsed_args .role_name )
126+ role = identity_client .roles .create (parsed_args .name )
127127
128128 return zip (* sorted (role ._info .iteritems ()))
129129
@@ -139,7 +139,8 @@ def get_parser(self, prog_name):
139139 parser .add_argument (
140140 'role' ,
141141 metavar = '<role>' ,
142- help = 'Name or ID of role to delete' )
142+ help = 'Name or ID of role to delete' ,
143+ )
143144 return parser
144145
145146 def take_action (self , parsed_args ):
@@ -168,6 +169,85 @@ def take_action(self, parsed_args):
168169 ) for s in data ))
169170
170171
172+ class RemoveRole (command .Command ):
173+ """Remove role command"""
174+
175+ api = 'identity'
176+ log = logging .getLogger (__name__ + '.RemoveRole' )
177+
178+ def get_parser (self , prog_name ):
179+ parser = super (RemoveRole , self ).get_parser (prog_name )
180+ parser .add_argument (
181+ 'role' ,
182+ metavar = '<role>' ,
183+ help = 'Name or ID of role to remove' ,
184+ )
185+ user_or_group = parser .add_mutually_exclusive_group ()
186+ user_or_group .add_argument (
187+ '--user' ,
188+ metavar = '<user>' ,
189+ help = 'Name or ID of user to remove a role' ,
190+ )
191+ user_or_group .add_argument (
192+ '--group' ,
193+ metavar = '<group>' ,
194+ help = 'Name or ID of group to remove a role' ,
195+ )
196+ domain_or_project = parser .add_mutually_exclusive_group ()
197+ domain_or_project .add_argument (
198+ '--domain' ,
199+ metavar = '<domain>' ,
200+ help = 'Name or ID of domain associated with user or group' ,
201+ )
202+ domain_or_project .add_argument (
203+ '--project' ,
204+ metavar = '<project>' ,
205+ help = 'Name or ID of project associated with user or group' ,
206+ )
207+ return parser
208+
209+ def take_action (self , parsed_args ):
210+ self .log .debug ('take_action(%s)' % parsed_args )
211+ identity_client = self .app .client_manager .identity
212+
213+ if (not parsed_args .user and not parsed_args .domain
214+ and not parsed_args .group and not parsed_args .project ):
215+ sys .stdout .write ("Role not updated, no arguments present\n " )
216+ return
217+
218+ role_id = utils .find_resource (identity_client .roles ,
219+ parsed_args .role ).id
220+
221+ if parsed_args .user and parsed_args .domain :
222+ user = utils .find_resource (identity_client .users ,
223+ parsed_args .user )
224+ domain = utils .find_resource (identity_client .domains ,
225+ parsed_args .domain )
226+ identity_client .roles .revoke (role_id , user = user , domain = domain )
227+ elif parsed_args .user and parsed_args .project :
228+ user = utils .find_resource (identity_client .users ,
229+ parsed_args .user )
230+ project = utils .find_resource (identity_client .projects ,
231+ parsed_args .project )
232+ identity_client .roles .revoke (role_id , user = user , project = project )
233+ elif parsed_args .group and parsed_args .project :
234+ group = utils .find_resource (identity_client .group ,
235+ parsed_args .group )
236+ project = utils .find_resource (identity_client .projects ,
237+ parsed_args .project )
238+ identity_client .roles .revoke (role_id , group = group , project = project )
239+ elif parsed_args .group and parsed_args .domain :
240+ group = utils .find_resource (identity_client .group ,
241+ parsed_args .group )
242+ domain = utils .find_resource (identity_client .domains ,
243+ parsed_args .domain )
244+ identity_client .roles .revoke (role_id , group = group , domain = domain )
245+ else :
246+ sys .stderr .write ("Role not removed, incorrect set of arguments \
247+ provided. See openstack --help for more details\n " )
248+ return
249+
250+
171251class SetRole (command .Command ):
172252 """Set role command"""
173253
@@ -179,7 +259,7 @@ def get_parser(self, prog_name):
179259 parser .add_argument (
180260 'role' ,
181261 metavar = '<role>' ,
182- help = 'Name or ID of role to change ' ,
262+ help = 'Name or ID of role to update ' ,
183263 )
184264 parser .add_argument (
185265 '--name' ,
@@ -195,7 +275,7 @@ def take_action(self, parsed_args):
195275 parsed_args .role )
196276
197277 if not parsed_args .name :
198- sys .stdout .write ("Role not updated, no arguments present" )
278+ sys .stderr .write ("Role not updated, no arguments present" )
199279 return
200280
201281 identity_client .roles .update (role_id , parsed_args .name )
@@ -213,7 +293,8 @@ def get_parser(self, prog_name):
213293 parser .add_argument (
214294 'role' ,
215295 metavar = '<role>' ,
216- help = 'Name or ID of role to display' )
296+ help = 'Name or ID of role to display' ,
297+ )
217298 return parser
218299
219300 def take_action (self , parsed_args ):
0 commit comments