python-openstackclient 6.6.1__py3-none-any.whl → 7.1.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 (336) hide show
  1. openstackclient/api/api.py +4 -4
  2. openstackclient/api/compute_v2.py +352 -638
  3. openstackclient/api/image_v1.py +1 -1
  4. openstackclient/api/object_store_v1.py +3 -4
  5. openstackclient/common/availability_zone.py +1 -1
  6. openstackclient/common/clientmanager.py +24 -20
  7. openstackclient/common/configuration.py +1 -1
  8. openstackclient/common/extension.py +1 -1
  9. openstackclient/common/limits.py +67 -34
  10. openstackclient/common/module.py +3 -3
  11. openstackclient/common/progressbar.py +2 -2
  12. openstackclient/common/project_cleanup.py +5 -2
  13. openstackclient/common/quota.py +299 -423
  14. openstackclient/common/versions.py +1 -1
  15. openstackclient/compute/client.py +7 -116
  16. openstackclient/compute/v2/agent.py +75 -49
  17. openstackclient/compute/v2/aggregate.py +38 -32
  18. openstackclient/compute/v2/console.py +2 -2
  19. openstackclient/compute/v2/flavor.py +6 -6
  20. openstackclient/compute/v2/host.py +38 -33
  21. openstackclient/compute/v2/hypervisor.py +9 -6
  22. openstackclient/compute/v2/keypair.py +7 -8
  23. openstackclient/compute/v2/server.py +479 -396
  24. openstackclient/compute/v2/server_backup.py +1 -1
  25. openstackclient/compute/v2/server_group.py +4 -4
  26. openstackclient/compute/v2/server_image.py +1 -1
  27. openstackclient/compute/v2/server_migration.py +3 -4
  28. openstackclient/compute/v2/service.py +4 -4
  29. openstackclient/compute/v2/usage.py +3 -3
  30. openstackclient/identity/common.py +34 -0
  31. openstackclient/identity/v2_0/catalog.py +2 -2
  32. openstackclient/identity/v2_0/ec2creds.py +4 -4
  33. openstackclient/identity/v2_0/endpoint.py +4 -4
  34. openstackclient/identity/v2_0/project.py +6 -6
  35. openstackclient/identity/v2_0/role.py +5 -5
  36. openstackclient/identity/v2_0/role_assignment.py +1 -1
  37. openstackclient/identity/v2_0/service.py +4 -4
  38. openstackclient/identity/v2_0/token.py +2 -2
  39. openstackclient/identity/v2_0/user.py +7 -7
  40. openstackclient/identity/v3/access_rule.py +3 -3
  41. openstackclient/identity/v3/application_credential.py +125 -43
  42. openstackclient/identity/v3/catalog.py +2 -2
  43. openstackclient/identity/v3/consumer.py +4 -4
  44. openstackclient/identity/v3/credential.py +5 -5
  45. openstackclient/identity/v3/domain.py +5 -5
  46. openstackclient/identity/v3/ec2creds.py +4 -4
  47. openstackclient/identity/v3/endpoint.py +7 -7
  48. openstackclient/identity/v3/endpoint_group.py +8 -10
  49. openstackclient/identity/v3/federation_protocol.py +5 -5
  50. openstackclient/identity/v3/group.py +8 -8
  51. openstackclient/identity/v3/identity_provider.py +5 -5
  52. openstackclient/identity/v3/implied_role.py +3 -3
  53. openstackclient/identity/v3/limit.py +5 -5
  54. openstackclient/identity/v3/mapping.py +5 -5
  55. openstackclient/identity/v3/policy.py +5 -5
  56. openstackclient/identity/v3/project.py +5 -5
  57. openstackclient/identity/v3/region.py +5 -5
  58. openstackclient/identity/v3/registered_limit.py +5 -5
  59. openstackclient/identity/v3/role.py +7 -7
  60. openstackclient/identity/v3/role_assignment.py +92 -140
  61. openstackclient/identity/v3/service.py +64 -34
  62. openstackclient/identity/v3/service_provider.py +4 -4
  63. openstackclient/identity/v3/tag.py +2 -2
  64. openstackclient/identity/v3/token.py +5 -5
  65. openstackclient/identity/v3/trust.py +3 -3
  66. openstackclient/identity/v3/user.py +144 -80
  67. openstackclient/image/client.py +4 -4
  68. openstackclient/image/v1/image.py +8 -9
  69. openstackclient/image/v2/cache.py +12 -10
  70. openstackclient/image/v2/metadef_objects.py +44 -0
  71. openstackclient/image/v2/metadef_resource_type_association.py +189 -0
  72. openstackclient/image/v2/task.py +1 -1
  73. openstackclient/network/common.py +6 -5
  74. openstackclient/network/utils.py +2 -2
  75. openstackclient/network/v2/address_group.py +6 -6
  76. openstackclient/network/v2/address_scope.py +5 -5
  77. openstackclient/network/v2/default_security_group_rule.py +1 -1
  78. openstackclient/network/v2/floating_ip.py +8 -10
  79. openstackclient/network/v2/floating_ip_pool.py +6 -15
  80. openstackclient/network/v2/floating_ip_port_forwarding.py +5 -13
  81. openstackclient/network/v2/ip_availability.py +2 -2
  82. openstackclient/network/v2/l3_conntrack_helper.py +5 -5
  83. openstackclient/network/v2/network.py +8 -8
  84. openstackclient/network/v2/network_agent.py +8 -8
  85. openstackclient/network/v2/network_auto_allocated_topology.py +2 -2
  86. openstackclient/network/v2/network_flavor.py +6 -8
  87. openstackclient/network/v2/network_flavor_profile.py +4 -4
  88. openstackclient/network/v2/network_meter.py +3 -3
  89. openstackclient/network/v2/network_meter_rule.py +3 -3
  90. openstackclient/network/v2/network_qos_policy.py +5 -5
  91. openstackclient/network/v2/network_qos_rule.py +9 -9
  92. openstackclient/network/v2/network_qos_rule_type.py +1 -1
  93. openstackclient/network/v2/network_rbac.py +5 -5
  94. openstackclient/network/v2/network_segment.py +5 -5
  95. openstackclient/network/v2/network_segment_range.py +7 -7
  96. openstackclient/network/v2/network_trunk.py +7 -7
  97. openstackclient/network/v2/port.py +26 -12
  98. openstackclient/network/v2/router.py +403 -54
  99. openstackclient/network/v2/security_group.py +18 -14
  100. openstackclient/network/v2/security_group_rule.py +18 -15
  101. openstackclient/network/v2/subnet.py +15 -8
  102. openstackclient/network/v2/subnet_pool.py +6 -6
  103. openstackclient/object/v1/account.py +2 -2
  104. openstackclient/object/v1/container.py +7 -7
  105. openstackclient/object/v1/object.py +7 -7
  106. openstackclient/releasenotes/notes/volume-backup-created-at-list-b49ec893ae1f6b0d.yaml +4 -0
  107. openstackclient/shell.py +4 -6
  108. openstackclient/tests/functional/base.py +1 -1
  109. openstackclient/tests/functional/common/test_extension.py +1 -1
  110. openstackclient/tests/functional/common/test_help.py +2 -2
  111. openstackclient/tests/functional/common/test_module.py +1 -1
  112. openstackclient/tests/functional/common/test_quota.py +43 -61
  113. openstackclient/tests/functional/compute/v2/common.py +2 -2
  114. openstackclient/tests/functional/compute/v2/test_flavor.py +2 -2
  115. openstackclient/tests/functional/compute/v2/test_keypair.py +1 -1
  116. openstackclient/tests/functional/compute/v2/test_server.py +5 -5
  117. openstackclient/tests/functional/compute/v2/test_server_event.py +1 -1
  118. openstackclient/tests/functional/identity/v2/common.py +3 -3
  119. openstackclient/tests/functional/identity/v3/common.py +12 -4
  120. openstackclient/tests/functional/identity/v3/test_application_credential.py +6 -12
  121. openstackclient/tests/functional/identity/v3/test_domain.py +1 -3
  122. openstackclient/tests/functional/identity/v3/test_endpoint.py +1 -1
  123. openstackclient/tests/functional/identity/v3/test_idp.py +1 -1
  124. openstackclient/tests/functional/identity/v3/test_region.py +1 -3
  125. openstackclient/tests/functional/identity/v3/test_role.py +2 -2
  126. openstackclient/tests/functional/identity/v3/test_role_assignment.py +210 -0
  127. openstackclient/tests/functional/identity/v3/test_service.py +1 -3
  128. openstackclient/tests/functional/identity/v3/test_service_provider.py +1 -3
  129. openstackclient/tests/functional/image/base.py +1 -1
  130. openstackclient/tests/functional/image/v2/test_image.py +1 -1
  131. openstackclient/tests/functional/image/v2/test_info.py +1 -1
  132. openstackclient/tests/functional/network/v2/common.py +4 -6
  133. openstackclient/tests/functional/network/v2/test_network.py +5 -3
  134. openstackclient/tests/functional/network/v2/test_network_agent.py +7 -5
  135. openstackclient/tests/functional/network/v2/test_network_qos_rule.py +4 -4
  136. openstackclient/tests/functional/network/v2/test_port.py +11 -7
  137. openstackclient/tests/functional/network/v2/test_router.py +2 -2
  138. openstackclient/tests/functional/object/v1/common.py +1 -1
  139. openstackclient/tests/functional/object/v1/test_container.py +3 -3
  140. openstackclient/tests/functional/object/v1/test_object.py +9 -13
  141. openstackclient/tests/functional/volume/base.py +1 -1
  142. openstackclient/tests/functional/volume/v1/test_service.py +1 -1
  143. openstackclient/tests/functional/volume/v1/test_snapshot.py +2 -2
  144. openstackclient/tests/functional/volume/v1/test_transfer_request.py +2 -2
  145. openstackclient/tests/functional/volume/v1/test_volume_type.py +1 -1
  146. openstackclient/tests/functional/volume/v2/test_service.py +2 -2
  147. openstackclient/tests/functional/volume/v2/test_volume_backup.py +2 -2
  148. openstackclient/tests/functional/volume/v2/test_volume_snapshot.py +2 -2
  149. openstackclient/tests/functional/volume/v2/test_volume_type.py +1 -1
  150. openstackclient/tests/functional/volume/v3/test_volume_snapshot.py +2 -2
  151. openstackclient/tests/functional/volume/v3/test_volume_type.py +1 -1
  152. openstackclient/tests/unit/api/fakes.py +1 -1
  153. openstackclient/tests/unit/api/test_api.py +2 -2
  154. openstackclient/tests/unit/api/test_compute_v2.py +522 -707
  155. openstackclient/tests/unit/api/test_image_v1.py +1 -1
  156. openstackclient/tests/unit/api/test_image_v2.py +1 -1
  157. openstackclient/tests/unit/api/test_object_store_v1.py +4 -4
  158. openstackclient/tests/unit/common/test_limits.py +73 -35
  159. openstackclient/tests/unit/common/test_logs.py +2 -2
  160. openstackclient/tests/unit/common/test_module.py +4 -2
  161. openstackclient/tests/unit/common/test_project_cleanup.py +31 -6
  162. openstackclient/tests/unit/common/test_quota.py +490 -630
  163. openstackclient/tests/unit/compute/v2/fakes.py +37 -286
  164. openstackclient/tests/unit/compute/v2/test_agent.py +189 -147
  165. openstackclient/tests/unit/compute/v2/test_aggregate.py +87 -57
  166. openstackclient/tests/unit/compute/v2/test_console.py +4 -5
  167. openstackclient/tests/unit/compute/v2/test_flavor.py +59 -68
  168. openstackclient/tests/unit/compute/v2/test_host.py +83 -54
  169. openstackclient/tests/unit/compute/v2/test_hypervisor.py +57 -34
  170. openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py +2 -2
  171. openstackclient/tests/unit/compute/v2/test_keypair.py +65 -50
  172. openstackclient/tests/unit/compute/v2/test_server.py +2850 -2453
  173. openstackclient/tests/unit/compute/v2/test_server_backup.py +1 -1
  174. openstackclient/tests/unit/compute/v2/test_server_event.py +14 -39
  175. openstackclient/tests/unit/compute/v2/test_server_group.py +28 -29
  176. openstackclient/tests/unit/compute/v2/test_server_migration.py +43 -68
  177. openstackclient/tests/unit/compute/v2/test_server_volume.py +17 -34
  178. openstackclient/tests/unit/compute/v2/test_service.py +34 -52
  179. openstackclient/tests/unit/compute/v2/test_usage.py +4 -4
  180. openstackclient/tests/unit/fakes.py +12 -12
  181. openstackclient/tests/unit/identity/v2_0/fakes.py +27 -10
  182. openstackclient/tests/unit/identity/v2_0/test_catalog.py +3 -3
  183. openstackclient/tests/unit/identity/v2_0/test_endpoint.py +7 -7
  184. openstackclient/tests/unit/identity/v2_0/test_project.py +8 -8
  185. openstackclient/tests/unit/identity/v2_0/test_role.py +10 -10
  186. openstackclient/tests/unit/identity/v2_0/test_role_assignment.py +4 -4
  187. openstackclient/tests/unit/identity/v2_0/test_service.py +6 -6
  188. openstackclient/tests/unit/identity/v2_0/test_token.py +4 -4
  189. openstackclient/tests/unit/identity/v2_0/test_user.py +8 -8
  190. openstackclient/tests/unit/identity/v3/fakes.py +59 -20
  191. openstackclient/tests/unit/identity/v3/test_access_rule.py +5 -5
  192. openstackclient/tests/unit/identity/v3/test_application_credential.py +207 -230
  193. openstackclient/tests/unit/identity/v3/test_catalog.py +3 -3
  194. openstackclient/tests/unit/identity/v3/test_consumer.py +7 -8
  195. openstackclient/tests/unit/identity/v3/test_credential.py +9 -9
  196. openstackclient/tests/unit/identity/v3/test_domain.py +8 -8
  197. openstackclient/tests/unit/identity/v3/test_endpoint.py +13 -13
  198. openstackclient/tests/unit/identity/v3/test_endpoint_group.py +12 -14
  199. openstackclient/tests/unit/identity/v3/test_group.py +12 -12
  200. openstackclient/tests/unit/identity/v3/test_identity_provider.py +8 -8
  201. openstackclient/tests/unit/identity/v3/test_implied_role.py +5 -5
  202. openstackclient/tests/unit/identity/v3/test_limit.py +7 -7
  203. openstackclient/tests/unit/identity/v3/test_mappings.py +7 -7
  204. openstackclient/tests/unit/identity/v3/test_oauth.py +5 -5
  205. openstackclient/tests/unit/identity/v3/test_project.py +16 -16
  206. openstackclient/tests/unit/identity/v3/test_protocol.py +7 -7
  207. openstackclient/tests/unit/identity/v3/test_region.py +7 -7
  208. openstackclient/tests/unit/identity/v3/test_registered_limit.py +12 -13
  209. openstackclient/tests/unit/identity/v3/test_role.py +13 -13
  210. openstackclient/tests/unit/identity/v3/test_role_assignment.py +410 -331
  211. openstackclient/tests/unit/identity/v3/test_service.py +90 -94
  212. openstackclient/tests/unit/identity/v3/test_service_provider.py +7 -7
  213. openstackclient/tests/unit/identity/v3/test_token.py +4 -4
  214. openstackclient/tests/unit/identity/v3/test_trust.py +9 -9
  215. openstackclient/tests/unit/identity/v3/test_unscoped_saml.py +4 -4
  216. openstackclient/tests/unit/identity/v3/test_user.py +299 -327
  217. openstackclient/tests/unit/image/v1/test_image.py +6 -6
  218. openstackclient/tests/unit/image/v2/fakes.py +46 -9
  219. openstackclient/tests/unit/image/v2/test_cache.py +2 -2
  220. openstackclient/tests/unit/image/v2/test_image.py +3 -3
  221. openstackclient/tests/unit/image/v2/test_metadef_objects.py +62 -0
  222. openstackclient/tests/unit/image/v2/test_metadef_resource_type_association.py +131 -0
  223. openstackclient/tests/unit/integ/base.py +1 -1
  224. openstackclient/tests/unit/integ/cli/test_project.py +4 -4
  225. openstackclient/tests/unit/integ/cli/test_shell.py +7 -7
  226. openstackclient/tests/unit/network/test_common.py +12 -21
  227. openstackclient/tests/unit/network/v2/fakes.py +64 -130
  228. openstackclient/tests/unit/network/v2/test_address_group.py +15 -15
  229. openstackclient/tests/unit/network/v2/test_address_scope.py +13 -13
  230. openstackclient/tests/unit/network/v2/test_default_security_group_rule.py +49 -27
  231. openstackclient/tests/unit/network/v2/test_floating_ip_compute.py +40 -38
  232. openstackclient/tests/unit/network/v2/test_floating_ip_network.py +15 -15
  233. openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py +4 -7
  234. openstackclient/tests/unit/network/v2/test_floating_ip_pool_network.py +3 -5
  235. openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +11 -11
  236. openstackclient/tests/unit/network/v2/test_ip_availability.py +6 -6
  237. openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py +11 -21
  238. openstackclient/tests/unit/network/v2/test_local_ip.py +7 -7
  239. openstackclient/tests/unit/network/v2/test_local_ip_association.py +3 -5
  240. openstackclient/tests/unit/network/v2/test_ndp_proxy.py +13 -13
  241. openstackclient/tests/unit/network/v2/test_network.py +23 -28
  242. openstackclient/tests/unit/network/v2/test_network_agent.py +17 -21
  243. openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py +8 -8
  244. openstackclient/tests/unit/network/v2/test_network_compute.py +66 -65
  245. openstackclient/tests/unit/network/v2/test_network_flavor.py +17 -19
  246. openstackclient/tests/unit/network/v2/test_network_flavor_profile.py +13 -13
  247. openstackclient/tests/unit/network/v2/test_network_meter.py +11 -11
  248. openstackclient/tests/unit/network/v2/test_network_meter_rule.py +11 -11
  249. openstackclient/tests/unit/network/v2/test_network_qos_policy.py +11 -21
  250. openstackclient/tests/unit/network/v2/test_network_qos_rule.py +51 -77
  251. openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py +5 -9
  252. openstackclient/tests/unit/network/v2/test_network_rbac.py +12 -12
  253. openstackclient/tests/unit/network/v2/test_network_segment.py +11 -15
  254. openstackclient/tests/unit/network/v2/test_network_segment_range.py +11 -13
  255. openstackclient/tests/unit/network/v2/test_network_service_provider.py +3 -5
  256. openstackclient/tests/unit/network/v2/test_network_trunk.py +11 -11
  257. openstackclient/tests/unit/network/v2/test_port.py +22 -25
  258. openstackclient/tests/unit/network/v2/test_router.py +721 -51
  259. openstackclient/tests/unit/network/v2/test_security_group_compute.py +65 -49
  260. openstackclient/tests/unit/network/v2/test_security_group_network.py +15 -15
  261. openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py +57 -45
  262. openstackclient/tests/unit/network/v2/test_security_group_rule_network.py +11 -19
  263. openstackclient/tests/unit/network/v2/test_subnet.py +29 -25
  264. openstackclient/tests/unit/network/v2/test_subnet_pool.py +15 -15
  265. openstackclient/tests/unit/object/v1/fakes.py +1 -1
  266. openstackclient/tests/unit/object/v1/test_container.py +5 -5
  267. openstackclient/tests/unit/object/v1/test_container_all.py +6 -6
  268. openstackclient/tests/unit/object/v1/test_object.py +3 -3
  269. openstackclient/tests/unit/object/v1/test_object_all.py +5 -5
  270. openstackclient/tests/unit/test_shell.py +5 -5
  271. openstackclient/tests/unit/utils.py +4 -1
  272. openstackclient/tests/unit/volume/test_find_resource.py +2 -2
  273. openstackclient/tests/unit/volume/v1/fakes.py +5 -6
  274. openstackclient/tests/unit/volume/v1/test_volume.py +5 -4
  275. openstackclient/tests/unit/volume/v2/fakes.py +39 -259
  276. openstackclient/tests/unit/volume/v2/test_consistency_group_snapshot.py +5 -5
  277. openstackclient/tests/unit/volume/v2/test_qos_specs.py +9 -9
  278. openstackclient/tests/unit/volume/v2/test_volume.py +21 -87
  279. openstackclient/tests/unit/volume/v2/test_volume_backup.py +10 -368
  280. openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +1 -1
  281. openstackclient/tests/unit/volume/v2/test_volume_transfer_request.py +0 -44
  282. openstackclient/tests/unit/volume/v2/test_volume_type.py +6 -87
  283. openstackclient/tests/unit/volume/v3/fakes.py +505 -22
  284. openstackclient/tests/unit/volume/v3/test_block_storage_cleanup.py +2 -3
  285. openstackclient/tests/unit/volume/v3/test_block_storage_cluster.py +10 -11
  286. openstackclient/tests/unit/volume/v3/test_block_storage_log_level.py +10 -6
  287. openstackclient/tests/unit/volume/v3/test_block_storage_manage.py +25 -17
  288. openstackclient/tests/unit/volume/v3/test_block_storage_resource_filter.py +6 -32
  289. openstackclient/tests/unit/volume/v3/test_service.py +271 -0
  290. openstackclient/tests/unit/volume/v3/test_volume.py +2177 -33
  291. openstackclient/tests/unit/volume/v3/test_volume_attachment.py +48 -52
  292. openstackclient/tests/unit/volume/v3/test_volume_backup.py +892 -0
  293. openstackclient/tests/unit/volume/v3/test_volume_group.py +19 -20
  294. openstackclient/tests/unit/volume/v3/test_volume_group_snapshot.py +14 -34
  295. openstackclient/tests/unit/volume/v3/test_volume_group_type.py +13 -16
  296. openstackclient/tests/unit/volume/v3/test_volume_message.py +10 -11
  297. openstackclient/tests/unit/volume/v3/test_volume_snapshot.py +161 -0
  298. openstackclient/tests/unit/volume/v3/test_volume_transfer_request.py +425 -0
  299. openstackclient/tests/unit/volume/v3/test_volume_type.py +1109 -0
  300. openstackclient/volume/v1/qos_specs.py +7 -7
  301. openstackclient/volume/v1/service.py +2 -2
  302. openstackclient/volume/v1/volume.py +12 -12
  303. openstackclient/volume/v1/volume_backup.py +7 -7
  304. openstackclient/volume/v1/volume_snapshot.py +8 -8
  305. openstackclient/volume/v1/volume_transfer_request.py +5 -5
  306. openstackclient/volume/v1/volume_type.py +7 -7
  307. openstackclient/volume/v2/backup_record.py +2 -2
  308. openstackclient/volume/v2/consistency_group.py +7 -9
  309. openstackclient/volume/v2/consistency_group_snapshot.py +4 -12
  310. openstackclient/volume/v2/qos_specs.py +7 -7
  311. openstackclient/volume/v2/service.py +2 -2
  312. openstackclient/volume/v2/volume.py +80 -80
  313. openstackclient/volume/v2/volume_backend.py +2 -2
  314. openstackclient/volume/v2/volume_backup.py +9 -217
  315. openstackclient/volume/v2/volume_host.py +2 -2
  316. openstackclient/volume/v2/volume_snapshot.py +8 -8
  317. openstackclient/volume/v2/volume_transfer_request.py +5 -37
  318. openstackclient/volume/v2/volume_type.py +7 -89
  319. openstackclient/volume/v3/service.py +56 -0
  320. openstackclient/volume/v3/volume.py +971 -0
  321. openstackclient/volume/v3/volume_attachment.py +31 -29
  322. openstackclient/volume/v3/volume_backup.py +670 -0
  323. openstackclient/volume/v3/volume_message.py +1 -1
  324. openstackclient/volume/v3/volume_snapshot.py +97 -0
  325. openstackclient/volume/v3/volume_transfer_request.py +233 -0
  326. openstackclient/volume/v3/volume_type.py +967 -0
  327. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/AUTHORS +6 -0
  328. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/METADATA +4 -4
  329. python_openstackclient-7.1.0.dist-info/RECORD +503 -0
  330. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/entry_points.txt +33 -27
  331. python_openstackclient-7.1.0.dist-info/pbr.json +1 -0
  332. python_openstackclient-6.6.1.dist-info/RECORD +0 -489
  333. python_openstackclient-6.6.1.dist-info/pbr.json +0 -1
  334. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/LICENSE +0 -0
  335. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/WHEEL +0 -0
  336. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/top_level.txt +0 -0
