Skip to content

Commit 7a0a7d6

Browse files
author
Dean Troyer
committed
Prepare for Identity v3 tests
* Split identity/fakes.py for v2_0 and v3 * Split identity/test_identity.py for v2_0 and v3 * Fix issues in commands with enable/disable * Clean up v2 commands Change-Id: I6e536b6a130fc556dbd7dcf9f2e76d939ca1bc1c
1 parent 16edd97 commit 7a0a7d6

12 files changed

Lines changed: 222 additions & 141 deletions

File tree

‎openstackclient/identity/v2_0/project.py‎

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class CreateProject(show.ShowOne):
3333
def get_parser(self, prog_name):
3434
parser = super(CreateProject, self).get_parser(prog_name)
3535
parser.add_argument(
36-
'project_name',
36+
'name',
3737
metavar='<project-name>',
3838
help='New project name',
3939
)
@@ -57,13 +57,14 @@ def get_parser(self, prog_name):
5757

5858
def take_action(self, parsed_args):
5959
self.log.debug('take_action(%s)' % parsed_args)
60-
6160
identity_client = self.app.client_manager.identity
61+
6262
enabled = True
6363
if parsed_args.disable:
6464
enabled = False
65+
6566
project = identity_client.tenants.create(
66-
parsed_args.project_name,
67+
parsed_args.name,
6768
description=parsed_args.description,
6869
enabled=enabled,
6970
)
@@ -90,10 +91,12 @@ def get_parser(self, prog_name):
9091
def take_action(self, parsed_args):
9192
self.log.debug('take_action(%s)' % parsed_args)
9293
identity_client = self.app.client_manager.identity
94+
9395
project = utils.find_resource(
9496
identity_client.tenants,
9597
parsed_args.project,
9698
)
99+
97100
identity_client.tenants.delete(project.id)
98101
return
99102

@@ -164,8 +167,14 @@ def get_parser(self, prog_name):
164167

165168
def take_action(self, parsed_args):
166169
self.log.debug('take_action(%s)' % parsed_args)
167-
168170
identity_client = self.app.client_manager.identity
171+
172+
if (not parsed_args.name
173+
and not parsed_args.description
174+
and not parsed_args.enable
175+
and not parsed_args.disable):
176+
return
177+
169178
project = utils.find_resource(
170179
identity_client.tenants,
171180
parsed_args.project,
@@ -180,16 +189,15 @@ def take_action(self, parsed_args):
180189
kwargs['enabled'] = True
181190
if parsed_args.disable:
182191
kwargs['enabled'] = False
183-
184192
if 'id' in kwargs:
185193
del kwargs['id']
186194
if 'name' in kwargs:
187195
# Hack around borken Identity API arg names
188196
kwargs['tenant_name'] = kwargs['name']
189197
del kwargs['name']
190198

191-
if len(kwargs):
192-
identity_client.tenants.update(project.id, **kwargs)
199+
identity_client.tenants.update(project.id, **kwargs)
200+
return
193201

194202

195203
class ShowProject(show.ShowOne):

‎openstackclient/identity/v2_0/service.py‎

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929

3030
class CreateService(show.ShowOne):
31-
"""Create service command"""
31+
"""Create new service"""
3232

3333
log = logging.getLogger(__name__ + '.CreateService')
3434

@@ -37,21 +37,25 @@ def get_parser(self, prog_name):
3737
parser.add_argument(
3838
'name',
3939
metavar='<service-name>',
40-
help='New service name')
40+
help='New service name',
41+
)
4142
parser.add_argument(
4243
'--type',
4344
metavar='<service-type>',
4445
required=True,
45-
help='New service type')
46+
help='New service type (compute, image, identity, volume, etc)',
47+
)
4648
parser.add_argument(
4749
'--description',
4850
metavar='<service-description>',
49-
help='New service description')
51+
help='New service description',
52+
)
5053
return parser
5154

