python-openstackclient 7.2.1__py3-none-any.whl → 7.3.0__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.
Files changed (66) hide show
  1. openstackclient/common/limits.py +1 -1
  2. openstackclient/common/quota.py +7 -2
  3. openstackclient/compute/v2/server.py +38 -22
  4. openstackclient/compute/v2/usage.py +2 -2
  5. openstackclient/identity/common.py +22 -34
  6. openstackclient/identity/v3/credential.py +45 -28
  7. openstackclient/identity/v3/limit.py +15 -0
  8. openstackclient/identity/v3/region.py +23 -22
  9. openstackclient/identity/v3/registered_limit.py +18 -0
  10. openstackclient/identity/v3/role.py +287 -117
  11. openstackclient/identity/v3/role_assignment.py +1 -1
  12. openstackclient/identity/v3/service_provider.py +95 -45
  13. openstackclient/identity/v3/trust.py +114 -75
  14. openstackclient/image/v2/image.py +3 -0
  15. openstackclient/network/v2/network.py +33 -0
  16. openstackclient/network/v2/network_flavor_profile.py +1 -17
  17. openstackclient/network/v2/port.py +73 -19
  18. openstackclient/tests/functional/compute/v2/test_server.py +87 -1
  19. openstackclient/tests/functional/identity/v3/common.py +1 -1
  20. openstackclient/tests/functional/identity/v3/test_application_credential.py +2 -1
  21. openstackclient/tests/functional/identity/v3/test_role.py +24 -0
  22. openstackclient/tests/functional/identity/v3/test_role_assignment.py +8 -0
  23. openstackclient/tests/functional/identity/v3/test_service_provider.py +1 -5
  24. openstackclient/tests/functional/network/v2/test_port.py +28 -1
  25. openstackclient/tests/unit/compute/v2/fakes.py +0 -304
  26. openstackclient/tests/unit/compute/v2/test_aggregate.py +40 -31
  27. openstackclient/tests/unit/compute/v2/test_console.py +7 -3
  28. openstackclient/tests/unit/compute/v2/test_hypervisor.py +60 -53
  29. openstackclient/tests/unit/compute/v2/test_keypair.py +57 -69
  30. openstackclient/tests/unit/compute/v2/test_server.py +63 -5
  31. openstackclient/tests/unit/compute/v2/test_server_group.py +99 -105
  32. openstackclient/tests/unit/compute/v2/test_server_volume.py +12 -5
  33. openstackclient/tests/unit/compute/v2/test_service.py +83 -37
  34. openstackclient/tests/unit/compute/v2/test_usage.py +12 -7
  35. openstackclient/tests/unit/identity/v2_0/test_catalog.py +3 -6
  36. openstackclient/tests/unit/identity/v2_0/test_role.py +1 -2
  37. openstackclient/tests/unit/identity/v2_0/test_role_assignment.py +2 -1
  38. openstackclient/tests/unit/identity/v2_0/test_token.py +6 -20
  39. openstackclient/tests/unit/identity/v3/test_catalog.py +2 -5
  40. openstackclient/tests/unit/identity/v3/test_credential.py +74 -63
  41. openstackclient/tests/unit/identity/v3/test_project.py +1 -3
  42. openstackclient/tests/unit/identity/v3/test_region.py +74 -96
  43. openstackclient/tests/unit/identity/v3/test_role.py +679 -603
  44. openstackclient/tests/unit/identity/v3/test_role_assignment.py +263 -1
  45. openstackclient/tests/unit/identity/v3/test_service_provider.py +159 -209
  46. openstackclient/tests/unit/identity/v3/test_token.py +5 -20
  47. openstackclient/tests/unit/identity/v3/test_trust.py +137 -155
  48. openstackclient/tests/unit/image/v2/test_image.py +6 -0
  49. openstackclient/tests/unit/network/v2/fakes.py +3 -0
  50. openstackclient/tests/unit/network/v2/test_network.py +25 -0
  51. openstackclient/tests/unit/network/v2/test_network_flavor_profile.py +0 -35
  52. openstackclient/tests/unit/network/v2/test_port.py +129 -16
  53. openstackclient/tests/unit/utils.py +8 -2
  54. openstackclient/tests/unit/volume/v2/test_volume_backup.py +31 -13
  55. openstackclient/tests/unit/volume/v3/test_volume_backup.py +34 -13
  56. openstackclient/volume/v2/volume_backup.py +11 -2
  57. openstackclient/volume/v3/volume_backup.py +13 -2
  58. {python_openstackclient-7.2.1.dist-info → python_openstackclient-7.3.0.dist-info}/AUTHORS +2 -0
  59. {python_openstackclient-7.2.1.dist-info → python_openstackclient-7.3.0.dist-info}/METADATA +14 -16
  60. {python_openstackclient-7.2.1.dist-info → python_openstackclient-7.3.0.dist-info}/RECORD +65 -65
  61. {python_openstackclient-7.2.1.dist-info → python_openstackclient-7.3.0.dist-info}/WHEEL +1 -1
  62. {python_openstackclient-7.2.1.dist-info → python_openstackclient-7.3.0.dist-info}/entry_points.txt +0 -1
  63. python_openstackclient-7.3.0.dist-info/pbr.json +1 -0
  64. python_openstackclient-7.2.1.dist-info/pbr.json +0 -1
  65. {python_openstackclient-7.2.1.dist-info → python_openstackclient-7.3.0.dist-info}/LICENSE +0 -0
  66. {python_openstackclient-7.2.1.dist-info → python_openstackclient-7.3.0.dist-info}/top_level.txt +0 -0