@@ -11,20 +11,21 @@
11
11
  # under the License.
12
12
  #
13
13
 
14
- import copy
15
14
  from unittest import mock
16
15
 
16
+ from openstack import exceptions as sdk_exc
17
+ from openstack.identity.v3 import domain as _domain
18
+ from openstack.identity.v3 import group as _group
19
+ from openstack.identity.v3 import project as _project
20
+ from openstack.identity.v3 import role as _role
21
+ from openstack.identity.v3 import role_assignment as _role_assignment
22
+ from openstack.identity.v3 import user as _user
23
+ from openstack.test import fakes as sdk_fakes
17
24
  from openstackclient.identity.v3 import role_assignment
18
- from openstackclient.tests.unit import fakes
19
25
  from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
20
26
 
21
27
 
22
- class TestRoleAssignment(identity_fakes.TestIdentityv3):
23
- def setUp(self):
24
- super(TestRoleAssignment, self).setUp()
25
-
26
-
27
- class TestRoleAssignmentList(TestRoleAssignment):
28
+ class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
28
29
  columns = (
29
30
  'Role',
30
31
  'User',
@@ -36,52 +37,61 @@ class TestRoleAssignmentList(TestRoleAssignment):
36
37
  )
37
38
 
38
39
  def setUp(self):