5255
def take_action(self, parsed_args):
5356
self.log.debug('take_action(%s)' % parsed_args)
5457
identity_client = self.app.client_manager.identity
58+
5559
service = identity_client.services.create(
5660
parsed_args.name,
5761
parsed_args.type,
@@ -63,27 +67,34 @@ def take_action(self, parsed_args):
6367

6468

6569
class DeleteService(command.Command):
66-
"""Delete service command"""
70+
"""Delete service"""
6771

6872
log = logging.getLogger(__name__ + '.DeleteService')
6973

7074
def get_parser(self, prog_name):
7175
parser = super(DeleteService, self).get_parser(prog_name)
7276
parser.add_argument(
7377
'service',
74-
metavar='<service-id>',
75-
help='ID of service to delete')
78+
metavar='<service>',
79+
help='Service to delete (name or ID)',
80+
)
7681
return parser
7782

7883
def take_action(self, parsed_args):
7984
self.log.debug('take_action(%s)' % parsed_args)
8085
identity_client = self.app.client_manager.identity
81-
identity_client.services.delete(parsed_args.service)
86+
87+
service = utils.find_resource(
88+
identity_client.services,
89+
parsed_args.service,
90+
)
91+
92+
identity_client.services.delete(service.id)
8293
return
8394

8495

8596
class ListService(lister.Lister):
86-
"""List service command"""
97+
"""List services"""
8798

8899
log = logging.getLogger(__name__ + '.ListService')
89100

@@ -98,6 +109,7 @@ def get_parser(self, prog_name):
98109

99110
def take_action(self, parsed_args):
100111
self.log.debug('take_action(%s)' % parsed_args)
112+
101113
if parsed_args.long:
102114
columns = ('ID', 'Name', 'Type', 'Description')
103115
else:
@@ -111,7 +123,7 @@ def take_action(self, parsed_args):
111123

112124

113125
class ShowService(show.ShowOne):
114-
"""Show cloud service information"""
126+
"""Show service details"""
115127

116128
log = logging.getLogger(__name__ + '.ShowService')
117129