@@ -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,
@@ -462,7 +708,8 @@ class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
462
708
  self.assertEqual(datalist, tuple(data))
463
709
 
464
710
  def test_role_assignment_list_def_creds(self):
465
- auth_ref = self.app.client_manager.auth_ref = mock.Mock()
711
+ self.app.client_manager.auth_ref = mock.Mock()
712
+ auth_ref = self.app.client_manager.auth_ref
466
713
  auth_ref.project_id.return_value = self.project.id
467
714
  auth_ref.user_id.return_value = self.user.id
468
715
 
@@ -476,10 +723,13 @@ class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
476
723
  ]
477
724
  verifylist = [
478
725
  ('user', None),
726
+ ('user_domain', None),
479
727
  ('group', None),
728
+ ('group_domain', None),
480
729
  ('system', None),
481
730
  ('domain', None),
482
731
  ('project', None),
732
+ ('project_domain', None),
483
733
  ('role', None),
484
734
  ('effective', None),
485
735
  ('inherited', False),
@@ -529,10 +779,13 @@ class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
529
779
  arglist = ['--effective']
530
780
  verifylist = [
531
781
  ('user', None),
782
+ ('user_domain', None),
532
783
  ('group', None),
784
+ ('group_domain', None),
533
785
  ('system', None),
534
786
  ('domain', None),
535
787
  ('project', None),
788
+ ('project_domain', None),
536
789
  ('role', None),
537
790
  ('effective', True),
538
791
  ('inherited', False),
@@ -611,10 +864,13 @@ class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
611
864
  arglist = ['--inherited']
612
865
  verifylist = [
613
866
  ('user', None),
867
+ ('user_domain', None),
614
868
  ('group', None),
869
+ ('group_domain', None),
615
870
  ('system', None),
616
871
  ('domain', None),
617
872
  ('project', None),
873
+ ('project_domain', None),
618
874
  ('role', None),
619
875
  ('effective', None),
620
876
  ('inherited', True),
@@ -707,10 +963,13 @@ class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
707
963
  arglist = ['--names']
708
964
  verifylist = [
709
965
  ('user', None),
966
+ ('user_domain', None),
710
967
  ('group', None),
968
+ ('group_domain', None),
711
969
  ('system', None),
712
970
  ('domain', None),
713
971
  ('project', None),
972
+ ('project_domain', None),
714
973
  ('role', None),
715
974
  ('effective', None),
716
975
  ('inherited', False),
@@ -799,10 +1058,13 @@ class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
799
1058
  ]
800
1059
  verifylist = [
801
1060
  ('user', None),
1061
+ ('user_domain', None),
802
1062
  ('group', None),
1063
+ ('group_domain', None),
803
1064
  ('system', None),
804
1065
  ('domain', None),
805
1066
  ('project', None),
1067
+ ('project_domain', None),
806
1068
  ('role', role_2.name),
807
1069
  ('effective', None),
808
1070
  ('inherited', False),