python-openstackclient 7.1.2__py3-none-any.whl → 7.1.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openstackclient/common/clientmanager.py +6 -1
- openstackclient/common/limits.py +1 -1
- openstackclient/common/quota.py +7 -2
- openstackclient/compute/v2/server.py +1 -1
- openstackclient/identity/common.py +22 -31
- openstackclient/identity/v3/role_assignment.py +24 -3
- openstackclient/identity/v3/service.py +2 -1
- openstackclient/identity/v3/user.py +35 -15
- openstackclient/tests/unit/compute/v2/test_server.py +1 -1
- openstackclient/tests/unit/identity/v3/test_role_assignment.py +261 -0
- openstackclient/tests/unit/identity/v3/test_service.py +0 -3
- openstackclient/tests/unit/identity/v3/test_user.py +4 -90
- {python_openstackclient-7.1.2.dist-info → python_openstackclient-7.1.4.dist-info}/METADATA +1 -1
- {python_openstackclient-7.1.2.dist-info → python_openstackclient-7.1.4.dist-info}/RECORD +20 -20
- python_openstackclient-7.1.4.dist-info/pbr.json +1 -0
- python_openstackclient-7.1.2.dist-info/pbr.json +0 -1
- {python_openstackclient-7.1.2.dist-info → python_openstackclient-7.1.4.dist-info}/AUTHORS +0 -0
- {python_openstackclient-7.1.2.dist-info → python_openstackclient-7.1.4.dist-info}/LICENSE +0 -0
- {python_openstackclient-7.1.2.dist-info → python_openstackclient-7.1.4.dist-info}/WHEEL +0 -0
- {python_openstackclient-7.1.2.dist-info → python_openstackclient-7.1.4.dist-info}/entry_points.txt +0 -0
- {python_openstackclient-7.1.2.dist-info → python_openstackclient-7.1.4.dist-info}/top_level.txt +0 -0
|
@@ -129,10 +129,15 @@ class ClientManager(clientmanager.ClientManager):
|
|
|
129
129
|
# TODO(stephenfin): Drop volume_client argument in OSC 8.0 or later.
|
|
130
130
|
def is_volume_endpoint_enabled(self, volume_client=None):
|
|
131
131
|
"""Check if volume endpoint is enabled"""
|
|
132
|
+
# We check against the service type and all aliases defined by the
|
|
133
|
+
# Service Types Authority
|
|
134
|
+
# https://service-types.openstack.org/service-types.json
|
|
132
135
|
return (
|
|
133
|
-
self.is_service_available('
|
|
136
|
+
self.is_service_available('block-storage') is not False
|
|
137
|
+
or self.is_service_available('volume') is not False
|
|
134
138
|
or self.is_service_available('volumev3') is not False
|
|
135
139
|
or self.is_service_available('volumev2') is not False
|
|
140
|
+
or self.is_service_available('block-store') is not False
|
|
136
141
|
)
|
|
137
142
|
|
|
138
143
|
|
openstackclient/common/limits.py
CHANGED
|
@@ -130,7 +130,7 @@ class ShowLimits(command.Lister):
|
|
|
130
130
|
if self.app.client_manager.is_volume_endpoint_enabled():
|
|
131
131
|
volume_client = self.app.client_manager.sdk_connection.volume
|
|
132
132
|
volume_limits = volume_client.get_limits(
|
|
133
|
-
|
|
133
|
+
project=project_id,
|
|
134
134
|
)
|
|
135
135
|
|
|
136
136
|
if parsed_args.is_absolute:
|
openstackclient/common/quota.py
CHANGED
|
@@ -249,9 +249,14 @@ class ListQuota(command.Lister):
|
|
|
249
249
|
for project_id in project_ids:
|
|
250
250
|
try:
|
|
251
251
|
project_data = compute_client.get_quota_set(project_id)
|
|
252
|
+
# NOTE(stephenfin): Unfortunately, Nova raises a HTTP 400 (Bad
|
|
253
|
+
# Request) if the project ID is invalid, even though the project
|
|
254
|
+
# ID is actually the resource's identifier which would normally
|
|
255
|
+
# lead us to expect a HTTP 404 (Not Found).
|
|
252
256
|
except (
|
|
253
|
-
sdk_exceptions.
|
|
257
|
+
sdk_exceptions.BadRequestException,
|
|
254
258
|
sdk_exceptions.ForbiddenException,
|
|
259
|
+
sdk_exceptions.NotFoundException,
|
|
255
260
|
) as exc:
|
|
256
261
|
# Project not found, move on to next one
|
|
257
262
|
LOG.warning(f"Project {project_id} not found: {exc}")
|
|
@@ -312,8 +317,8 @@ class ListQuota(command.Lister):
|
|
|
312
317
|
try:
|
|
313
318
|
project_data = volume_client.get_quota_set(project_id)
|
|
314
319
|
except (
|
|
315
|
-
sdk_exceptions.NotFoundException,
|
|
316
320
|
sdk_exceptions.ForbiddenException,
|
|
321
|
+
sdk_exceptions.NotFoundException,
|
|
317
322
|
) as exc:
|
|
318
323
|
# Project not found, move on to next one
|
|
319
324
|
LOG.warning(f"Project {project_id} not found: {exc}")
|
|
@@ -2648,7 +2648,7 @@ class ListServer(command.Lister):
|
|
|
2648
2648
|
'status': parsed_args.status,
|
|
2649
2649
|
'flavor': flavor_id,
|
|
2650
2650
|
'image': image_id,
|
|
2651
|
-
'
|
|
2651
|
+
'compute_host': parsed_args.host,
|
|
2652
2652
|
'project_id': project_id,
|
|
2653
2653
|
'all_projects': parsed_args.all_projects,
|
|
2654
2654
|
'user_id': user_id,
|
|
@@ -184,13 +184,6 @@ def _get_token_resource(client, resource, parsed_name, parsed_domain=None):
|
|
|
184
184
|
return parsed_name
|
|
185
185
|
|
|
186
186
|
|
|
187
|
-
def _get_domain_id_if_requested(identity_client, domain_name_or_id):
|
|
188
|
-
if not domain_name_or_id:
|
|
189
|
-
return None
|
|
190
|
-
domain = find_domain(identity_client, domain_name_or_id)
|
|
191
|
-
return domain.id
|
|
192
|
-
|
|
193
|
-
|
|
194
187
|
def find_domain(identity_client, name_or_id):
|
|
195
188
|
return _find_identity_resource(
|
|
196
189
|
identity_client.domains, name_or_id, domains.Domain
|
|
@@ -198,45 +191,43 @@ def find_domain(identity_client, name_or_id):
|
|
|
198
191
|
|
|
199
192
|
|
|
200
193
|
def find_group(identity_client, name_or_id, domain_name_or_id=None):
|
|
201
|
-
|
|
202
|
-
if not domain_id:
|
|
194
|
+
if domain_name_or_id is None:
|
|
203
195
|
return _find_identity_resource(
|
|
204
196
|
identity_client.groups, name_or_id, groups.Group
|
|
205
197
|
)
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
198
|
+
|
|
199
|
+
domain_id = find_domain(identity_client, domain_name_or_id).id
|
|
200
|
+
return _find_identity_resource(
|
|
201
|
+
identity_client.groups,
|
|
202
|
+
name_or_id,
|
|
203
|
+
groups.Group,
|
|
204
|
+
domain_id=domain_id,
|
|
205
|
+
)
|
|
213
206
|
|
|
214
207
|
|
|
215
208
|
def find_project(identity_client, name_or_id, domain_name_or_id=None):
|
|
216
|
-
|
|
217
|
-
if not domain_id:
|
|
209
|
+
if domain_name_or_id is None:
|
|
218
210
|
return _find_identity_resource(
|
|
219
211
|
identity_client.projects, name_or_id, projects.Project
|
|
220
212
|
)
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
213
|
+
domain_id = find_domain(identity_client, domain_name_or_id).id
|
|
214
|
+
return _find_identity_resource(
|
|
215
|
+
identity_client.projects,
|
|
216
|
+
name_or_id,
|
|
217
|
+
projects.Project,
|
|
218
|
+
domain_id=domain_id,
|
|
219
|
+
)
|
|
228
220
|
|
|
229
221
|
|
|
230
222
|
def find_user(identity_client, name_or_id, domain_name_or_id=None):
|
|
231
|
-
|
|
232
|
-
if not domain_id:
|
|
223
|
+
if domain_name_or_id is None:
|
|
233
224
|
return _find_identity_resource(
|
|
234
225
|
identity_client.users, name_or_id, users.User
|
|
235
226
|
)
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
227
|
+
domain_id = find_domain(identity_client, domain_name_or_id).id
|
|
228
|
+
return _find_identity_resource(
|
|
229
|
+
identity_client.users, name_or_id, users.User, domain_id=domain_id
|
|
230
|
+
)
|
|
240
231
|
|
|
241
232
|
|
|
242
233
|
def _find_identity_resource(
|
|
@@ -146,12 +146,19 @@ class ListRoleAssignment(command.Lister):
|
|
|
146
146
|
domain_id=role_domain_id,
|
|
147
147
|
)
|
|
148
148
|
|
|
149
|
+
user_domain_id = None
|
|
150
|
+
if parsed_args.user_domain:
|
|
151
|
+
user_domain_id = _find_sdk_id(
|
|
152
|
+
identity_client.find_domain,
|
|
153
|
+
name_or_id=parsed_args.user_domain,
|
|
154
|
+
)
|
|
155
|
+
|
|
149
156
|
user_id = None
|
|
150
157
|
if parsed_args.user:
|
|
151
158
|
user_id = _find_sdk_id(
|
|
152
159
|
identity_client.find_user,
|
|
153
160
|
name_or_id=parsed_args.user,
|
|
154
|
-
domain_id=
|
|
161
|
+
domain_id=user_domain_id,
|
|
155
162
|
)
|
|
156
163
|
elif parsed_args.authuser:
|
|
157
164
|
if auth_ref:
|
|
@@ -171,6 +178,13 @@ class ListRoleAssignment(command.Lister):
|
|
|
171
178
|
name_or_id=parsed_args.domain,
|
|
172
179
|
)
|
|
173
180
|
|
|
181
|
+
project_domain_id = None
|
|
182
|
+
if parsed_args.project_domain:
|
|
183
|
+
project_domain_id = _find_sdk_id(
|
|
184
|
+
identity_client.find_domain,
|
|
185
|
+
name_or_id=parsed_args.project_domain,
|
|
186
|
+
)
|
|
187
|
+
|
|
174
188
|
project_id = None
|
|
175
189
|
if parsed_args.project:
|
|
176
190
|
project_id = _find_sdk_id(
|
|
@@ -178,7 +192,7 @@ class ListRoleAssignment(command.Lister):
|
|
|
178
192
|
name_or_id=common._get_token_resource(
|
|
179
193
|
identity_client, 'project', parsed_args.project
|
|
180
194
|
),
|
|
181
|
-
domain_id=
|
|
195
|
+
domain_id=project_domain_id,
|
|
182
196
|
)
|
|
183
197
|
elif parsed_args.authproject:
|
|
184
198
|
if auth_ref:
|
|
@@ -187,12 +201,19 @@ class ListRoleAssignment(command.Lister):
|
|
|
187
201
|
name_or_id=auth_ref.project_id,
|
|
188
202
|
)
|
|
189
203
|
|
|
204
|
+
group_domain_id = None
|
|
205
|
+
if parsed_args.group_domain:
|
|
206
|
+
group_domain_id = _find_sdk_id(
|
|
207
|
+
identity_client.find_domain,
|
|
208
|
+
name_or_id=parsed_args.group_domain,
|
|
209
|
+
)
|
|
210
|
+
|
|
190
211
|
group_id = None
|
|
191
212
|
if parsed_args.group:
|
|
192
213
|
group_id = _find_sdk_id(
|
|
193
214
|
identity_client.find_group,
|
|
194
215
|
name_or_id=parsed_args.group,
|
|
195
|
-
domain_id=
|
|
216
|
+
domain_id=group_domain_id,
|
|
196
217
|
)
|
|
197
218
|
|
|
198
219
|
include_names = True if parsed_args.names else None
|
|
@@ -225,7 +225,8 @@ class SetService(command.Command):
|
|
|
225
225
|
kwargs['name'] = parsed_args.name
|
|
226
226
|
if parsed_args.description:
|
|
227
227
|
kwargs['description'] = parsed_args.description
|
|
228
|
-
|
|
228
|
+
if parsed_args.is_enabled is not None:
|
|
229
|
+
kwargs['is_enabled'] = parsed_args.is_enabled
|
|
229
230
|
|
|
230
231
|
identity_client.update_service(service.id, **kwargs)
|
|
231
232
|
|
|
@@ -249,26 +249,44 @@ class CreateUser(command.ShowOne):
|
|
|
249
249
|
def take_action(self, parsed_args):
|
|
250
250
|
identity_client = self.app.client_manager.sdk_connection.identity
|
|
251
251
|
|
|
252
|
+
kwargs = {}
|
|
253
|
+
|
|
252
254
|
domain_id = None
|
|
253
255
|
if parsed_args.domain:
|
|
254
256
|
domain_id = identity_client.find_domain(
|
|
255
|
-
|
|
257
|
+
parsed_args.domain,
|
|
256
258
|
ignore_missing=False,
|
|
257
259
|
).id
|
|
260
|
+
kwargs['domain_id'] = domain_id
|
|
258
261
|
|
|
259
|
-
project_id = None
|
|
260
262
|
if parsed_args.project:
|
|
261
|
-
|
|
262
|
-
|
|
263
|
+
project_domain_id = None
|
|
264
|
+
if parsed_args.project_domain:
|
|
265
|
+
project_domain_id = identity_client.find_domain(
|
|
266
|
+
parsed_args.project_domain,
|
|
267
|
+
ignore_missing=False,
|
|
268
|
+
).id
|
|
269
|
+
kwargs['default_project_id'] = identity_client.find_project(
|
|
270
|
+
parsed_args.project,
|
|
263
271
|
ignore_missing=False,
|
|
264
|
-
domain_id=
|
|
272
|
+
domain_id=project_domain_id,
|
|
265
273
|
).id
|
|
266
274
|
|
|
275
|
+
if parsed_args.description:
|
|
276
|
+
kwargs['description'] = parsed_args.description
|
|
277
|
+
|
|
278
|
+
if parsed_args.email:
|
|
279
|
+
kwargs['email'] = parsed_args.email
|
|
280
|
+
|
|
267
281
|
is_enabled = True
|
|
268
282
|
if parsed_args.disable:
|
|
269
283
|
is_enabled = False
|
|
270
|
-
|
|
271
|
-
|
|
284
|
+
|
|
285
|
+
password = None
|
|
286
|
+
if parsed_args.password:
|
|
287
|
+
password = parsed_args.password
|
|
288
|
+
elif parsed_args.password_prompt:
|
|
289
|
+
password = utils.get_password(self.app.stdin)
|
|
272
290
|
|
|
273
291
|
if not parsed_args.password:
|
|
274
292
|
LOG.warning(
|
|
@@ -278,24 +296,26 @@ class CreateUser(command.ShowOne):
|
|
|
278
296
|
)
|
|
279
297
|
)
|
|
280
298
|
options = _get_options_for_user(identity_client, parsed_args)
|
|
299
|
+
if options:
|
|
300
|
+
kwargs['options'] = options
|
|
281
301
|
|
|
282
302
|
try:
|
|
283
303
|
user = identity_client.create_user(
|
|
284
|
-
default_project_id=project_id,
|
|
285
|
-
description=parsed_args.description,
|
|
286
|
-
domain_id=domain_id,
|
|
287
|
-
email=parsed_args.email,
|
|
288
304
|
is_enabled=is_enabled,
|
|
289
305
|
name=parsed_args.name,
|
|
290
|
-
password=
|
|
291
|
-
|
|
306
|
+
password=password,
|
|
307
|
+
**kwargs,
|
|
292
308
|
)
|
|
293
309
|
except sdk_exc.ConflictException:
|
|
294
310
|
if parsed_args.or_show:
|
|
311
|
+
kwargs = {}
|
|
312
|
+
if domain_id:
|
|
313
|
+
kwargs['domain_id'] = domain_id
|
|
314
|
+
|
|
295
315
|
user = identity_client.find_user(
|
|
296
|
-
|
|
297
|
-
domain_id=domain_id,
|
|
316
|
+
parsed_args.name,
|
|
298
317
|
ignore_missing=False,
|
|
318
|
+
**kwargs,
|
|
299
319
|
)
|
|
300
320
|
LOG.info(_('Returning existing user %s'), user.name)
|
|
301
321
|
else:
|
|
@@ -165,10 +165,13 @@ class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
|
|
|
165
165
|
arglist = ['--user', self.user.name]
|
|
166
166
|
verifylist = [
|
|
167
167
|
('user', self.user.name),
|
|
168
|
+
('user_domain', None),
|
|
168
169
|
('group', None),
|
|
170
|
+
('group_domain', None),
|
|
169
171
|
('system', None),
|
|
170
172
|
('domain', None),
|
|
171
173
|
('project', None),
|
|
174
|
+
('project_domain', None),
|
|
172
175
|
('role', None),
|
|
173
176
|
('effective', None),
|
|
174
177
|
('inherited', False),
|
|
@@ -181,6 +184,79 @@ class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
|
|
|
181
184
|
# containing the data to be listed.
|
|
182
185
|
columns, data = self.cmd.take_action(parsed_args)
|
|
183
186
|
|
|
187
|
+
self.identity_sdk_client.find_user.assert_called_with(
|
|
188
|
+
name_or_id=self.user.name, ignore_missing=False, domain_id=None
|
|
189
|
+
)
|
|
190
|
+
self.identity_sdk_client.role_assignments.assert_called_with(
|
|
191
|
+
role_id=None,
|
|
192
|
+
user_id=self.user.id,
|
|
193
|
+
group_id=None,
|
|
194
|
+
scope_project_id=None,
|
|
195
|
+
scope_domain_id=None,
|
|
196
|
+
scope_system=None,
|
|
197
|
+
effective=None,
|
|
198
|
+
include_names=None,
|
|
199
|
+
inherited_to=None,
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
self.assertEqual(self.columns, columns)
|
|
203
|
+
datalist = (
|
|
204
|
+
(
|
|
205
|
+
self.role.id,
|
|
206
|
+
self.user.id,
|
|
207
|
+
'',
|
|
208
|
+
'',
|
|
209
|
+
self.domain.id,
|
|
210
|
+
'',
|
|
211
|
+
False,
|
|
212
|
+
),
|
|
213
|
+
(
|
|
214
|
+
self.role.id,
|
|
215
|
+
self.user.id,
|
|
216
|
+
'',
|
|
217
|
+
self.project.id,
|
|
218
|
+
'',
|
|
219
|
+
'',
|
|
220
|
+
False,
|
|
221
|
+
),
|
|
222
|
+
)
|
|
223
|
+
self.assertEqual(datalist, tuple(data))
|
|
224
|
+
|
|
225
|
+
def test_role_assignment_list_user_with_domain(self):
|
|
226
|
+
self.identity_sdk_client.role_assignments.return_value = [
|
|
227
|
+
self.assignment_with_domain_id_and_user_id,
|
|
228
|
+
self.assignment_with_project_id_and_user_id,
|
|
229
|
+
]
|
|
230
|
+
|
|
231
|
+
arglist = ['--user', self.user.name, '--user-domain', self.domain.name]
|
|
232
|
+
verifylist = [
|
|
233
|
+
('user', self.user.name),
|
|
234
|
+
('user_domain', self.domain.name),
|
|
235
|
+
('group', None),
|
|
236
|
+
('group_domain', None),
|
|
237
|
+
('system', None),
|
|
238
|
+
('domain', None),
|
|
239
|
+
('project', None),
|
|
240
|
+
('role', None),
|
|
241
|
+
('effective', None),
|
|
242
|
+
('inherited', False),
|
|
243
|
+
('names', False),
|
|
244
|
+
]
|
|
245
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
246
|
+
|
|
247
|
+
# In base command class Lister in cliff, abstract method take_action()
|
|
248
|
+
# returns a tuple containing the column names and an iterable
|
|
249
|
+
# containing the data to be listed.
|
|
250
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
251
|
+
|
|
252
|
+
self.identity_sdk_client.find_domain.assert_called_with(
|
|
253
|
+
name_or_id=self.domain.name, ignore_missing=False
|
|
254
|
+
)
|
|
255
|
+
self.identity_sdk_client.find_user.assert_called_with(
|
|
256
|
+
name_or_id=self.user.name,
|
|
257
|
+
ignore_missing=False,
|
|
258
|
+
domain_id=self.domain.id,
|
|
259
|
+
)
|
|
184
260
|
self.identity_sdk_client.role_assignments.assert_called_with(
|
|
185
261
|
role_id=None,
|
|
186
262
|
user_id=self.user.id,
|
|
@@ -230,10 +306,13 @@ class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
|
|
|
230
306
|
arglist = ['--user', self.user.id]
|
|
231
307
|
verifylist = [
|
|
232
308
|
('user', self.user.id),
|
|
309
|
+
('user_domain', None),
|
|
233
310
|
('group', None),
|
|
311
|
+
('group_domain', None),
|
|
234
312
|
('system', None),
|
|
235
313
|
('domain', None),
|
|
236
314
|
('project', None),
|
|
315
|
+
('project_domain', None),
|
|
237
316
|
('role', None),
|
|
238
317
|
('effective', None),
|
|
239
318
|
('inherited', False),
|
|
@@ -290,10 +369,13 @@ class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
|
|
|
290
369
|
arglist = ['--group', self.group.name]
|
|
291
370
|
verifylist = [
|
|
292
371
|
('user', None),
|
|
372
|
+
('user_domain', None),
|
|
293
373
|
('group', self.group.name),
|
|
374
|
+
('group_domain', None),
|
|
294
375
|
('system', None),
|
|
295
376
|
('domain', None),
|
|
296
377
|
('project', None),
|
|
378
|
+
('project_domain', None),
|
|
297
379
|
('role', None),
|
|
298
380
|
('effective', None),
|
|
299
381
|
('inherited', False),
|
|
@@ -306,6 +388,85 @@ class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
|
|
|
306
388
|
# containing the data to be listed.
|
|
307
389
|
columns, data = self.cmd.take_action(parsed_args)
|
|
308
390
|
|
|
391
|
+
self.identity_sdk_client.find_group.assert_called_with(
|
|
392
|
+
name_or_id=self.group.name, ignore_missing=False, domain_id=None
|
|
393
|
+
)
|
|
394
|
+
self.identity_sdk_client.role_assignments.assert_called_with(
|
|
395
|
+
role_id=None,
|
|
396
|
+
user_id=None,
|
|
397
|
+
group_id=self.group.id,
|
|
398
|
+
scope_project_id=None,
|
|
399
|
+
scope_domain_id=None,
|
|
400
|
+
scope_system=None,
|
|
401
|
+
effective=None,
|
|
402
|
+
include_names=None,
|
|
403
|
+
inherited_to=None,
|
|
404
|
+
)
|
|
405
|
+
|
|
406
|
+
self.assertEqual(self.columns, columns)
|
|
407
|
+
datalist = (
|
|
408
|
+
(
|
|
409
|
+
self.role.id,
|
|
410
|
+
'',
|
|
411
|
+
self.group.id,
|
|
412
|
+
'',
|
|
413
|
+
self.domain.id,
|
|
414
|
+
'',
|
|
415
|
+
False,
|
|
416
|
+
),
|
|
417
|
+
(
|
|
418
|
+
self.role.id,
|
|
419
|
+
'',
|
|
420
|
+
self.group.id,
|
|
421
|
+
self.project.id,
|
|
422
|
+
'',
|
|
423
|
+
'',
|
|
424
|
+
False,
|
|
425
|
+
),
|
|
426
|
+
)
|
|
427
|
+
self.assertEqual(datalist, tuple(data))
|
|
428
|
+
|
|
429
|
+
def test_role_assignment_list_group_with_domain(self):
|
|
430
|
+
self.identity_sdk_client.role_assignments.return_value = [
|
|
431
|
+
self.assignment_with_domain_id_and_group_id,
|
|
432
|
+
self.assignment_with_project_id_and_group_id,
|
|
433
|
+
]
|
|
434
|
+
|
|
435
|
+
arglist = [
|
|
436
|
+
'--group',
|
|
437
|
+
self.group.name,
|
|
438
|
+
'--group-domain',
|
|
439
|
+
self.domain.name,
|
|
440
|
+
]
|
|
441
|
+
verifylist = [
|
|
442
|
+
('user', None),
|
|
443
|
+
('user_domain', None),
|
|
444
|
+
('group', self.group.name),
|
|
445
|
+
('group_domain', self.domain.name),
|
|
446
|
+
('system', None),
|
|
447
|
+
('domain', None),
|
|
448
|
+
('project', None),
|
|
449
|
+
('project_domain', None),
|
|
450
|
+
('role', None),
|
|
451
|
+
('effective', None),
|
|
452
|
+
('inherited', False),
|
|
453
|
+
('names', False),
|
|
454
|
+
]
|
|
455
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
456
|
+
|
|
457
|
+
# In base command class Lister in cliff, abstract method take_action()
|
|
458
|
+
# returns a tuple containing the column names and an iterable
|
|
459
|
+
# containing the data to be listed.
|
|
460
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
461
|
+
|
|
462
|
+
self.identity_sdk_client.find_domain.assert_called_with(
|
|
463
|
+
name_or_id=self.domain.name, ignore_missing=False
|
|
464
|
+
)
|
|
465
|
+
self.identity_sdk_client.find_group.assert_called_with(
|
|
466
|
+
name_or_id=self.group.name,
|
|
467
|
+
ignore_missing=False,
|
|
468
|
+
domain_id=self.domain.id,
|
|
469
|
+
)
|
|
309
470
|
self.identity_sdk_client.role_assignments.assert_called_with(
|
|
310
471
|
role_id=None,
|
|
311
472
|
user_id=None,
|
|
@@ -350,10 +511,13 @@ class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
|
|
|
350
511
|
arglist = ['--domain', self.domain.name]
|
|
351
512
|
verifylist = [
|
|
352
513
|
('user', None),
|
|
514
|
+
('user_domain', None),
|
|
353
515
|
('group', None),
|
|
516
|
+
('group_domain', None),
|
|
354
517
|
('system', None),
|
|
355
518
|
('domain', self.domain.name),
|
|
356
519
|
('project', None),
|
|
520
|
+
('project_domain', None),
|
|
357
521
|
('role', None),
|
|
358
522
|
('effective', None),
|
|
359
523
|
('inherited', False),
|
|
@@ -410,10 +574,13 @@ class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
|
|
|
410
574
|
arglist = ['--project', self.project.name]
|
|
411
575
|
verifylist = [
|
|
412
576
|
('user', None),
|
|
577
|
+
('user_domain', None),
|
|
413
578
|
('group', None),
|
|
579
|
+
('group_domain', None),
|
|
414
580
|
('system', None),
|
|
415
581
|
('domain', None),
|
|
416
582
|
('project', self.project.name),
|
|
583
|
+
('project_domain', None),
|
|
417
584
|
('role', None),
|
|
418
585
|
('effective', None),
|
|
419
586
|
('inherited', False),
|
|
@@ -426,6 +593,85 @@ class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
|
|
|
426
593
|
# containing the data to be listed.
|
|
427
594
|
columns, data = self.cmd.take_action(parsed_args)
|
|
428
595
|
|
|
596
|
+
self.identity_sdk_client.find_project.assert_called_with(
|
|
597
|
+
name_or_id=self.project.name, ignore_missing=False, domain_id=None
|
|
598
|
+
)
|
|
599
|
+
self.identity_sdk_client.role_assignments.assert_called_with(
|
|
600
|
+
role_id=None,
|
|
601
|
+
user_id=None,
|
|
602
|
+
group_id=None,
|
|
603
|
+
scope_project_id=self.project.id,
|
|
604
|
+
scope_domain_id=None,
|
|
605
|
+
scope_system=None,
|
|
606
|
+
effective=None,
|
|
607
|
+
include_names=None,
|
|
608
|
+
inherited_to=None,
|
|
609
|
+
)
|
|
610
|
+
|
|
611
|
+
self.assertEqual(self.columns, columns)
|
|
612
|
+
datalist = (
|
|
613
|
+
(
|
|
614
|
+
self.role.id,
|
|
615
|
+
self.user.id,
|
|
616
|
+
'',
|
|
617
|
+
self.project.id,
|
|
618
|
+
'',
|
|
619
|
+
'',
|
|
620
|
+
False,
|
|
621
|
+
),
|
|
622
|
+
(
|
|
623
|
+
self.role.id,
|
|
624
|
+
'',
|
|
625
|
+
self.group.id,
|
|
626
|
+
self.project.id,
|
|
627
|
+
'',
|
|
628
|
+
'',
|
|
629
|
+
False,
|
|
630
|
+
),
|
|
631
|
+
)
|
|
632
|
+
self.assertEqual(datalist, tuple(data))
|
|
633
|
+
|
|
634
|
+
def test_role_assignment_list_project_with_domain(self):
|
|
635
|
+
self.identity_sdk_client.role_assignments.return_value = [
|
|
636
|
+
self.assignment_with_project_id_and_user_id,
|
|
637
|
+
self.assignment_with_project_id_and_group_id,
|
|
638
|
+
]
|
|
639
|
+
|
|
640
|
+
arglist = [
|
|
641
|
+
'--project',
|
|
642
|
+
self.project.name,
|
|
643
|
+
'--project-domain',
|
|
644
|
+
self.domain.name,
|
|
645
|
+
]
|
|
646
|
+
verifylist = [
|
|
647
|
+
('user', None),
|
|
648
|
+
('user_domain', None),
|
|
649
|
+
('group', None),
|
|
650
|
+
('group_domain', None),
|
|
651
|
+
('system', None),
|
|
652
|
+
('domain', None),
|
|
653
|
+
('project', self.project.name),
|
|
654
|
+
('project_domain', self.domain.name),
|
|
655
|
+
('role', None),
|
|
656
|
+
('effective', None),
|
|
657
|
+
('inherited', False),
|
|
658
|
+
('names', False),
|
|
659
|
+
]
|
|
660
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
661
|
+
|
|
662
|
+
# In base command class Lister in cliff, abstract method take_action()
|
|
663
|
+
# returns a tuple containing the column names and an iterable
|
|
664
|
+
# containing the data to be listed.
|
|
665
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
666
|
+
|
|
667
|
+
self.identity_sdk_client.find_domain.assert_called_with(
|
|
668
|
+
name_or_id=self.domain.name, ignore_missing=False
|
|
669
|
+
)
|
|
670
|
+
self.identity_sdk_client.find_project.assert_called_with(
|
|
671
|
+
name_or_id=self.project.name,
|
|
672
|
+
ignore_missing=False,
|
|
673
|
+
domain_id=self.domain.id,
|
|
674
|
+
)
|
|
429
675
|
self.identity_sdk_client.role_assignments.assert_called_with(
|
|
430
676
|
role_id=None,
|
|
431
677
|
user_id=None,
|
|
@@ -476,10 +722,13 @@ class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
|
|
|
476
722
|
]
|
|
477
723
|
verifylist = [
|
|
478
724
|
('user', None),
|
|
725
|
+
('user_domain', None),
|
|
479
726
|
('group', None),
|
|
727
|
+
('group_domain', None),
|
|
480
728
|
('system', None),
|
|
481
729
|
('domain', None),
|
|
482
730
|
('project', None),
|
|
731
|
+
('project_domain', None),
|
|
483
732
|
('role', None),
|
|
484
733
|
('effective', None),
|
|
485
734
|
('inherited', False),
|
|
@@ -529,10 +778,13 @@ class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
|
|
|
529
778
|
arglist = ['--effective']
|
|
530
779
|
verifylist = [
|
|
531
780
|
('user', None),
|
|
781
|
+
('user_domain', None),
|
|
532
782
|
('group', None),
|
|
783
|
+
('group_domain', None),
|
|
533
784
|
('system', None),
|
|
534
785
|
('domain', None),
|
|
535
786
|
('project', None),
|
|
787
|
+
('project_domain', None),
|
|
536
788
|
('role', None),
|
|
537
789
|
('effective', True),
|
|
538
790
|
('inherited', False),
|
|
@@ -611,10 +863,13 @@ class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
|
|
|
611
863
|
arglist = ['--inherited']
|
|
612
864
|
verifylist = [
|
|
613
865
|
('user', None),
|
|
866
|
+
('user_domain', None),
|
|
614
867
|
('group', None),
|
|
868
|
+
('group_domain', None),
|
|
615
869
|
('system', None),
|
|
616
870
|
('domain', None),
|
|
617
871
|
('project', None),
|
|
872
|
+
('project_domain', None),
|
|
618
873
|
('role', None),
|
|
619
874
|
('effective', None),
|
|
620
875
|
('inherited', True),
|
|
@@ -707,10 +962,13 @@ class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
|
|
|
707
962
|
arglist = ['--names']
|
|
708
963
|
verifylist = [
|
|
709
964
|
('user', None),
|
|
965
|
+
('user_domain', None),
|
|
710
966
|
('group', None),
|
|
967
|
+
('group_domain', None),
|
|
711
968
|
('system', None),
|
|
712
969
|
('domain', None),
|
|
713
970
|
('project', None),
|
|
971
|
+
('project_domain', None),
|
|
714
972
|
('role', None),
|
|
715
973
|
('effective', None),
|
|
716
974
|
('inherited', False),
|
|
@@ -799,10 +1057,13 @@ class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
|
|
|
799
1057
|
]
|
|
800
1058
|
verifylist = [
|
|
801
1059
|
('user', None),
|
|
1060
|
+
('user_domain', None),
|
|
802
1061
|
('group', None),
|
|
1062
|
+
('group_domain', None),
|
|
803
1063
|
('system', None),
|
|
804
1064
|
('domain', None),
|
|
805
1065
|
('project', None),
|
|
1066
|
+
('project_domain', None),
|
|
806
1067
|
('role', role_2.name),
|
|
807
1068
|
('effective', None),
|
|
808
1069
|
('inherited', False),
|
|
@@ -311,7 +311,6 @@ class TestServiceSet(identity_fakes.TestIdentityv3):
|
|
|
311
311
|
# Set expected values
|
|
312
312
|
kwargs = {
|
|
313
313
|
'type': self.service.type,
|
|
314
|
-
'is_enabled': None,
|
|
315
314
|
}
|
|
316
315
|
self.identity_sdk_client.update_service.assert_called_with(
|
|
317
316
|
self.service.id, **kwargs
|
|
@@ -338,7 +337,6 @@ class TestServiceSet(identity_fakes.TestIdentityv3):
|
|
|
338
337
|
# Set expected values
|
|
339
338
|
kwargs = {
|
|
340
339
|
'name': self.service.name,
|
|
341
|
-
'is_enabled': None,
|
|
342
340
|
}
|
|
343
341
|
self.identity_sdk_client.update_service.assert_called_with(
|
|
344
342
|
self.service.id, **kwargs
|
|
@@ -365,7 +363,6 @@ class TestServiceSet(identity_fakes.TestIdentityv3):
|
|
|
365
363
|
# Set expected values
|
|
366
364
|
kwargs = {
|
|
367
365
|
'description': self.service.description,
|
|
368
|
-
'is_enabled': None,
|
|
369
366
|
}
|
|
370
367
|
self.identity_sdk_client.update_service.assert_called_with(
|
|
371
368
|
self.service.id, **kwargs
|
|
@@ -91,11 +91,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
91
91
|
# Set expected values
|
|
92
92
|
kwargs = {
|
|
93
93
|
'name': self.user.name,
|
|
94
|
-
'default_project_id': None,
|
|
95
|
-
'description': None,
|
|
96
|
-
'domain_id': None,
|
|
97
|
-
'email': None,
|
|
98
|
-
'options': {},
|
|
99
94
|
'is_enabled': True,
|
|
100
95
|
'password': None,
|
|
101
96
|
}
|
|
@@ -127,11 +122,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
127
122
|
# Set expected values
|
|
128
123
|
kwargs = {
|
|
129
124
|
'name': self.user.name,
|
|
130
|
-
'default_project_id': None,
|
|
131
|
-
'description': None,
|
|
132
|
-
'domain_id': None,
|
|
133
|
-
'email': None,
|
|
134
|
-
'options': {},
|
|
135
125
|
'is_enabled': True,
|
|
136
126
|
'password': 'secret',
|
|
137
127
|
}
|
|
@@ -165,11 +155,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
165
155
|
# Set expected values
|
|
166
156
|
kwargs = {
|
|
167
157
|
'name': self.user.name,
|
|
168
|
-
'default_project_id': None,
|
|
169
|
-
'description': None,
|
|
170
|
-
'domain_id': None,
|
|
171
|
-
'email': None,
|
|
172
|
-
'options': {},
|
|
173
158
|
'is_enabled': True,
|
|
174
159
|
'password': 'abc123',
|
|
175
160
|
}
|
|
@@ -200,12 +185,8 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
200
185
|
# Set expected values
|
|
201
186
|
kwargs = {
|
|
202
187
|
'name': self.user.name,
|
|
203
|
-
'default_project_id': None,
|
|
204
|
-
'description': None,
|
|
205
|
-
'domain_id': None,
|
|
206
188
|
'email': 'barney@example.com',
|
|
207
189
|
'is_enabled': True,
|
|
208
|
-
'options': {},
|
|
209
190
|
'password': None,
|
|
210
191
|
}
|
|
211
192
|
self.identity_sdk_client.create_user.assert_called_with(**kwargs)
|
|
@@ -236,11 +217,7 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
236
217
|
kwargs = {
|
|
237
218
|
'name': self.user.name,
|
|
238
219
|
'default_project_id': self.project.id,
|
|
239
|
-
'description': None,
|
|
240
|
-
'domain_id': None,
|
|
241
|
-
'email': None,
|
|
242
220
|
'is_enabled': True,
|
|
243
|
-
'options': {},
|
|
244
221
|
'password': None,
|
|
245
222
|
}
|
|
246
223
|
self.identity_sdk_client.create_user.assert_called_with(**kwargs)
|
|
@@ -284,14 +261,13 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
284
261
|
kwargs = {
|
|
285
262
|
'name': self.user.name,
|
|
286
263
|
'default_project_id': self.project.id,
|
|
287
|
-
'description': None,
|
|
288
|
-
'domain_id': None,
|
|
289
|
-
'email': None,
|
|
290
|
-
'options': {},
|
|
291
264
|
'is_enabled': True,
|
|
292
265
|
'password': None,
|
|
293
266
|
}
|
|
294
|
-
self.identity_sdk_client.create_user.
|
|
267
|
+
self.identity_sdk_client.create_user.assert_called_once_with(**kwargs)
|
|
268
|
+
self.identity_sdk_client.find_domain.assert_called_once_with(
|
|
269
|
+
self.project.domain_id, ignore_missing=False
|
|
270
|
+
)
|
|
295
271
|
|
|
296
272
|
self.assertEqual(self.columns, columns)
|
|
297
273
|
datalist = (
|
|
@@ -328,11 +304,7 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
328
304
|
# Set expected values
|
|
329
305
|
kwargs = {
|
|
330
306
|
'name': self.user.name,
|
|
331
|
-
'default_project_id': None,
|
|
332
|
-
'description': None,
|
|
333
307
|
'domain_id': self.domain.id,
|
|
334
|
-
'email': None,
|
|
335
|
-
'options': {},
|
|
336
308
|
'is_enabled': True,
|
|
337
309
|
'password': None,
|
|
338
310
|
}
|
|
@@ -361,11 +333,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
361
333
|
# Set expected values
|
|
362
334
|
kwargs = {
|
|
363
335
|
'name': self.user.name,
|
|
364
|
-
'default_project_id': None,
|
|
365
|
-
'description': None,
|
|
366
|
-
'domain_id': None,
|
|
367
|
-
'email': None,
|
|
368
|
-
'options': {},
|
|
369
336
|
'is_enabled': True,
|
|
370
337
|
'password': None,
|
|
371
338
|
}
|
|
@@ -394,11 +361,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
394
361
|
# Set expected values
|
|
395
362
|
kwargs = {
|
|
396
363
|
'name': self.user.name,
|
|
397
|
-
'default_project_id': None,
|
|
398
|
-
'description': None,
|
|
399
|
-
'domain_id': None,
|
|
400
|
-
'email': None,
|
|
401
|
-
'options': {},
|
|
402
364
|
'is_enabled': False,
|
|
403
365
|
'password': None,
|
|
404
366
|
}
|
|
@@ -428,10 +390,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
428
390
|
# Set expected values
|
|
429
391
|
kwargs = {
|
|
430
392
|
'name': self.user.name,
|
|
431
|
-
'default_project_id': None,
|
|
432
|
-
'description': None,
|
|
433
|
-
'domain_id': None,
|
|
434
|
-
'email': None,
|
|
435
393
|
'is_enabled': True,
|
|
436
394
|
'options': {'ignore_lockout_failure_attempts': True},
|
|
437
395
|
'password': None,
|
|
@@ -462,10 +420,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
462
420
|
# Set expected values
|
|
463
421
|
kwargs = {
|
|
464
422
|
'name': self.user.name,
|
|
465
|
-
'default_project_id': None,
|
|
466
|
-
'description': None,
|
|
467
|
-
'domain_id': None,
|
|
468
|
-
'email': None,
|
|
469
423
|
'is_enabled': True,
|
|
470
424
|
'options': {'ignore_lockout_failure_attempts': False},
|
|
471
425
|
'password': None,
|
|
@@ -496,10 +450,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
496
450
|
# Set expected values
|
|
497
451
|
kwargs = {
|
|
498
452
|
'name': self.user.name,
|
|
499
|
-
'default_project_id': None,
|
|
500
|
-
'description': None,
|
|
501
|
-
'domain_id': None,
|
|
502
|
-
'email': None,
|
|
503
453
|
'is_enabled': True,
|
|
504
454
|
'options': {'ignore_password_expiry': True},
|
|
505
455
|
'password': None,
|
|
@@ -530,10 +480,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
530
480
|
# Set expected values
|
|
531
481
|
kwargs = {
|
|
532
482
|
'name': self.user.name,
|
|
533
|
-
'default_project_id': None,
|
|
534
|
-
'description': None,
|
|
535
|
-
'domain_id': None,
|
|
536
|
-
'email': None,
|
|
537
483
|
'is_enabled': True,
|
|
538
484
|
'options': {'ignore_password_expiry': False},
|
|
539
485
|
'password': None,
|
|
@@ -564,10 +510,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
564
510
|
# Set expected values
|
|
565
511
|
kwargs = {
|
|
566
512
|
'name': self.user.name,
|
|
567
|
-
'default_project_id': None,
|
|
568
|
-
'description': None,
|
|
569
|
-
'domain_id': None,
|
|
570
|
-
'email': None,
|
|
571
513
|
'is_enabled': True,
|
|
572
514
|
'options': {'ignore_change_password_upon_first_use': True},
|
|
573
515
|
'password': None,
|
|
@@ -598,10 +540,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
598
540
|
# Set expected values
|
|
599
541
|
kwargs = {
|
|
600
542
|
'name': self.user.name,
|
|
601
|
-
'default_project_id': None,
|
|
602
|
-
'description': None,
|
|
603
|
-
'domain_id': None,
|
|
604
|
-
'email': None,
|
|
605
543
|
'is_enabled': True,
|
|
606
544
|
'options': {'ignore_change_password_upon_first_use': False},
|
|
607
545
|
'password': None,
|
|
@@ -632,10 +570,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
632
570
|
# Set expected values
|
|
633
571
|
kwargs = {
|
|
634
572
|
'name': self.user.name,
|
|
635
|
-
'default_project_id': None,
|
|
636
|
-
'description': None,
|
|
637
|
-
'domain_id': None,
|
|
638
|
-
'email': None,
|
|
639
573
|
'is_enabled': True,
|
|
640
574
|
'options': {'lock_password': True},
|
|
641
575
|
'password': None,
|
|
@@ -666,10 +600,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
666
600
|
# Set expected values
|
|
667
601
|
kwargs = {
|
|
668
602
|
'name': self.user.name,
|
|
669
|
-
'default_project_id': None,
|
|
670
|
-
'description': None,
|
|
671
|
-
'domain_id': None,
|
|
672
|
-
'email': None,
|
|
673
603
|
'is_enabled': True,
|
|
674
604
|
'options': {'lock_password': False},
|
|
675
605
|
'password': None,
|
|
@@ -700,10 +630,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
700
630
|
# Set expected values
|
|
701
631
|
kwargs = {
|
|
702
632
|
'name': self.user.name,
|
|
703
|
-
'default_project_id': None,
|
|
704
|
-
'description': None,
|
|
705
|
-
'domain_id': None,
|
|
706
|
-
'email': None,
|
|
707
633
|
'is_enabled': True,
|
|
708
634
|
'options': {'multi_factor_auth_enabled': True},
|
|
709
635
|
'password': None,
|
|
@@ -734,10 +660,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
734
660
|
# Set expected values
|
|
735
661
|
kwargs = {
|
|
736
662
|
'name': self.user.name,
|
|
737
|
-
'default_project_id': None,
|
|
738
|
-
'description': None,
|
|
739
|
-
'domain_id': None,
|
|
740
|
-
'email': None,
|
|
741
663
|
'is_enabled': True,
|
|
742
664
|
'options': {'multi_factor_auth_enabled': False},
|
|
743
665
|
'password': None,
|
|
@@ -774,10 +696,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
774
696
|
# Set expected values
|
|
775
697
|
kwargs = {
|
|
776
698
|
'name': self.user.name,
|
|
777
|
-
'default_project_id': None,
|
|
778
|
-
'description': None,
|
|
779
|
-
'domain_id': None,
|
|
780
|
-
'email': None,
|
|
781
699
|
'is_enabled': True,
|
|
782
700
|
'options': {
|
|
783
701
|
'multi_factor_auth_rules': [["password", "totp"], ["password"]]
|
|
@@ -815,10 +733,6 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
|
|
|
815
733
|
# Set expected values
|
|
816
734
|
kwargs = {
|
|
817
735
|
'name': self.user.name,
|
|
818
|
-
'default_project_id': None,
|
|
819
|
-
'description': None,
|
|
820
|
-
'domain_id': None,
|
|
821
|
-
'email': None,
|
|
822
736
|
'is_enabled': True,
|
|
823
737
|
'options': {
|
|
824
738
|
'ignore_password_expiry': True,
|
|
@@ -9,15 +9,15 @@ openstackclient/api/image_v2.py,sha256=GSM09toS6rcLzbtyhKl_FvQ7UeWJ3EcvSNBdVIk9r
|
|
|
9
9
|
openstackclient/api/object_store_v1.py,sha256=366WuIuu7iXH4r-vdZTWSiopGj8P4MmMa8NePcvh5qk,18183
|
|
10
10
|
openstackclient/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
11
|
openstackclient/common/availability_zone.py,sha256=2TvrpkRQmMHffRZu1x71NFu0tQQNTuo0Voi0er_OvZc,6497
|
|
12
|
-
openstackclient/common/clientmanager.py,sha256=
|
|
12
|
+
openstackclient/common/clientmanager.py,sha256=X_hXK580SLUG3n_HY-2owE32eAzB0jTyLq2DMCufLAs,7438
|
|
13
13
|
openstackclient/common/configuration.py,sha256=kfi4Ph1hEO0z8uJD8d9OuQz2C70Yi7U8pzbc3Tq88lU,2339
|
|
14
14
|
openstackclient/common/extension.py,sha256=4YK8HjwNtd7fIOzcQ-7PDjIwuF331T924vUcSkzK5pI,5332
|
|
15
|
-
openstackclient/common/limits.py,sha256=
|
|
15
|
+
openstackclient/common/limits.py,sha256=6LSFb7OlaMjN6nfXvnZBSaTwZS09UhpxpBNq7eOs898,5659
|
|
16
16
|
openstackclient/common/module.py,sha256=biNzeW2KWcaagpvidvNvQuj4JNk1wjXxBnW99tu_nNk,4277
|
|
17
17
|
openstackclient/common/pagination.py,sha256=ZmEFXprCbSKDtURJTyp5pfe97JuZYKth0MAkEXxrFFU,2728
|
|
18
18
|
openstackclient/common/progressbar.py,sha256=-Xlth1FbiqZg1j3-zX6DIEp29mD76z2ozxiOybx8K-g,2427
|
|
19
19
|
openstackclient/common/project_cleanup.py,sha256=f77yjCfhMh_XY2C-riwvbvh3jrMPx_4EzgHflkG8efk,5206
|
|
20
|
-
openstackclient/common/quota.py,sha256=
|
|
20
|
+
openstackclient/common/quota.py,sha256=ARlbPzaPR7KIxzvVOSY2RFs5SFHalZ0KpjkzHCmhar4,28697
|
|
21
21
|
openstackclient/common/versions.py,sha256=yiH0xhCFKpFcZrA0tWz99-eXJ44PEAyH4qZy9Fu9uwk,3838
|
|
22
22
|
openstackclient/compute/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
23
|
openstackclient/compute/client.py,sha256=xntJEyxt_h5s2cI132cDFCOIxrJCu07WbtFLwp3R5dI,1533
|
|
@@ -30,7 +30,7 @@ openstackclient/compute/v2/host.py,sha256=1Ow4eJu9HPz-SC0u_eXJskUXaGoyW7X1O2yZIf
|
|
|
30
30
|
openstackclient/compute/v2/hypervisor.py,sha256=xkSLqZjaJnVABAKh9ANF9zqy67WaEJeD9NiVL3Frqko,8808
|
|
31
31
|
openstackclient/compute/v2/hypervisor_stats.py,sha256=Y2Jkkleha8PXnM2VQ2MJtjKxHKchGRyEqmILfPj-Wgw,2161
|
|
32
32
|
openstackclient/compute/v2/keypair.py,sha256=yM30AVsMmPP1SAqD8_nKXNkeB9WLyL6sd18AjeYIuhM,15730
|
|
33
|
-
openstackclient/compute/v2/server.py,sha256=
|
|
33
|
+
openstackclient/compute/v2/server.py,sha256=qzozAjygKLZUQ4Dtib1R1_10Sc7zm3axBCP3wt9d3Zw,187204
|
|
34
34
|
openstackclient/compute/v2/server_backup.py,sha256=GVf_T5iHt0po1vYDDQgUQ_fN3AisHvKozEXY37voWkc,4119
|
|
35
35
|
openstackclient/compute/v2/server_event.py,sha256=vLtu_LBJ99Fgfj9oRBCVATalRMyqBd3CUjHToVfQB48,10055
|
|
36
36
|
openstackclient/compute/v2/server_group.py,sha256=s9CjDnmjNUk03VUdAkOn5QHMoSCHV8dtvuLe05ER4Rg,8674
|
|
@@ -41,7 +41,7 @@ openstackclient/compute/v2/service.py,sha256=3Y-R9wGnk5kSaMvXzuETd8EFLQwTfMUbdmk
|
|
|
41
41
|
openstackclient/compute/v2/usage.py,sha256=ztIv1ucTWWuVe3pfv1jk7Gkf2c6boTrqGdeFKbbfQ5g,9026
|
|
42
42
|
openstackclient/identity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
43
43
|
openstackclient/identity/client.py,sha256=Miz2eCWbhS-IXaj87J-5qatZPOwZeOn5_MyZ6YMNZ9w,2433
|
|
44
|
-
openstackclient/identity/common.py,sha256=
|
|
44
|
+
openstackclient/identity/common.py,sha256=oWSLTECKJeqyvJH7mY1OZWUSSZZtTVyp4jBQGWFclto,12011
|
|
45
45
|
openstackclient/identity/v2_0/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
46
46
|
openstackclient/identity/v2_0/catalog.py,sha256=B0nCW-KrPqBJ6CX4_zn7_p6h3Y4VFfmVhs14MhnJ-oY,3484
|
|
47
47
|
openstackclient/identity/v2_0/ec2creds.py,sha256=QRj4gP54dA-wX27xy55NJwes9PEFRsCSa0bXjB3aZrY,6468
|
|
@@ -73,14 +73,14 @@ openstackclient/identity/v3/project.py,sha256=jHpviZg3MYPKCacYs1_jbdafz9EflGHGqu
|
|
|
73
73
|
openstackclient/identity/v3/region.py,sha256=jcImUh-kZromTAtXd8aF7kfKBqBwfknP2I5ylYYyb0w,6010
|
|
74
74
|
openstackclient/identity/v3/registered_limit.py,sha256=mbV4Ci7kNPMbveHg6QQztYISiXcm3VwBv3xR2D-aKvw,11389
|
|
75
75
|
openstackclient/identity/v3/role.py,sha256=dmuW5j4T9zmNBHuGkIIcolx5aoDmyFGshGSfOZ2swEY,14205
|
|
76
|
-
openstackclient/identity/v3/role_assignment.py,sha256=
|
|
77
|
-
openstackclient/identity/v3/service.py,sha256=
|
|
76
|
+
openstackclient/identity/v3/role_assignment.py,sha256=pg-43fgY2HK4ymfaYypVOuPMsJoYGBRn4XZxicpX6YY,8018
|
|
77
|
+
openstackclient/identity/v3/service.py,sha256=2VuxiOEuEnqjWEPNryKRe4LLe70-MIndkDXYB_jdW1g,7457
|
|
78
78
|
openstackclient/identity/v3/service_provider.py,sha256=g-gs09bFJertKjbfFp2ZKPjXtPfNcecBlHWkArGLkvw,7410
|
|
79
79
|
openstackclient/identity/v3/tag.py,sha256=dcVDheoWxdkwsZYvyJSpzIF2EGpqZtaE0h7x2halscc,3972
|
|
80
80
|
openstackclient/identity/v3/token.py,sha256=dXP7iRYZRROw3k8knao6NteZeP67mVGCc2Y9jMHudnQ,7399
|
|
81
81
|
openstackclient/identity/v3/trust.py,sha256=xKIEd1K2S9NFnyJfa58ezEpsvQLVtO6qe4cREqFgkmA,10522
|
|
82
82
|
openstackclient/identity/v3/unscoped_saml.py,sha256=A-645W2kp0_27NxG03YcEU9EtcCFex6Ojzw4fLApuds,2031
|
|
83
|
-
openstackclient/identity/v3/user.py,sha256=
|
|
83
|
+
openstackclient/identity/v3/user.py,sha256=oDz9nfUeDyFsjHMALmNZxrG5qoGROOZ9CoTmNg7EMls,24051
|
|
84
84
|
openstackclient/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
85
85
|
openstackclient/image/client.py,sha256=I088KrjZ9ubuS_8NDX98W6_lHkdaxbBtRHTHt5q_HC8,1508
|
|
86
86
|
openstackclient/image/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -294,7 +294,7 @@ openstackclient/tests/unit/compute/v2/test_host.py,sha256=AAcIxoGpVdy1qOkV3lPFyD
|
|
|
294
294
|
openstackclient/tests/unit/compute/v2/test_hypervisor.py,sha256=t_Xv7uh4dzv6G-gOG3Eoy7l516cHOwy1xeiBgIyaUKc,17390
|
|
295
295
|
openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py,sha256=1z8Jhx_CBoN-cu4im3MQc-YPAZlRQfu--3c9UAUmMG4,3020
|
|
296
296
|
openstackclient/tests/unit/compute/v2/test_keypair.py,sha256=ASoemn6bN_tEKZlHRbhUpjPNydPaqMA22jn6fyAcwGs,25067
|
|
297
|
-
openstackclient/tests/unit/compute/v2/test_server.py,sha256=
|
|
297
|
+
openstackclient/tests/unit/compute/v2/test_server.py,sha256=Lg2sSCAI9Cenb4xz1hoOwheQul7KxiEhJvXKHdg2rzA,310893
|
|
298
298
|
openstackclient/tests/unit/compute/v2/test_server_backup.py,sha256=MW2UQQ32cE403Bmihp7s_MYVhVV4NrkwfDdaZ-y5Wu4,7503
|
|
299
299
|
openstackclient/tests/unit/compute/v2/test_server_event.py,sha256=aZhLD_RgcNDUdCgwVJmpolQlabVWxlrp5edSZBanR_Q,12504
|
|
300
300
|
openstackclient/tests/unit/compute/v2/test_server_group.py,sha256=Ul0SQ_cIq4mW7TIsm6mDRtCOlboNyy6lClP1Oy3NPAE,14934
|
|
@@ -335,13 +335,13 @@ openstackclient/tests/unit/identity/v3/test_protocol.py,sha256=SmV_N8v_dU-mcwa7k
|
|
|
335
335
|
openstackclient/tests/unit/identity/v3/test_region.py,sha256=SN7wLeta1wgFjul3_NGzU-TsQQQaZiFbC7sOEFiRl30,10614
|
|
336
336
|
openstackclient/tests/unit/identity/v3/test_registered_limit.py,sha256=8-Og3hgz2q8i7W1TSFmnRp9MqYzVY1H4SjnOrLVPWKo,17554
|
|
337
337
|
openstackclient/tests/unit/identity/v3/test_role.py,sha256=pYwuSFEg99MHk1mTKQ0l9XzdER0m2T9YjZHMDxfTvFk,51986
|
|
338
|
-
openstackclient/tests/unit/identity/v3/test_role_assignment.py,sha256=
|
|
339
|
-
openstackclient/tests/unit/identity/v3/test_service.py,sha256=
|
|
338
|
+
openstackclient/tests/unit/identity/v3/test_role_assignment.py,sha256=LGwD5EApF6BSiXIHBPwgetcjQsRfCjQ62DmVxGFFcOE,35747
|
|
339
|
+
openstackclient/tests/unit/identity/v3/test_service.py,sha256=eFRjaeuJKd4_G1_gSTzAKmLTN035rQjY4E5RnLzMutY,15028
|
|
340
340
|
openstackclient/tests/unit/identity/v3/test_service_provider.py,sha256=JkO4dBQLGGdJS9etWJzj0wswGmdAAtrCOmfC1hEYzSs,13189
|
|
341
341
|
openstackclient/tests/unit/identity/v3/test_token.py,sha256=k9Ij_BbGTx9KG6Wf7NiO_th-N7cxGWnIWQMWIlDsGXg,4556
|
|
342
342
|
openstackclient/tests/unit/identity/v3/test_trust.py,sha256=ox7NuX5Suxrg7wu_06xsUXsnsASex54-RE-Jj0vtF40,13081
|
|
343
343
|
openstackclient/tests/unit/identity/v3/test_unscoped_saml.py,sha256=gBtouVvKaOTflJ6TMg497ScL4GsVS3lVM_h8XKFExXg,3592
|
|
344
|
-
openstackclient/tests/unit/identity/v3/test_user.py,sha256=
|
|
344
|
+
openstackclient/tests/unit/identity/v3/test_user.py,sha256=BFNh4waeT_eM5IQkzPaeB6gxtDYh9CW1tuEDWbF8rQc,58245
|
|
345
345
|
openstackclient/tests/unit/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
346
346
|
openstackclient/tests/unit/image/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
347
347
|
openstackclient/tests/unit/image/v1/fakes.py,sha256=rwYSQK12WxSaX2p-f15e6D94qC6lg1XIgBFvdiJ5aRc,2271
|
|
@@ -493,11 +493,11 @@ openstackclient/volume/v3/volume_message.py,sha256=HBBxPEcYoNqGjEbzGIEnIJ1XTcQ2K
|
|
|
493
493
|
openstackclient/volume/v3/volume_snapshot.py,sha256=pZ4q_qCwqh4jaGhX28G59wsWDmEc3uXdbpeD176osZg,3186
|
|
494
494
|
openstackclient/volume/v3/volume_transfer_request.py,sha256=PthOJV2m-pTV1njFzwTpaekXZkET1c6alIJrpuN7R6Q,7530
|
|
495
495
|
openstackclient/volume/v3/volume_type.py,sha256=DF2MVoW2mIk0ABDLZD8D2sb8JlR7-rRjA4qCnBHRe6o,34039
|
|
496
|
-
python_openstackclient-7.1.
|
|
497
|
-
python_openstackclient-7.1.
|
|
498
|
-
python_openstackclient-7.1.
|
|
499
|
-
python_openstackclient-7.1.
|
|
500
|
-
python_openstackclient-7.1.
|
|
501
|
-
python_openstackclient-7.1.
|
|
502
|
-
python_openstackclient-7.1.
|
|
503
|
-
python_openstackclient-7.1.
|
|
496
|
+
python_openstackclient-7.1.4.dist-info/AUTHORS,sha256=TRFKS0fs1j9d3_KWaIQfYnNH3gfTnDyBHng0RJAUFeM,21384
|
|
497
|
+
python_openstackclient-7.1.4.dist-info/LICENSE,sha256=XfKg2H1sVi8OoRxoisUlMqoo10TKvHmU_wU39ks7MyA,10143
|
|
498
|
+
python_openstackclient-7.1.4.dist-info/METADATA,sha256=kgsnQMio_eekeFp0wbbLQ1k9JiLJmyUnkzCFkhqaLs4,6581
|
|
499
|
+
python_openstackclient-7.1.4.dist-info/WHEEL,sha256=g4nMs7d-Xl9-xC9XovUrsDHGXt-FT0E17Yqo92DEfvY,92
|
|
500
|
+
python_openstackclient-7.1.4.dist-info/entry_points.txt,sha256=9kVhKTeyLPfkXDMI_ALqXvz0zSJEqibJLHHsOdmtT3c,53261
|
|
501
|
+
python_openstackclient-7.1.4.dist-info/pbr.json,sha256=Ath0K2qvjbVogYTdeuTmNoMRajUIwhHfhz_eJUkQVOM,47
|
|
502
|
+
python_openstackclient-7.1.4.dist-info/top_level.txt,sha256=htg7z9oZgysRuVUHn-m1Bk6XLGOeV65nMbZX9H8qhs0,16
|
|
503
|
+
python_openstackclient-7.1.4.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"git_version": "f42ade43", "is_release": true}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"git_version": "08c84454", "is_release": true}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{python_openstackclient-7.1.2.dist-info → python_openstackclient-7.1.4.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{python_openstackclient-7.1.2.dist-info → python_openstackclient-7.1.4.dist-info}/top_level.txt
RENAMED
|
File without changes
|