39
- super(TestRoleAssignment, self).setUp()
40
-
41
- # Get a shortcut to the UserManager Mock
42
- self.users_mock = self.app.client_manager.identity.users
43
- self.users_mock.reset_mock()
44
-
45
- # Get a shortcut to the GroupManager Mock
46
- self.groups_mock = self.app.client_manager.identity.groups
47
- self.groups_mock.reset_mock()
48
-
49
- # Get a shortcut to the DomainManager Mock
50
- self.domains_mock = self.app.client_manager.identity.domains
51
- self.domains_mock.reset_mock()
52
-
53
- # Get a shortcut to the ProjectManager Mock
54
- self.projects_mock = self.app.client_manager.identity.projects
55
- self.projects_mock.reset_mock()
56
-
57
- # Get a shortcut to the RoleManager Mock
58
- self.roles_mock = self.app.client_manager.identity.roles
59
- self.roles_mock.reset_mock()
60
-
61
- self.role_assignments_mock = (
62
- self.app.client_manager.identity.role_assignments
40
+ super().setUp()
41
+
42
+ self.user = sdk_fakes.generate_fake_resource(_user.User)
43
+ self.group = sdk_fakes.generate_fake_resource(_group.Group)
44
+ self.domain = sdk_fakes.generate_fake_resource(_domain.Domain)
45
+ self.project = sdk_fakes.generate_fake_resource(_project.Project)
46
+ self.role = sdk_fakes.generate_fake_resource(_role.Role)
47
+ self.assignment_with_project_id_and_user_id = (
48
+ sdk_fakes.generate_fake_resource(
49
+ resource_type=_role_assignment.RoleAssignment,
50
+ role={'id': self.role.id},
51
+ scope={'project': {'id': self.project.id}},
52
+ user={'id': self.user.id},
53
+ )
54
+ )
55
+ self.assignment_with_project_id_and_group_id = (
56
+ sdk_fakes.generate_fake_resource(
57
+ resource_type=_role_assignment.RoleAssignment,
58
+ role={'id': self.role.id},
59
+ scope={'project': {'id': self.project.id}},
60
+ group={'id': self.group.id},
61
+ )
63
62
  )
64
- self.role_assignments_mock.reset_mock()
63
+ self.assignment_with_domain_id_and_user_id = (
64
+ sdk_fakes.generate_fake_resource(
65
+ resource_type=_role_assignment.RoleAssignment,
66
+ role={'id': self.role.id},
67
+ scope={'domain': {'id': self.domain.id}},
68
+ user={'id': self.user.id},
69
+ )
70
+ )
71
+ self.assignment_with_domain_id_and_group_id = (
72
+ sdk_fakes.generate_fake_resource(
73
+ resource_type=_role_assignment.RoleAssignment,
74
+ role={'id': self.role.id},
75
+ scope={'domain': {'id': self.domain.id}},
76
+ group={'id': self.group.id},
77
+ )
78
+ )
79
+
80
+ self.identity_sdk_client.find_user.return_value = self.user
81
+ self.identity_sdk_client.find_group.return_value = self.group
82
+ self.identity_sdk_client.find_project.return_value = self.project
83
+ self.identity_sdk_client.find_domain.return_value = self.domain
84
+ self.identity_sdk_client.find_role.return_value = self.role
65
85
 
66
86
  # Get the command object to test
67
87
  self.cmd = role_assignment.ListRoleAssignment(self.app, None)
68
88
 
69
89
  def test_role_assignment_list_no_filters(self):
70
- self.role_assignments_mock.list.return_value = [
71
- fakes.FakeResource(
72
- None,
73
- copy.deepcopy(
74
- identity_fakes.ASSIGNMENT_WITH_PROJECT_ID_AND_USER_ID
75
- ),
76
- loaded=True,
77
- ),
78
- fakes.FakeResource(
79
- None,
80
- copy.deepcopy(
81
- identity_fakes.ASSIGNMENT_WITH_PROJECT_ID_AND_GROUP_ID
82
- ),
83
- loaded=True,
84
- ),
90
+ self.identity_sdk_client.role_assignments.return_value = [
91
+ self.assignment_with_project_id_and_user_id,
92
+ self.assignment_with_project_id_and_group_id,
93
+ self.assignment_with_domain_id_and_user_id,
94
+ self.assignment_with_domain_id_and_group_id,
85
95
  ]
86
96
 
87
97
  arglist = []
@@ -93,35 +103,53 @@ class TestRoleAssignmentList(TestRoleAssignment):
93
103
  # containing the data to be listed.
94
104
  columns, data = self.cmd.take_action(parsed_args)
95
105
 
96
- self.role_assignments_mock.list.assert_called_with(
97
- domain=None,
98
- system=None,
99
- group=None,
100
- effective=False,
101
- role=None,
102
- user=None,
103
- project=None,
104
- os_inherit_extension_inherited_to=None,
105
- include_names=False,
106
+ self.identity_sdk_client.role_assignments.assert_called_with(
107
+ role_id=None,
108
+ user_id=None,
109
+ group_id=None,
110
+ scope_project_id=None,
111
+ scope_domain_id=None,
112
+ scope_system=None,
113
+ effective=None,
114
+ include_names=None,
115
+ inherited_to=None,
106
116
  )
107
117
 
108
118
  self.assertEqual(self.columns, columns)
109
119
  datalist = (
110
120
  (
111
- identity_fakes.role_id,
112
- identity_fakes.user_id,
121
+ self.role.id,
122
+ self.user.id,
123
+ '',
124
+ self.project.id,
125
+ '',
126
+ '',
127
+ False,
128
+ ),
129
+ (
130
+ self.role.id,
131
+ '',
132
+ self.group.id,
133
+ self.project.id,
134
+ '',
135
+ '',
136
+ False,
137
+ ),
138
+ (
139
+ self.role.id,
140
+ self.user.id,
113
141
  '',
114
- identity_fakes.project_id,
115
142
  '',
143
+ self.domain.id,
116
144
  '',
117
145
  False,
118
146
  ),
119
147
  (
120
- identity_fakes.role_id,
148
+ self.role.id,
121
149
  '',
122
- identity_fakes.group_id,
123
- identity_fakes.project_id,
150
+ self.group.id,
124
151
  '',
152
+ self.domain.id,
125
153
  '',
126
154
  False,
127
155
  ),
@@ -129,32 +157,85 @@ class TestRoleAssignmentList(TestRoleAssignment):
129
157
  self.assertEqual(datalist, tuple(data))
130
158
 
131
159
  def test_role_assignment_list_user(self):
132
- self.role_assignments_mock.list.return_value = [
133
- fakes.FakeResource(
134
- None,
135
- copy.deepcopy(
136
- identity_fakes.ASSIGNMENT_WITH_DOMAIN_ID_AND_USER_ID
137
- ),
138
- loaded=True,
160
+ self.identity_sdk_client.role_assignments.return_value = [
161
+ self.assignment_with_domain_id_and_user_id,
162
+ self.assignment_with_project_id_and_user_id,
163
+ ]
164
+
165
+ arglist = ['--user', self.user.name]
166
+ verifylist = [
167
+ ('user', self.user.name),
168
+ ('group', None),
169
+ ('system', None),
170
+ ('domain', None),
171
+ ('project', None),
172
+ ('role', None),
173
+ ('effective', None),
174
+ ('inherited', False),
175
+ ('names', False),
176
+ ]
177
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
178
+
179
+ # In base command class Lister in cliff, abstract method take_action()
180
+ # returns a tuple containing the column names and an iterable
181
+ # containing the data to be listed.
182
+ columns, data = self.cmd.take_action(parsed_args)
183
+
184
+ self.identity_sdk_client.role_assignments.assert_called_with(
185
+ role_id=None,
186
+ user_id=self.user.id,
187
+ group_id=None,
188
+ scope_project_id=None,
189
+ scope_domain_id=None,
190
+ scope_system=None,
191
+ effective=None,
192
+ include_names=None,
193
+ inherited_to=None,
194
+ )
195
+
196
+ self.assertEqual(self.columns, columns)
197
+ datalist = (
198
+ (
199
+ self.role.id,
200
+ self.user.id,
201
+ '',
202
+ '',
203
+ self.domain.id,
204
+ '',
205
+ False,
139
206
  ),
140
- fakes.FakeResource(
141
- None,
142
- copy.deepcopy(
143
- identity_fakes.ASSIGNMENT_WITH_PROJECT_ID_AND_USER_ID
144
- ),
145
- loaded=True,
207
+ (
208
+ self.role.id,
209
+ self.user.id,
210
+ '',
211
+ self.project.id,
212
+ '',
213
+ '',
214
+ False,
146
215
  ),
216
+ )
217
+ self.assertEqual(datalist, tuple(data))
218
+
219
+ @mock.patch.object(_user.User, 'find')
220
+ def test_role_assignment_list_user_not_found(self, find_mock):
221
+ self.identity_sdk_client.role_assignments.return_value = [
222
+ self.assignment_with_domain_id_and_user_id,
223
+ self.assignment_with_project_id_and_user_id,
224
+ ]
225
+ self.identity_sdk_client.find_user.side_effect = [
226
+ sdk_exc.ForbiddenException,
227
+ sdk_exc.ForbiddenException,
147
228
  ]
148
229
 
149
- arglist = ['--user', identity_fakes.user_name]
230
+ arglist = ['--user', self.user.id]
150
231
  verifylist = [
151
- ('user', identity_fakes.user_name),
232
+ ('user', self.user.id),
152
233
  ('group', None),
153
234
  ('system', None),
154
235
  ('domain', None),
155
236
  ('project', None),
156
237
  ('role', None),
157
- ('effective', False),
238
+ ('effective', None),
158
239
  ('inherited', False),
159
240
  ('names', False),
160
241
  ]
@@ -165,34 +246,34 @@ class TestRoleAssignmentList(TestRoleAssignment):
165
246
  # containing the data to be listed.
166
247
  columns, data = self.cmd.take_action(parsed_args)
167
248
 
168
- self.role_assignments_mock.list.assert_called_with(
169
- domain=None,
170
- system=None,
171
- user=self.users_mock.get(),
172
- group=None,
173
- project=None,
174
- role=None,
175
- effective=False,
176
- os_inherit_extension_inherited_to=None,
177
- include_names=False,
249
+ self.identity_sdk_client.role_assignments.assert_called_with(
250
+ role_id=None,
251
+ user_id=self.user.id,
252
+ group_id=None,
253
+ scope_project_id=None,
254
+ scope_domain_id=None,
255
+ scope_system=None,
256
+ effective=None,
257
+ include_names=None,
258
+ inherited_to=None,
178
259
  )
179
260
 
180
261
  self.assertEqual(self.columns, columns)
181
262
  datalist = (
182
263
  (
183
- identity_fakes.role_id,
184
- identity_fakes.user_id,
264
+ self.role.id,
265
+ self.user.id,
185
266
  '',
186
267
  '',
187
- identity_fakes.domain_id,
268
+ self.domain.id,
188
269
  '',
189
270
  False,
190
271
  ),
191
272
  (
192
- identity_fakes.role_id,
193
- identity_fakes.user_id,
273
+ self.role.id,
274
+ self.user.id,
194
275
  '',
195
- identity_fakes.project_id,
276
+ self.project.id,
196
277
  '',
197
278
  '',
198
279
  False,
@@ -201,32 +282,20 @@ class TestRoleAssignmentList(TestRoleAssignment):
201
282
  self.assertEqual(datalist, tuple(data))
202
283
 
203
284
  def test_role_assignment_list_group(self):
204
- self.role_assignments_mock.list.return_value = [
205
- fakes.FakeResource(
206
- None,
207
- copy.deepcopy(
208
- identity_fakes.ASSIGNMENT_WITH_DOMAIN_ID_AND_GROUP_ID
209
- ),
210
- loaded=True,
211
- ),
212
- fakes.FakeResource(
213
- None,
214
- copy.deepcopy(
215
- identity_fakes.ASSIGNMENT_WITH_PROJECT_ID_AND_GROUP_ID
216
- ),
217
- loaded=True,
218
- ),
285
+ self.identity_sdk_client.role_assignments.return_value = [
286
+ self.assignment_with_domain_id_and_group_id,
287
+ self.assignment_with_project_id_and_group_id,
219
288
  ]
220
289
 
221
- arglist = ['--group', identity_fakes.group_name]
290
+ arglist = ['--group', self.group.name]
222
291
  verifylist = [
223
292
  ('user', None),
224
- ('group', identity_fakes.group_name),
293
+ ('group', self.group.name),
225
294
  ('system', None),
226
295
  ('domain', None),
227
296
  ('project', None),
228
297
  ('role', None),
229
- ('effective', False),
298
+ ('effective', None),
230
299
  ('inherited', False),
231
300
  ('names', False),
232
301
  ]
@@ -237,34 +306,34 @@ class TestRoleAssignmentList(TestRoleAssignment):
237
306
  # containing the data to be listed.
238
307
  columns, data = self.cmd.take_action(parsed_args)
239
308
 
240
- self.role_assignments_mock.list.assert_called_with(
241
- domain=None,
242
- system=None,
243
- group=self.groups_mock.get(),
244
- effective=False,
245
- project=None,
246
- role=None,
247
- user=None,
248
- os_inherit_extension_inherited_to=None,
249
- include_names=False,
309
+ self.identity_sdk_client.role_assignments.assert_called_with(
310
+ role_id=None,
311
+ user_id=None,
312
+ group_id=self.group.id,
313
+ scope_project_id=None,
314
+ scope_domain_id=None,
315
+ scope_system=None,
316
+ effective=None,
317
+ include_names=None,
318
+ inherited_to=None,
250
319
  )
251
320
 
252
321
  self.assertEqual(self.columns, columns)
253
322
  datalist = (
254
323
  (
255
- identity_fakes.role_id,
324
+ self.role.id,
256
325
  '',
257
- identity_fakes.group_id,
326
+ self.group.id,
258
327
  '',
259
- identity_fakes.domain_id,
328
+ self.domain.id,
260
329
  '',
261
330
  False,
262
331
  ),
263
332
  (
264
- identity_fakes.role_id,
333
+ self.role.id,
265
334
  '',
266
- identity_fakes.group_id,
267
- identity_fakes.project_id,
335
+ self.group.id,
336
+ self.project.id,
268
337
  '',
269
338
  '',
270
339
  False,
@@ -273,32 +342,20 @@ class TestRoleAssignmentList(TestRoleAssignment):
273
342
  self.assertEqual(datalist, tuple(data))
274
343
 
275
344
  def test_role_assignment_list_domain(self):
276
- self.role_assignments_mock.list.return_value = [
277
- fakes.FakeResource(
278
- None,
279
- copy.deepcopy(
280
- identity_fakes.ASSIGNMENT_WITH_DOMAIN_ID_AND_USER_ID
281
- ),
282
- loaded=True,
283
- ),
284
- fakes.FakeResource(
285
- None,
286
- copy.deepcopy(
287
- identity_fakes.ASSIGNMENT_WITH_DOMAIN_ID_AND_GROUP_ID
288
- ),
289
- loaded=True,
290
- ),
345
+ self.identity_sdk_client.role_assignments.return_value = [
346
+ self.assignment_with_domain_id_and_user_id,
347
+ self.assignment_with_domain_id_and_group_id,
291
348
  ]
292
349
 
293
- arglist = ['--domain', identity_fakes.domain_name]
350
+ arglist = ['--domain', self.domain.name]
294
351
  verifylist = [
295
352
  ('user', None),
296
353
  ('group', None),
297
354
  ('system', None),
298
- ('domain', identity_fakes.domain_name),
355
+ ('domain', self.domain.name),
299
356
  ('project', None),
300
357
  ('role', None),
301
- ('effective', False),
358
+ ('effective', None),
302
359
  ('inherited', False),
303
360
  ('names', False),
304
361
  ]
@@ -309,35 +366,35 @@ class TestRoleAssignmentList(TestRoleAssignment):
309
366
  # containing the data to be listed.
310
367
  columns, data = self.cmd.take_action(parsed_args)
311
368
 
312
- self.role_assignments_mock.list.assert_called_with(
313
- domain=self.domains_mock.get(),
314
- system=None,
315
- group=None,
316
- effective=False,
317
- project=None,
318
- role=None,
319
- user=None,
320
- os_inherit_extension_inherited_to=None,
321
- include_names=False,
369
+ self.identity_sdk_client.role_assignments.assert_called_with(
370
+ role_id=None,
371
+ user_id=None,
372
+ group_id=None,
373
+ scope_project_id=None,
374
+ scope_domain_id=self.domain.id,
375
+ scope_system=None,
376
+ effective=None,
377
+ include_names=None,
378
+ inherited_to=None,
322
379
  )
323
380
 
324
381
  self.assertEqual(self.columns, columns)
325
382
  datalist = (
326
383
  (
327
- identity_fakes.role_id,
328
- identity_fakes.user_id,
384
+ self.role.id,
385
+ self.user.id,
329
386
  '',
330
387
  '',
331
- identity_fakes.domain_id,
388
+ self.domain.id,
332
389
  '',
333
390
  False,
334
391
  ),
335
392
  (
336
- identity_fakes.role_id,
393
+ self.role.id,
337
394
  '',
338
- identity_fakes.group_id,
395
+ self.group.id,
339
396
  '',
340
- identity_fakes.domain_id,
397
+ self.domain.id,
341
398
  '',
342
399
  False,
343
400
  ),
@@ -345,32 +402,20 @@ class TestRoleAssignmentList(TestRoleAssignment):
345
402
  self.assertEqual(datalist, tuple(data))
346
403
 
347
404
  def test_role_assignment_list_project(self):
348
- self.role_assignments_mock.list.return_value = [
349
- fakes.FakeResource(
350
- None,
351
- copy.deepcopy(
352
- identity_fakes.ASSIGNMENT_WITH_PROJECT_ID_AND_USER_ID
353
- ),
354
- loaded=True,
355
- ),
356
- fakes.FakeResource(
357
- None,
358
- copy.deepcopy(
359
- identity_fakes.ASSIGNMENT_WITH_PROJECT_ID_AND_GROUP_ID
360
- ),
361
- loaded=True,
362
- ),
405
+ self.identity_sdk_client.role_assignments.return_value = [
406
+ self.assignment_with_project_id_and_user_id,
407
+ self.assignment_with_project_id_and_group_id,
363
408
  ]
364
409
 
365
- arglist = ['--project', identity_fakes.project_name]
410
+ arglist = ['--project', self.project.name]
366
411
  verifylist = [
367
412
  ('user', None),
368
413
  ('group', None),
369
414
  ('system', None),
370
415
  ('domain', None),
371
- ('project', identity_fakes.project_name),
416
+ ('project', self.project.name),
372
417
  ('role', None),
373
- ('effective', False),
418
+ ('effective', None),
374
419
  ('inherited', False),
375
420
  ('names', False),
376
421
  ]
@@ -381,34 +426,34 @@ class TestRoleAssignmentList(TestRoleAssignment):
381
426
  # containing the data to be listed.
382
427
  columns, data = self.cmd.take_action(parsed_args)
383
428
 
384
- self.role_assignments_mock.list.assert_called_with(
385
- domain=None,
386
- system=None,
387
- group=None,
388
- effective=False,
389
- project=self.projects_mock.get(),
390
- role=None,
391
- user=None,
392
- os_inherit_extension_inherited_to=None,
393
- include_names=False,
429
+ self.identity_sdk_client.role_assignments.assert_called_with(
430
+ role_id=None,
431
+ user_id=None,
432
+ group_id=None,
433
+ scope_project_id=self.project.id,
434
+ scope_domain_id=None,
435
+ scope_system=None,
436
+ effective=None,
437
+ include_names=None,
438
+ inherited_to=None,
394
439
  )
395
440
 
396
441
  self.assertEqual(self.columns, columns)
397
442
  datalist = (
398
443
  (
399
- identity_fakes.role_id,
400
- identity_fakes.user_id,
444
+ self.role.id,
445
+ self.user.id,
401
446
  '',
402
- identity_fakes.project_id,
447
+ self.project.id,
403
448
  '',
404
449
  '',
405
450
  False,
406
451
  ),
407
452
  (
408
- identity_fakes.role_id,
453
+ self.role.id,
409
454
  '',
410
- identity_fakes.group_id,
411
- identity_fakes.project_id,
455
+ self.group.id,
456
+ self.project.id,
412
457
  '',
413
458
  '',
414
459
  False,
@@ -418,17 +463,11 @@ class TestRoleAssignmentList(TestRoleAssignment):
418
463
 
419
464
  def test_role_assignment_list_def_creds(self):
420
465
  auth_ref = self.app.client_manager.auth_ref = mock.Mock()
421
- auth_ref.project_id.return_value = identity_fakes.project_id
422
- auth_ref.user_id.return_value = identity_fakes.user_id
423
-
424
- self.role_assignments_mock.list.return_value = [
425
- fakes.FakeResource(
426
- None,
427
- copy.deepcopy(
428
- identity_fakes.ASSIGNMENT_WITH_PROJECT_ID_AND_USER_ID
429
- ),
430
- loaded=True,
431
- ),
466
+ auth_ref.project_id.return_value = self.project.id
467
+ auth_ref.user_id.return_value = self.user.id
468
+
469
+ self.identity_sdk_client.role_assignments.return_value = [
470
+ self.assignment_with_project_id_and_user_id,
432
471
  ]
433
472
 
434
473
  arglist = [
@@ -442,7 +481,7 @@ class TestRoleAssignmentList(TestRoleAssignment):
442
481
  ('domain', None),
443
482
  ('project', None),
444
483
  ('role', None),
445
- ('effective', False),
484
+ ('effective', None),
446
485
  ('inherited', False),
447
486
  ('names', False),
448
487
  ('authuser', True),
@@ -455,25 +494,25 @@ class TestRoleAssignmentList(TestRoleAssignment):
455
494
  # containing the data to be listed.
456
495
  columns, data = self.cmd.take_action(parsed_args)
457
496
 
458
- self.role_assignments_mock.list.assert_called_with(
459
- domain=None,
460
- system=None,
461
- user=self.users_mock.get(),
462
- group=None,
463
- project=self.projects_mock.get(),
464
- role=None,
465
- effective=False,
466
- os_inherit_extension_inherited_to=None,
467
- include_names=False,
497
+ self.identity_sdk_client.role_assignments.assert_called_with(
498
+ role_id=None,
499
+ user_id=self.user.id,
500
+ group_id=None,
501
+ scope_project_id=self.project.id,
502
+ scope_domain_id=None,
503
+ scope_system=None,
504
+ effective=None,
505
+ include_names=None,
506
+ inherited_to=None,
468
507
  )
469
508
 
470
509
  self.assertEqual(self.columns, columns)
471
510
  datalist = (
472
511
  (
473
- identity_fakes.role_id,
474
- identity_fakes.user_id,
512
+ self.role.id,
513
+ self.user.id,
475
514
  '',
476
- identity_fakes.project_id,
515
+ self.project.id,
477
516
  '',
478
517
  '',
479
518
  False,
@@ -482,21 +521,9 @@ class TestRoleAssignmentList(TestRoleAssignment):
482
521
  self.assertEqual(datalist, tuple(data))
483
522
 
484
523
  def test_role_assignment_list_effective(self):
485
- self.role_assignments_mock.list.return_value = [
486
- fakes.FakeResource(
487
- None,
488
- copy.deepcopy(
489
- identity_fakes.ASSIGNMENT_WITH_PROJECT_ID_AND_USER_ID
490
- ),
491
- loaded=True,
492
- ),
493
- fakes.FakeResource(
494
- None,
495
- copy.deepcopy(
496
- identity_fakes.ASSIGNMENT_WITH_DOMAIN_ID_AND_USER_ID
497
- ),
498
- loaded=True,
499
- ),
524
+ self.identity_sdk_client.role_assignments.return_value = [
525
+ self.assignment_with_project_id_and_user_id,
526
+ self.assignment_with_domain_id_and_user_id,
500
527
  ]
501
528
 
502
529
  arglist = ['--effective']
@@ -518,35 +545,35 @@ class TestRoleAssignmentList(TestRoleAssignment):
518
545
  # containing the data to be listed.
519
546
  columns, data = self.cmd.take_action(parsed_args)
520
547
 
521
- self.role_assignments_mock.list.assert_called_with(
522
- domain=None,
523
- system=None,
524
- group=None,
548
+ self.identity_sdk_client.role_assignments.assert_called_with(
549
+ role_id=None,
550
+ user_id=None,
551
+ group_id=None,
552
+ scope_project_id=None,
553
+ scope_domain_id=None,
554
+ scope_system=None,
525
555
  effective=True,
526
- project=None,
527
- role=None,
528
- user=None,
529
- os_inherit_extension_inherited_to=None,
530
- include_names=False,
556
+ include_names=None,
557
+ inherited_to=None,
531
558
  )
532
559
 
533
560
  self.assertEqual(self.columns, columns)
534
561
  datalist = (
535
562
  (
536
- identity_fakes.role_id,
537
- identity_fakes.user_id,
563
+ self.role.id,
564
+ self.user.id,
538
565
  '',
539
- identity_fakes.project_id,
566
+ self.project.id,
540
567
  '',
541
568
  '',
542
569
  False,
543
570
  ),
544
571
  (
545
- identity_fakes.role_id,
546
- identity_fakes.user_id,
572
+ self.role.id,
573
+ self.user.id,
547
574
  '',
548
575
  '',
549
- identity_fakes.domain_id,
576
+ self.domain.id,
550
577
  '',
551
578
  False,
552
579
  ),
@@ -554,15 +581,31 @@ class TestRoleAssignmentList(TestRoleAssignment):
554
581
  self.assertEqual(tuple(data), datalist)
555
582
 
556
583
  def test_role_assignment_list_inherited(self):
557
- fake_assignment_a = copy.deepcopy(
558
- identity_fakes.ASSIGNMENT_WITH_PROJECT_ID_AND_USER_ID_INHERITED
584
+ assignment_with_project_id_and_user_id_inherited = (
585
+ sdk_fakes.generate_fake_resource(
586
+ resource_type=_role_assignment.RoleAssignment,
587
+ role={'id': self.role.id},
588
+ scope={
589
+ 'project': {'id': self.project.id},
590
+ 'OS-INHERIT:inherited_to': 'projects',
591
+ },
592
+ user={'id': self.user.id},
593
+ )
559
594
  )
560
- fake_assignment_b = copy.deepcopy(
561
- identity_fakes.ASSIGNMENT_WITH_DOMAIN_ID_AND_USER_ID_INHERITED
595
+ assignment_with_domain_id_and_group_id_inherited = (
596
+ sdk_fakes.generate_fake_resource(
597
+ resource_type=_role_assignment.RoleAssignment,
598
+ role={'id': self.role.id},
599
+ scope={
600
+ 'domain': {'id': self.domain.id},
601
+ 'OS-INHERIT:inherited_to': 'projects',
602
+ },
603
+ group={'id': self.group.id},
604
+ )
562
605
  )
563
- self.role_assignments_mock.list.return_value = [
564
- fakes.FakeResource(None, fake_assignment_a, loaded=True),
565
- fakes.FakeResource(None, fake_assignment_b, loaded=True),
606
+ self.identity_sdk_client.role_assignments.return_value = [
607
+ assignment_with_project_id_and_user_id_inherited,
608
+ assignment_with_domain_id_and_group_id_inherited,
566
609
  ]
567
610
 
568
611
  arglist = ['--inherited']
@@ -573,7 +616,7 @@ class TestRoleAssignmentList(TestRoleAssignment):
573
616
  ('domain', None),
574
617
  ('project', None),
575
618
  ('role', None),
576
- ('effective', False),
619
+ ('effective', None),
577
620
  ('inherited', True),
578
621
  ('names', False),
579
622
  ]
@@ -584,35 +627,35 @@ class TestRoleAssignmentList(TestRoleAssignment):
584
627
  # containing the data to be listed.
585
628
  columns, data = self.cmd.take_action(parsed_args)
586
629
 
587
- self.role_assignments_mock.list.assert_called_with(
588
- domain=None,
589
- system=None,
590
- group=None,
591
- effective=False,
592
- project=None,
593
- role=None,
594
- user=None,
595
- os_inherit_extension_inherited_to='projects',
596
- include_names=False,
630
+ self.identity_sdk_client.role_assignments.assert_called_with(
631
+ role_id=None,
632
+ user_id=None,
633
+ group_id=None,
634
+ scope_project_id=None,
635
+ scope_domain_id=None,
636
+ scope_system=None,
637
+ effective=None,
638
+ include_names=None,
639
+ inherited_to='projects',
597
640
  )
598
641
 
599
642
  self.assertEqual(self.columns, columns)
600
643
  datalist = (
601
644
  (
602
- identity_fakes.role_id,
603
- identity_fakes.user_id,
645
+ self.role.id,
646
+ self.user.id,
604
647
  '',
605
- identity_fakes.project_id,
648
+ self.project.id,
606
649
  '',
607
650
  '',
608
651
  True,
609
652
  ),
610
653
  (
611
- identity_fakes.role_id,
612
- identity_fakes.user_id,
654
+ self.role.id,
613
655
  '',
656
+ self.group.id,
614
657
  '',
615
- identity_fakes.domain_id,
658
+ self.domain.id,
616
659
  '',
617
660
  True,
618
661
  ),
@@ -620,15 +663,45 @@ class TestRoleAssignmentList(TestRoleAssignment):
620
663
  self.assertEqual(datalist, tuple(data))
621
664
 
622
665
  def test_role_assignment_list_include_names(self):
623
- fake_role_assignment_a = copy.deepcopy(
624
- identity_fakes.ASSIGNMENT_WITH_PROJECT_ID_AND_USER_ID_INCLUDE_NAMES
666
+ assignment_with_project_id_and_user_id_include_names = (
667
+ sdk_fakes.generate_fake_resource(
668
+ resource_type=_role_assignment.RoleAssignment,
669
+ role={'id': self.role.id, 'name': self.role.name},
670
+ scope={
671
+ 'project': {
672
+ 'domain': {
673
+ 'id': self.domain.id,
674
+ 'name': self.domain.name,
675
+ },
676
+ 'id': self.project.id,
677
+ 'name': self.project.name,
678
+ }
679
+ },
680
+ user={
681
+ 'domain': {'id': self.domain.id, 'name': self.domain.name},
682
+ 'id': self.user.id,
683
+ 'name': self.user.name,
684
+ },
685
+ )
625
686
  )
626
- fake_role_assignment_b = copy.deepcopy(
627
- identity_fakes.ASSIGNMENT_WITH_DOMAIN_ID_AND_USER_ID_INCLUDE_NAMES
687
+ assignment_with_domain_id_and_group_id_include_names = (
688
+ sdk_fakes.generate_fake_resource(
689
+ resource_type=_role_assignment.RoleAssignment,
690
+ role={'id': self.role.id, 'name': self.role.name},
691
+ scope={
692
+ 'domain': {'id': self.domain.id, 'name': self.domain.name}
693
+ },
694
+ group={
695
+ 'domain': {'id': self.domain.id, 'name': self.domain.name},
696
+ 'id': self.group.id,
697
+ 'name': self.group.name,
698
+ },
699
+ )
628
700
  )
629
- self.role_assignments_mock.list.return_value = [
630
- fakes.FakeResource(None, fake_role_assignment_a, loaded=True),
631
- fakes.FakeResource(None, fake_role_assignment_b, loaded=True),
701
+
702
+ self.identity_sdk_client.role_assignments.return_value = [
703
+ assignment_with_project_id_and_user_id_include_names,
704
+ assignment_with_domain_id_and_group_id_include_names,
632
705
  ]
633
706
 
634
707
  arglist = ['--names']
@@ -639,7 +712,7 @@ class TestRoleAssignmentList(TestRoleAssignment):
639
712
  ('domain', None),
640
713
  ('project', None),
641
714
  ('role', None),
642
- ('effective', False),
715
+ ('effective', None),
643
716
  ('inherited', False),
644
717
  ('names', True),
645
718
  ]
@@ -652,16 +725,16 @@ class TestRoleAssignmentList(TestRoleAssignment):
652
725
  # correct information
653
726
  columns, data = self.cmd.take_action(parsed_args)
654
727
 
655
- self.role_assignments_mock.list.assert_called_with(
656
- domain=None,
657
- system=None,
658
- group=None,
659
- effective=False,
660
- project=None,
661
- role=None,
662
- user=None,
663
- os_inherit_extension_inherited_to=None,
728
+ self.identity_sdk_client.role_assignments.assert_called_with(
729
+ role_id=None,
730
+ user_id=None,
731
+ group_id=None,
732
+ scope_project_id=None,
733
+ scope_domain_id=None,
734
+ scope_system=None,
735
+ effective=None,
664
736
  include_names=True,
737
+ inherited_to=None,
665
738
  )
666
739
 
667
740
  collist = (
@@ -675,48 +748,54 @@ class TestRoleAssignmentList(TestRoleAssignment):
675
748
  )
676
749
  self.assertEqual(columns, collist)
677
750
 
678
- datalist1 = (
751
+ datalist = (
679
752
  (
680
- identity_fakes.role_name,
681
- '@'.join(
682
- [identity_fakes.user_name, identity_fakes.domain_name]
683
- ),
753
+ self.role.name,
754
+ '@'.join([self.user.name, self.domain.name]),
684
755
  '',
685
- '@'.join(
686
- [identity_fakes.project_name, identity_fakes.domain_name]
687
- ),
756
+ '@'.join([self.project.name, self.domain.name]),
688
757
  '',
689
758
  '',
690
759
  False,
691
760
  ),
692
761
  (
693
- identity_fakes.role_name,
694
- '@'.join(
695
- [identity_fakes.user_name, identity_fakes.domain_name]
696
- ),
762
+ self.role.name,
697
763
  '',
764
+ '@'.join([self.group.name, self.domain.name]),
698
765
  '',
699
- identity_fakes.domain_name,
766
+ self.domain.name,
700
767
  '',
701
768
  False,
702
769
  ),
703
770
  )
704
- self.assertEqual(tuple(data), datalist1)
771
+ self.assertEqual(datalist, tuple(data))
705
772
 
706
773
  def test_role_assignment_list_domain_role(self):
707
- self.role_assignments_mock.list.return_value = [
708
- fakes.FakeResource(
709
- None,
710
- copy.deepcopy(identity_fakes.ASSIGNMENT_WITH_DOMAIN_ROLE),
711
- loaded=True,
712
- ),
774
+ domain_2 = sdk_fakes.generate_fake_resource(_domain.Domain)
775
+ # Create new role with same name but different domain
776
+ role_2 = sdk_fakes.generate_fake_resource(
777
+ resource_type=_role.Role,
778
+ domain_id=domain_2.id,
779
+ name=self.role.name,
780
+ )
781
+ assignment_with_role_domain_2 = sdk_fakes.generate_fake_resource(
782
+ resource_type=_role_assignment.RoleAssignment,
783
+ role={'id': role_2.id, 'name': role_2.name},
784
+ scope={'project': {'id': self.project.id}},
785
+ user={'id': self.user.id},
786
+ )
787
+
788
+ self.identity_sdk_client.find_domain.return_value = domain_2
789
+ self.identity_sdk_client.find_role.return_value = role_2
790
+ self.identity_sdk_client.role_assignments.return_value = [
791
+ assignment_with_role_domain_2,
713
792
  ]
714
793
 
715
794
  arglist = [
716
795
  '--role',
717
- identity_fakes.ROLE_2['name'],
796
+ role_2.name,
718
797
  '--role-domain',
719
- identity_fakes.domain_name,
798
+ domain_2.name,
720
799
  ]
721
800
  verifylist = [
722
801
  ('user', None),
@@ -724,8 +803,8 @@ class TestRoleAssignmentList(TestRoleAssignment):
724
803
  ('system', None),
725
804
  ('domain', None),
726
805
  ('project', None),
727
- ('role', identity_fakes.ROLE_2['name']),
728
- ('effective', False),
806
+ ('role', role_2.name),
807
+ ('effective', None),
729
808
  ('inherited', False),
730
809
  ('names', False),
731
810
  ]
@@ -736,26 +815,26 @@ class TestRoleAssignmentList(TestRoleAssignment):
736
815
  # containing the data to be listed.
737
816
  columns, data = self.cmd.take_action(parsed_args)
738
817
 
739
- self.role_assignments_mock.list.assert_called_with(
740
- domain=None,
741
- system=None,
742
- user=None,
743
- group=None,
744
- project=None,
745
- role=self.roles_mock.get(),
746
- effective=False,
747
- os_inherit_extension_inherited_to=None,
748
- include_names=False,
818
+ self.identity_sdk_client.role_assignments.assert_called_with(
819
+ role_id=role_2.id,
820
+ user_id=None,
821
+ group_id=None,
822
+ scope_project_id=None,
823
+ scope_domain_id=None,
824
+ scope_system=None,
825
+ effective=None,
826
+ include_names=None,
827
+ inherited_to=None,
749
828
  )
750
829
 
751
830
  self.assertEqual(self.columns, columns)
752
831
  datalist = (
753
832
  (
754
- identity_fakes.ROLE_2['id'],
755
- identity_fakes.user_id,
833
+ role_2.id,
834
+ self.user.id,
756
835
  '',
836
+ self.project.id,
757
837
  '',
758
- identity_fakes.domain_id,
759
838
  '',
760
839
  False,
761
840
  ),