@@ -120,7 +132,7 @@ def get_parser(self, prog_name):
120132
parser.add_argument(
121133
'service',
122134
metavar='<service>',
123-
help='Type, name or ID of service to display',
135+
help='Service to display (type, name or ID)',
124136
)
125137
parser.add_argument(
126138
'--catalog',

‎openstackclient/identity/v2_0/user.py‎

Lines changed: 55 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727

2828
class CreateUser(show.ShowOne):
29-
"""Create user command"""
29+
"""Create new user"""
3030

3131
log = logging.getLogger(__name__ + '.CreateUser')
3232

@@ -35,15 +35,18 @@ def get_parser(self, prog_name):
3535
parser.add_argument(
3636
'name',
3737
metavar='<user-name>',
38-
help='New user name')
38+
help='New user name',
39+
)
3940
parser.add_argument(
4041
'--password',
4142
metavar='<user-password>',
42-
help='New user password')
43+
help='New user password',
44+
)
4345
parser.add_argument(
4446
'--email',
4547
metavar='<user-email>',
46-
help='New user email address')
48+
help='New user email address',
49+
)
4750
parser.add_argument(
4851
'--project',
4952
metavar='<project>',
@@ -65,16 +68,19 @@ def get_parser(self, prog_name):
6568
def take_action(self, parsed_args):
6669
self.log.debug('take_action(%s)' % parsed_args)
6770
identity_client = self.app.client_manager.identity
71+
6872
if parsed_args.project:
6973
project_id = utils.find_resource(
7074
identity_client.tenants,
7175
parsed_args.project,
7276
).id
7377
else:
7478
project_id = None
79+
7580
enabled = True
7681
if parsed_args.disable:
7782
enabled = False
83+
7884
user = identity_client.users.create(
7985
parsed_args.name,
8086
parsed_args.password,
@@ -95,7 +101,7 @@ def take_action(self, parsed_args):
95101

96102

97103
class DeleteUser(command.Command):
98-
"""Delete user command"""
104+
"""Delete user"""
99105

100106
log = logging.getLogger(__name__ + '.DeleteUser')
101107

@@ -104,19 +110,25 @@ def get_parser(self, prog_name):
104110
parser.add_argument(
105111
'user',
106112
metavar='<user>',
107-
help='Name or ID of user to delete')
113+
help='User to delete (name or ID)',
114+
)
108115
return parser
109116

110117
def take_action(self, parsed_args):
111118
self.log.debug('take_action(%s)' % parsed_args)
112119
identity_client = self.app.client_manager.identity
113-
user = utils.find_resource(identity_client.users, parsed_args.user)
120+
121+
user = utils.find_resource(
122+
identity_client.users,
123+
parsed_args.user,
124+
)
125+
114126
identity_client.users.delete(user.id)
115127
return
116128

117129

118130
class ListUser(lister.Lister):
119-
"""List user command"""
131+
"""List users"""
120132

121133
log = logging.getLogger(__name__ + '.ListUser')
122134

@@ -191,7 +203,7 @@ def _format_project(project):
191203

192204

193205
class SetUser(command.Command):
194-
"""Set user command"""
206+
"""Set user properties"""
195207

196208
log = logging.getLogger(__name__ + '.SetUser')
197209

@@ -200,19 +212,23 @@ def get_parser(self, prog_name):
200212
parser.add_argument(
201213
'user',
202214
metavar='<user>',
203-
help='Name or ID of user to change')
215+
help='User to change (name or ID)',
216+
)
204217
parser.add_argument(
205218
'--name',
206219
metavar='<new-user-name>',
207-
help='New user name')
220+
help='New user name',
221+
)
208222
parser.add_argument(
209223
'--password',
210224
metavar='<user-password>',
211-
help='New user password')
225+
help='New user password',
226+
)
212227
parser.add_argument(
213228
'--email',
214229
metavar='<user-email>',
215-
help='New user email address')
230+
help='New user email address',
231+
)
216232
parser.add_argument(
217233
'--project',
218234
metavar='<project>',
@@ -233,9 +249,21 @@ def get_parser(self, prog_name):
233249

234250
def take_action(self, parsed_args):
235251
self.log.debug('take_action(%s)' % parsed_args)
236-
237252
identity_client = self.app.client_manager.identity
238-
user = utils.find_resource(identity_client.users, parsed_args.user)
253+
254+
if (not parsed_args.name
255+
and not parsed_args.name
256+
and not parsed_args.password
257+
and not parsed_args.email
258+
and not parsed_args.project
259+
and not parsed_args.enable
260+
and not parsed_args.disable):
261+
return
262+
263+
user = utils.find_resource(
264+
identity_client.users,
265+
parsed_args.user,
266+
)
239267

240268
if parsed_args.password:
241269
identity_client.users.update_password(
@@ -258,17 +286,18 @@ def take_action(self, parsed_args):
258286
kwargs['name'] = parsed_args.name
259287
if parsed_args.email:
260288
kwargs['email'] = parsed_args.email
289+
kwargs['enabled'] = user.enabled
261290
if parsed_args.enable:
262291
kwargs['enabled'] = True
263292
if parsed_args.disable:
264293
kwargs['enabled'] = False
265294

266-
if len(kwargs):
267-
identity_client.users.update(user.id, **kwargs)
295+
identity_client.users.update(user.id, **kwargs)
296+
return
268297

269298

270299
class ShowUser(show.ShowOne):
271-
"""Show user command"""
300+
"""Show user details"""
272301

273302
log = logging.getLogger(__name__ + '.ShowUser')
274303

@@ -277,13 +306,19 @@ def get_parser(self, prog_name):
277306
parser.add_argument(
278307
'user',
279308
metavar='<user>',
280-
help='Name or ID of user to display')
309+
help='User to display (name or ID)',
310+
)
281311
return parser
282312

283313
def take_action(self, parsed_args):
284314
self.log.debug('take_action(%s)' % parsed_args)
285315
identity_client = self.app.client_manager.identity
286-
user = utils.find_resource(identity_client.users, parsed_args.user)
316+
317+
user = utils.find_resource(
318+
identity_client.users,
319+
parsed_args.user,
320+
)
321+
287322
if 'tenantId' in user._info:
288323
user._info.update(
289324
{'project_id': user._info.pop('tenantId')}

‎openstackclient/tests/fakes.py‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,11 @@ def __init__(self, _stdout):
4242

4343
class FakeClientManager(object):
4444
def __init__(self):
45-
pass
45+
self.compute = None
46+
self.identity = None
47+
self.image = None
48+
self.volume = None
49+
self.auth_ref = None
4650

4751

4852
class FakeResource(object):

0 commit comments

Comments
 (0)