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
@@ -17,7 +17,6 @@ from unittest import mock
17
17
  from unittest.mock import call
18
18
 
19
19
  from openstack import exceptions as sdk_exceptions
20
- from openstack import utils as sdk_utils
21
20
  from osc_lib.cli import format_columns
22
21
  from osc_lib import exceptions
23
22
 
@@ -58,7 +57,7 @@ class TestAggregate(compute_fakes.TestComputev2):
58
57
 
59
58
  class TestAggregateAddHost(TestAggregate):
60
59
  def setUp(self):
61
- super(TestAggregateAddHost, self).setUp()
60
+ super().setUp()
62
61
 
63
62
  self.compute_sdk_client.find_aggregate.return_value = self.fake_ag
64
63
  self.compute_sdk_client.add_host_to_aggregate.return_value = (
@@ -89,7 +88,7 @@ class TestAggregateAddHost(TestAggregate):
89
88
 
90
89
  class TestAggregateCreate(TestAggregate):
91
90
  def setUp(self):
92
- super(TestAggregateCreate, self).setUp()
91
+ super().setUp()
93
92
 
94
93
  self.compute_sdk_client.create_aggregate.return_value = self.fake_ag
95
94
  self.compute_sdk_client.set_aggregate_metadata.return_value = (
@@ -159,7 +158,7 @@ class TestAggregateDelete(TestAggregate):
159
158
  fake_ags = compute_fakes.create_aggregates(count=2)
160
159
 
161
160
  def setUp(self):
162
- super(TestAggregateDelete, self).setUp()
161
+ super().setUp()
163
162
 
164
163
  self.compute_sdk_client.find_aggregate = compute_fakes.get_aggregates(
165
164
  self.fake_ags
@@ -228,58 +227,61 @@ class TestAggregateDelete(TestAggregate):
228
227
 
229
228
 
230
229
  class TestAggregateList(TestAggregate):
231
- list_columns = (
232
- "ID",
233
- "Name",
234
- "Availability Zone",
235
- )
230
+ def setUp(self):
231
+ super().setUp()
236
232
 
237
- list_columns_long = (
238
- "ID",
239
- "Name",
240
- "Availability Zone",
241
- "Properties",
242
- "Hosts",
243
- )
233
+ self.compute_sdk_client.aggregates.return_value = [self.fake_ag]
234
+ self.cmd = aggregate.ListAggregate(self.app, None)
244
235
 
245
- list_data = (
246
- (
247
- TestAggregate.fake_ag.id,
248
- TestAggregate.fake_ag.name,
249
- TestAggregate.fake_ag.availability_zone,
250
- ),
251
- )
236
+ def test_aggregate_list(self):
237
+ self.set_compute_api_version('2.41')
252
238
 
253
- list_data_long = (
254
- (
255
- TestAggregate.fake_ag.id,
256
- TestAggregate.fake_ag.name,
257
- TestAggregate.fake_ag.availability_zone,
258
- format_columns.DictColumn(
259
- {
260
- key: value
261
- for key, value in TestAggregate.fake_ag.metadata.items()
262
- if key != 'availability_zone'
263
- }
239
+ parsed_args = self.check_parser(self.cmd, [], [])
240
+ columns, data = self.cmd.take_action(parsed_args)
241
+
242
+ expected_columns = (
243
+ "ID",
244
+ "UUID",
245
+ "Name",
246
+ "Availability Zone",
247
+ )
248
+ expected_data = (
249
+ (
250
+ self.fake_ag.id,
251
+ self.fake_ag.uuid,
252
+ self.fake_ag.name,
253
+ self.fake_ag.availability_zone,
264
254
  ),
265
- format_columns.ListColumn(TestAggregate.fake_ag.hosts),
266
- ),
267
- )
255
+ )
268
256
 
269
- def setUp(self):
270
- super(TestAggregateList, self).setUp()
257
+ self.assertEqual(expected_columns, columns)
258
+ self.assertCountEqual(expected_data, tuple(data))
271
259
 
272
- self.compute_sdk_client.aggregates.return_value = [self.fake_ag]
273
- self.cmd = aggregate.ListAggregate(self.app, None)
260
+ def test_aggregate_list_pre_v241(self):
261
+ self.set_compute_api_version('2.40')
274
262
 
275
- def test_aggregate_list(self):
276
263
  parsed_args = self.check_parser(self.cmd, [], [])
277
264
  columns, data = self.cmd.take_action(parsed_args)
278
265
 
279
- self.assertEqual(self.list_columns, columns)
280
- self.assertCountEqual(self.list_data, tuple(data))
266
+ expected_columns = (
267
+ "ID",
268
+ "Name",
269
+ "Availability Zone",
270
+ )
271
+ expected_data = (
272
+ (
273
+ self.fake_ag.id,
274
+ self.fake_ag.name,
275
+ self.fake_ag.availability_zone,
276
+ ),
277
+ )
278
+
279
+ self.assertEqual(expected_columns, columns)
280
+ self.assertCountEqual(expected_data, tuple(data))
281
281
 
282
282
  def test_aggregate_list_with_long(self):
283
+ self.set_compute_api_version('2.41')
284
+
283
285
  arglist = [
284
286
  '--long',
285
287
  ]
@@ -289,13 +291,38 @@ class TestAggregateList(TestAggregate):
289
291
  parsed_args = self.check_parser(self.cmd, arglist, vertifylist)
290
292
  columns, data = self.cmd.take_action(parsed_args)
291
293
 
292
- self.assertEqual(self.list_columns_long, columns)
293
- self.assertCountEqual(self.list_data_long, tuple(data))
294
+ expected_columns = (
295
+ "ID",
296
+ "UUID",
297
+ "Name",
298
+ "Availability Zone",
299
+ "Properties",
300
+ "Hosts",
301
+ )
302
+ expected_data = (
303
+ (
304
+ self.fake_ag.id,
305
+ self.fake_ag.uuid,
306
+ self.fake_ag.name,
307
+ self.fake_ag.availability_zone,
308
+ format_columns.DictColumn(
309
+ {
310
+ key: value
311
+ for key, value in self.fake_ag.metadata.items()
312
+ if key != 'availability_zone'
313
+ }
314
+ ),
315
+ format_columns.ListColumn(self.fake_ag.hosts),
316
+ ),
317
+ )
318
+
319
+ self.assertEqual(expected_columns, columns)
320
+ self.assertCountEqual(expected_data, tuple(data))
294
321
 
295
322
 
296
323
  class TestAggregateRemoveHost(TestAggregate):
297
324
  def setUp(self):
298
- super(TestAggregateRemoveHost, self).setUp()
325
+ super().setUp()
299
326
 
300
327
  self.compute_sdk_client.find_aggregate.return_value = self.fake_ag
301
328
  self.compute_sdk_client.remove_host_from_aggregate.return_value = (
@@ -326,7 +353,7 @@ class TestAggregateRemoveHost(TestAggregate):
326
353
 
327
354
  class TestAggregateSet(TestAggregate):
328
355
  def setUp(self):
329
- super(TestAggregateSet, self).setUp()
356
+ super().setUp()
330
357
 
331
358
  self.compute_sdk_client.find_aggregate.return_value = self.fake_ag
332
359
  self.cmd = aggregate.SetAggregate(self.app, None)
@@ -513,7 +540,7 @@ class TestAggregateShow(TestAggregate):
513
540
  )
514
541
 
515
542
  def setUp(self):
516
- super(TestAggregateShow, self).setUp()
543
+ super().setUp()
517
544
 
518
545
  self.compute_sdk_client.find_aggregate.return_value = self.fake_ag
519
546
  self.cmd = aggregate.ShowAggregate(self.app, None)
@@ -537,7 +564,7 @@ class TestAggregateShow(TestAggregate):
537
564
 
538
565
  class TestAggregateUnset(TestAggregate):
539
566
  def setUp(self):
540
- super(TestAggregateUnset, self).setUp()
567
+ super().setUp()
541
568
 
542
569
  self.compute_sdk_client.find_aggregate.return_value = self.fake_ag
543
570
  self.cmd = aggregate.UnsetAggregate(self.app, None)
@@ -598,7 +625,7 @@ class TestAggregateCacheImage(TestAggregate):
598
625
  images = image_fakes.create_images(count=2)
599
626
 
600
627
  def setUp(self):
601
- super(TestAggregateCacheImage, self).setUp()
628
+ super().setUp()
602
629
 
603
630
  self.compute_sdk_client.find_aggregate.return_value = self.fake_ag
604
631
  self.find_image_mock = mock.Mock(side_effect=self.images)
@@ -608,8 +635,9 @@ class TestAggregateCacheImage(TestAggregate):
608
635
 
609
636
  self.cmd = aggregate.CacheImageForAggregate(self.app, None)
610
637
 
611
- @mock.patch.object(sdk_utils, 'supports_microversion', return_value=False)
612
- def test_aggregate_not_supported(self, sm_mock):
638
+ def test_aggregate_cache_pre_v281(self):
639
+ self.set_compute_api_version('2.80')
640
+
613
641
  arglist = ['ag1', 'im1']
614
642
  verifylist = [
615
643
  ('aggregate', 'ag1'),
@@ -620,8 +648,9 @@ class TestAggregateCacheImage(TestAggregate):
620
648
  exceptions.CommandError, self.cmd.take_action, parsed_args
621
649
  )
622
650
 
623
- @mock.patch.object(sdk_utils, 'supports_microversion', return_value=True)
624
- def test_aggregate_add_single_image(self, sm_mock):
651
+ def test_aggregate_cache_add_single_image(self):
652
+ self.set_compute_api_version('2.81')
653
+
625
654
  arglist = ['ag1', 'im1']
626
655
  verifylist = [
627
656
  ('aggregate', 'ag1'),
@@ -636,8 +665,9 @@ class TestAggregateCacheImage(TestAggregate):
636
665
  self.fake_ag.id, [self.images[0].id]
637
666
  )
638
667
 
639
- @mock.patch.object(sdk_utils, 'supports_microversion', return_value=True)
640
- def test_aggregate_add_multiple_images(self, sm_mock):
668
+ def test_aggregate_cache_add_multiple_images(self):
669
+ self.set_compute_api_version('2.81')
670
+
641
671
  arglist = [
642
672
  'ag1',
643
673
  'im1',
@@ -21,11 +21,10 @@ from openstackclient.tests.unit import utils
21
21
 
22
22
 
23
23
  class TestConsoleLog(compute_fakes.TestComputev2):
24
- _server = compute_fakes.create_one_server()
25
-
26
24
  def setUp(self):
27
- super(TestConsoleLog, self).setUp()
25
+ super().setUp()
28
26
 
27
+ self._server = compute_fakes.create_one_sdk_server()
29
28
  self.compute_sdk_client.find_server.return_value = self._server
30
29
 
31
30
  self.cmd = console.ShowConsoleLog(self.app, None)
@@ -77,10 +76,10 @@ class TestConsoleLog(compute_fakes.TestComputev2):
77
76
 
78
77
 
79
78
  class TestConsoleUrlShow(compute_fakes.TestComputev2):
80
- _server = compute_fakes.create_one_server()
79
+ _server = compute_fakes.create_one_sdk_server()
81
80
 
82
81
  def setUp(self):
83
- super(TestConsoleUrlShow, self).setUp()
82
+ super().setUp()
84
83
  self.compute_sdk_client.find_server.return_value = self._server
85
84
  fake_console_data = {
86
85
  'url': 'http://localhost',
@@ -16,7 +16,6 @@ from unittest import mock
16
16
 
17
17
  from openstack.compute.v2 import flavor as _flavor
18
18
  from openstack import exceptions as sdk_exceptions
19
- from openstack import utils as sdk_utils
20
19
  from osc_lib.cli import format_columns
21
20
  from osc_lib import exceptions
22
21
 
@@ -28,9 +27,9 @@ from openstackclient.tests.unit import utils as tests_utils
28
27
 
29
28
  class TestFlavor(compute_fakes.TestComputev2):
30
29
  def setUp(self):
31
- super(TestFlavor, self).setUp()
30
+ super().setUp()
32
31
 
33
- self.projects_mock = self.app.client_manager.identity.projects
32
+ self.projects_mock = self.identity_client.projects
34
33
  self.projects_mock.reset_mock()
35
34
 
36
35
 
@@ -83,7 +82,7 @@ class TestFlavorCreate(TestFlavor):
83
82
  )
84
83
 
85
84
  def setUp(self):
86
- super(TestFlavorCreate, self).setUp()
85
+ super().setUp()
87
86
 
88
87
  # Return a project
89
88
  self.projects_mock.get.return_value = self.project
@@ -118,6 +117,8 @@ class TestFlavorCreate(TestFlavor):
118
117
  self.assertCountEqual(self.data, data)
119
118
 
120
119
  def test_flavor_create_all_options(self):
120
+ self.set_compute_api_version('2.55')
121
+
121
122
  arglist = [
122
123
  '--id',
123
124
  self.flavor.id,
@@ -184,22 +185,19 @@ class TestFlavorCreate(TestFlavor):
184
185
  expected_flavor
185
186
  )
186
187
 
187
- with mock.patch.object(
188
- sdk_utils, 'supports_microversion', return_value=True
189
- ):
190
- columns, data = self.cmd.take_action(parsed_args)
191
- self.compute_sdk_client.create_flavor.assert_called_once_with(
192
- **args
193
- )
194
- self.compute_sdk_client.create_flavor_extra_specs.assert_called_once_with(
195
- create_flavor, props
196
- )
197
- self.compute_sdk_client.get_flavor_access.assert_not_called()
188
+ columns, data = self.cmd.take_action(parsed_args)
189
+ self.compute_sdk_client.create_flavor.assert_called_once_with(**args)
190
+ self.compute_sdk_client.create_flavor_extra_specs.assert_called_once_with(
191
+ create_flavor, props
192
+ )
193
+ self.compute_sdk_client.get_flavor_access.assert_not_called()
198
194
 
199
195
  self.assertEqual(self.columns, columns)
200
196
  self.assertCountEqual(tuple(cmp_data), data)
201
197
 
202
198
  def test_flavor_create_other_options(self):
199
+ self.set_compute_api_version('2.55')
200
+
203
201
  self.flavor.is_public = False
204
202
  arglist = [
205
203
  '--id',
@@ -272,10 +270,8 @@ class TestFlavorCreate(TestFlavor):
272
270
  expected_flavor
273
271
  )
274
272
 
275
- with mock.patch.object(
276
- sdk_utils, 'supports_microversion', return_value=True
277
- ):
278
- columns, data = self.cmd.take_action(parsed_args)
273
+ columns, data = self.cmd.take_action(parsed_args)
274
+
279
275
  self.compute_sdk_client.create_flavor.assert_called_once_with(**args)
280
276
  self.compute_sdk_client.flavor_add_tenant_access.assert_called_with(
281
277
  self.flavor.id,
@@ -314,7 +310,9 @@ class TestFlavorCreate(TestFlavor):
314
310
  verifylist,
315
311
  )
316
312
 
317
- def test_flavor_create_with_description_api_newer(self):
313
+ def test_flavor_create_with_description(self):
314
+ self.set_compute_api_version('2.55')
315
+
318
316
  arglist = [
319
317
  '--id',
320
318
  self.flavor.id,
@@ -348,10 +346,8 @@ class TestFlavorCreate(TestFlavor):
348
346
  ('name', self.flavor.name),
349
347
  ]
350
348
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
351
- with mock.patch.object(
352
- sdk_utils, 'supports_microversion', return_value=True
353
- ):
354
- columns, data = self.cmd.take_action(parsed_args)
349
+
350
+ columns, data = self.cmd.take_action(parsed_args)
355
351
 
356
352
  args = {
357
353
  'name': self.flavor.name,
@@ -371,7 +367,9 @@ class TestFlavorCreate(TestFlavor):
371
367
  self.assertEqual(self.columns, columns)
372
368
  self.assertCountEqual(self.data_private, data)
373
369
 
374
- def test_flavor_create_with_description_api_older(self):
370
+ def test_flavor_create_with_description_pre_v255(self):
371
+ self.set_compute_api_version('2.54')
372
+
375
373
  arglist = [
376
374
  '--id',
377
375
  self.flavor.id,
@@ -391,19 +389,16 @@ class TestFlavorCreate(TestFlavor):
391
389
  ]
392
390
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
393
391
 
394
- with mock.patch.object(
395
- sdk_utils, 'supports_microversion', return_value=False
396
- ):
397
- self.assertRaises(
398
- exceptions.CommandError, self.cmd.take_action, parsed_args
399
- )
392
+ self.assertRaises(
393
+ exceptions.CommandError, self.cmd.take_action, parsed_args
394
+ )
400
395
 
401
396
 
402
397
  class TestFlavorDelete(TestFlavor):
403
398
  flavors = compute_fakes.create_flavors(count=2)
404
399
 
405
400
  def setUp(self):
406
- super(TestFlavorDelete, self).setUp()
401
+ super().setUp()
407
402
 
408
403
  self.compute_sdk_client.delete_flavor.return_value = None
409
404
 
@@ -513,7 +508,7 @@ class TestFlavorList(TestFlavor):
513
508
  )
514
509
 
515
510
  def setUp(self):
516
- super(TestFlavorList, self).setUp()
511
+ super().setUp()
517
512
 
518
513
  self.api_mock = mock.Mock()
519
514
  self.api_mock.side_effect = [
@@ -756,7 +751,7 @@ class TestFlavorSet(TestFlavor):
756
751
  project = identity_fakes.FakeProject.create_one_project()
757
752
 
758
753
  def setUp(self):
759
- super(TestFlavorSet, self).setUp()
754
+ super().setUp()
760
755
 
761
756
  self.compute_sdk_client.find_flavor.return_value = self.flavor
762
757
  # Return a project
@@ -887,7 +882,9 @@ class TestFlavorSet(TestFlavor):
887
882
  self.compute_sdk_client.flavor_add_tenant_access.assert_not_called()
888
883
  self.assertIsNone(result)
889
884
 
890
- def test_flavor_set_description_api_newer(self):
885
+ def test_flavor_set_description(self):
886
+ self.set_compute_api_version('2.55')
887
+
891
888
  arglist = [
892
889
  '--description',
893
890
  'description',
@@ -899,16 +896,15 @@ class TestFlavorSet(TestFlavor):
899
896
  ]
900
897
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
901
898
 
902
- with mock.patch.object(
903
- sdk_utils, 'supports_microversion', return_value=True
904
- ):
905
- result = self.cmd.take_action(parsed_args)
906
- self.compute_sdk_client.update_flavor.assert_called_with(
907
- flavor=self.flavor.id, description='description'
908
- )
909
- self.assertIsNone(result)
899
+ result = self.cmd.take_action(parsed_args)
900
+ self.compute_sdk_client.update_flavor.assert_called_with(
901
+ flavor=self.flavor.id, description='description'
902
+ )
903
+ self.assertIsNone(result)
904
+
905
+ def test_flavor_set_description_pre_v254(self):
906
+ self.set_compute_api_version('2.54')
910
907
 
911
- def test_flavor_set_description_api_older(self):
912
908
  arglist = [
913
909
  '--description',
914
910
  'description',
@@ -920,14 +916,13 @@ class TestFlavorSet(TestFlavor):
920
916
  ]
921
917
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
922
918
 
923
- with mock.patch.object(
924
- sdk_utils, 'supports_microversion', return_value=False
925
- ):
926
- self.assertRaises(
927
- exceptions.CommandError, self.cmd.take_action, parsed_args
928
- )
919
+ self.assertRaises(
920
+ exceptions.CommandError, self.cmd.take_action, parsed_args
921
+ )
922
+
923
+ def test_flavor_set_description_using_name(self):
924
+ self.set_compute_api_version('2.55')
929
925
 
930
- def test_flavor_set_description_using_name_api_newer(self):
931
926
  arglist = [
932
927
  '--description',
933
928
  'description',
@@ -939,16 +934,15 @@ class TestFlavorSet(TestFlavor):
939
934
  ]
940
935
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
941
936
 
942
- with mock.patch.object(
943
- sdk_utils, 'supports_microversion', return_value=True
944
- ):
945
- result = self.cmd.take_action(parsed_args)
946
- self.compute_sdk_client.update_flavor.assert_called_with(
947
- flavor=self.flavor.id, description='description'
948
- )
949
- self.assertIsNone(result)
937
+ result = self.cmd.take_action(parsed_args)
938
+ self.compute_sdk_client.update_flavor.assert_called_with(
939
+ flavor=self.flavor.id, description='description'
940
+ )
941
+ self.assertIsNone(result)
942
+
943
+ def test_flavor_set_description_using_name_pre_v255(self):
944
+ self.set_compute_api_version('2.54')
950
945
 
951
- def test_flavor_set_description_using_name_api_older(self):
952
946
  arglist = [
953
947
  '--description',
954
948
  'description',
@@ -960,12 +954,9 @@ class TestFlavorSet(TestFlavor):
960
954
  ]
961
955
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
962
956
 
963
- with mock.patch.object(
964
- sdk_utils, 'supports_microversion', return_value=False
965
- ):
966
- self.assertRaises(
967
- exceptions.CommandError, self.cmd.take_action, parsed_args
968
- )
957
+ self.assertRaises(
958
+ exceptions.CommandError, self.cmd.take_action, parsed_args
959
+ )
969
960
 
970
961
 
971
962
  class TestFlavorShow(TestFlavor):
@@ -1006,7 +997,7 @@ class TestFlavorShow(TestFlavor):
1006
997
  )
1007
998
 
1008
999
  def setUp(self):
1009
- super(TestFlavorShow, self).setUp()
1000
+ super().setUp()
1010
1001
 
1011
1002
  # Return value of _find_resource()
1012
1003
  self.compute_sdk_client.find_flavor.return_value = self.flavor
@@ -1093,7 +1084,7 @@ class TestFlavorUnset(TestFlavor):
1093
1084
  project = identity_fakes.FakeProject.create_one_project()
1094
1085
 
1095
1086
  def setUp(self):
1096
- super(TestFlavorUnset, self).setUp()
1087
+ super().setUp()
1097
1088
 
1098
1089
  self.compute_sdk_client.find_flavor.return_value = self.flavor
1099
1090
  # Return a project