python-openstackclient 6.6.1__py3-none-any.whl → 7.0.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 (337) 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 +16 -4
  7. openstackclient/common/configuration.py +1 -1
  8. openstackclient/common/extension.py +1 -1
  9. openstackclient/common/limits.py +66 -32
  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 +281 -410
  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 +9 -9
  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 +4 -3
  22. openstackclient/compute/v2/keypair.py +7 -8
  23. openstackclient/compute/v2/server.py +478 -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 +127 -45
  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/shell.py +4 -6
  107. openstackclient/tests/functional/base.py +1 -1
  108. openstackclient/tests/functional/common/test_extension.py +1 -1
  109. openstackclient/tests/functional/common/test_help.py +2 -2
  110. openstackclient/tests/functional/common/test_module.py +1 -1
  111. openstackclient/tests/functional/common/test_quota.py +43 -61
  112. openstackclient/tests/functional/compute/v2/common.py +2 -2
  113. openstackclient/tests/functional/compute/v2/test_flavor.py +2 -2
  114. openstackclient/tests/functional/compute/v2/test_keypair.py +1 -1
  115. openstackclient/tests/functional/compute/v2/test_server.py +5 -5
  116. openstackclient/tests/functional/compute/v2/test_server_event.py +1 -1
  117. openstackclient/tests/functional/identity/v2/common.py +3 -3
  118. openstackclient/tests/functional/identity/v3/common.py +14 -6
  119. openstackclient/tests/functional/identity/v3/test_application_credential.py +13 -19
  120. openstackclient/tests/functional/identity/v3/test_domain.py +1 -3
  121. openstackclient/tests/functional/identity/v3/test_endpoint.py +1 -1
  122. openstackclient/tests/functional/identity/v3/test_idp.py +1 -1
  123. openstackclient/tests/functional/identity/v3/test_limit.py +2 -2
  124. openstackclient/tests/functional/identity/v3/test_region.py +1 -3
  125. openstackclient/tests/functional/identity/v3/test_registered_limit.py +1 -1
  126. openstackclient/tests/functional/identity/v3/test_role.py +2 -2
  127. openstackclient/tests/functional/identity/v3/test_role_assignment.py +210 -0
  128. openstackclient/tests/functional/identity/v3/test_service.py +4 -6
  129. openstackclient/tests/functional/identity/v3/test_service_provider.py +1 -3
  130. openstackclient/tests/functional/image/base.py +1 -1
  131. openstackclient/tests/functional/image/v2/test_image.py +1 -1
  132. openstackclient/tests/functional/image/v2/test_info.py +1 -1
  133. openstackclient/tests/functional/network/v2/common.py +4 -6
  134. openstackclient/tests/functional/network/v2/test_network.py +5 -3
  135. openstackclient/tests/functional/network/v2/test_network_agent.py +7 -5
  136. openstackclient/tests/functional/network/v2/test_network_qos_rule.py +4 -4
  137. openstackclient/tests/functional/network/v2/test_port.py +11 -7
  138. openstackclient/tests/functional/network/v2/test_router.py +2 -2
  139. openstackclient/tests/functional/object/v1/common.py +1 -1
  140. openstackclient/tests/functional/object/v1/test_container.py +3 -3
  141. openstackclient/tests/functional/object/v1/test_object.py +9 -13
  142. openstackclient/tests/functional/volume/base.py +1 -1
  143. openstackclient/tests/functional/volume/v1/test_service.py +1 -1
  144. openstackclient/tests/functional/volume/v1/test_snapshot.py +2 -2
  145. openstackclient/tests/functional/volume/v1/test_transfer_request.py +2 -2
  146. openstackclient/tests/functional/volume/v1/test_volume_type.py +1 -1
  147. openstackclient/tests/functional/volume/v2/test_service.py +2 -2
  148. openstackclient/tests/functional/volume/v2/test_volume_backup.py +2 -2
  149. openstackclient/tests/functional/volume/v2/test_volume_snapshot.py +2 -2
  150. openstackclient/tests/functional/volume/v2/test_volume_type.py +1 -1
  151. openstackclient/tests/functional/volume/v3/test_volume_snapshot.py +2 -2
  152. openstackclient/tests/functional/volume/v3/test_volume_type.py +1 -1
  153. openstackclient/tests/unit/api/fakes.py +1 -1
  154. openstackclient/tests/unit/api/test_api.py +2 -2
  155. openstackclient/tests/unit/api/test_compute_v2.py +522 -707
  156. openstackclient/tests/unit/api/test_image_v1.py +1 -1
  157. openstackclient/tests/unit/api/test_image_v2.py +1 -1
  158. openstackclient/tests/unit/api/test_object_store_v1.py +4 -4
  159. openstackclient/tests/unit/common/test_limits.py +73 -35
  160. openstackclient/tests/unit/common/test_logs.py +2 -2
  161. openstackclient/tests/unit/common/test_module.py +4 -2
  162. openstackclient/tests/unit/common/test_project_cleanup.py +31 -6
  163. openstackclient/tests/unit/common/test_quota.py +490 -630
  164. openstackclient/tests/unit/compute/v2/fakes.py +37 -286
  165. openstackclient/tests/unit/compute/v2/test_agent.py +189 -147
  166. openstackclient/tests/unit/compute/v2/test_aggregate.py +18 -16
  167. openstackclient/tests/unit/compute/v2/test_console.py +4 -5
  168. openstackclient/tests/unit/compute/v2/test_flavor.py +59 -68
  169. openstackclient/tests/unit/compute/v2/test_host.py +83 -54
  170. openstackclient/tests/unit/compute/v2/test_hypervisor.py +28 -31
  171. openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py +2 -2
  172. openstackclient/tests/unit/compute/v2/test_keypair.py +65 -50
  173. openstackclient/tests/unit/compute/v2/test_server.py +2895 -2459
  174. openstackclient/tests/unit/compute/v2/test_server_backup.py +1 -1
  175. openstackclient/tests/unit/compute/v2/test_server_event.py +14 -39
  176. openstackclient/tests/unit/compute/v2/test_server_group.py +28 -29
  177. openstackclient/tests/unit/compute/v2/test_server_migration.py +43 -68
  178. openstackclient/tests/unit/compute/v2/test_server_volume.py +17 -34
  179. openstackclient/tests/unit/compute/v2/test_service.py +34 -52
  180. openstackclient/tests/unit/compute/v2/test_usage.py +4 -4
  181. openstackclient/tests/unit/fakes.py +11 -11
  182. openstackclient/tests/unit/identity/v2_0/fakes.py +27 -10
  183. openstackclient/tests/unit/identity/v2_0/test_catalog.py +3 -3
  184. openstackclient/tests/unit/identity/v2_0/test_endpoint.py +7 -7
  185. openstackclient/tests/unit/identity/v2_0/test_project.py +8 -8
  186. openstackclient/tests/unit/identity/v2_0/test_role.py +10 -10
  187. openstackclient/tests/unit/identity/v2_0/test_role_assignment.py +4 -4
  188. openstackclient/tests/unit/identity/v2_0/test_service.py +6 -6
  189. openstackclient/tests/unit/identity/v2_0/test_token.py +4 -4
  190. openstackclient/tests/unit/identity/v2_0/test_user.py +8 -8
  191. openstackclient/tests/unit/identity/v3/fakes.py +59 -20
  192. openstackclient/tests/unit/identity/v3/test_access_rule.py +5 -5
  193. openstackclient/tests/unit/identity/v3/test_application_credential.py +212 -235
  194. openstackclient/tests/unit/identity/v3/test_catalog.py +3 -3
  195. openstackclient/tests/unit/identity/v3/test_consumer.py +7 -8
  196. openstackclient/tests/unit/identity/v3/test_credential.py +9 -9
  197. openstackclient/tests/unit/identity/v3/test_domain.py +8 -8
  198. openstackclient/tests/unit/identity/v3/test_endpoint.py +13 -13
  199. openstackclient/tests/unit/identity/v3/test_endpoint_group.py +12 -14
  200. openstackclient/tests/unit/identity/v3/test_group.py +12 -12
  201. openstackclient/tests/unit/identity/v3/test_identity_provider.py +8 -8
  202. openstackclient/tests/unit/identity/v3/test_implied_role.py +5 -5
  203. openstackclient/tests/unit/identity/v3/test_limit.py +7 -7
  204. openstackclient/tests/unit/identity/v3/test_mappings.py +7 -7
  205. openstackclient/tests/unit/identity/v3/test_oauth.py +5 -5
  206. openstackclient/tests/unit/identity/v3/test_project.py +16 -16
  207. openstackclient/tests/unit/identity/v3/test_protocol.py +7 -7
  208. openstackclient/tests/unit/identity/v3/test_region.py +7 -7
  209. openstackclient/tests/unit/identity/v3/test_registered_limit.py +12 -13
  210. openstackclient/tests/unit/identity/v3/test_role.py +13 -13
  211. openstackclient/tests/unit/identity/v3/test_role_assignment.py +410 -331
  212. openstackclient/tests/unit/identity/v3/test_service.py +93 -97
  213. openstackclient/tests/unit/identity/v3/test_service_provider.py +7 -7
  214. openstackclient/tests/unit/identity/v3/test_token.py +4 -4
  215. openstackclient/tests/unit/identity/v3/test_trust.py +9 -9
  216. openstackclient/tests/unit/identity/v3/test_unscoped_saml.py +4 -4
  217. openstackclient/tests/unit/identity/v3/test_user.py +299 -327
  218. openstackclient/tests/unit/image/v1/test_image.py +6 -6
  219. openstackclient/tests/unit/image/v2/fakes.py +46 -9
  220. openstackclient/tests/unit/image/v2/test_cache.py +2 -2
  221. openstackclient/tests/unit/image/v2/test_image.py +3 -3
  222. openstackclient/tests/unit/image/v2/test_metadef_objects.py +62 -0
  223. openstackclient/tests/unit/image/v2/test_metadef_resource_type_association.py +131 -0
  224. openstackclient/tests/unit/integ/base.py +1 -1
  225. openstackclient/tests/unit/integ/cli/test_project.py +4 -4
  226. openstackclient/tests/unit/integ/cli/test_shell.py +7 -7
  227. openstackclient/tests/unit/network/test_common.py +12 -21
  228. openstackclient/tests/unit/network/v2/fakes.py +64 -130
  229. openstackclient/tests/unit/network/v2/test_address_group.py +15 -15
  230. openstackclient/tests/unit/network/v2/test_address_scope.py +13 -13
  231. openstackclient/tests/unit/network/v2/test_default_security_group_rule.py +49 -27
  232. openstackclient/tests/unit/network/v2/test_floating_ip_compute.py +40 -38
  233. openstackclient/tests/unit/network/v2/test_floating_ip_network.py +15 -15
  234. openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py +4 -7
  235. openstackclient/tests/unit/network/v2/test_floating_ip_pool_network.py +3 -5
  236. openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +11 -11
  237. openstackclient/tests/unit/network/v2/test_ip_availability.py +6 -6
  238. openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py +11 -21
  239. openstackclient/tests/unit/network/v2/test_local_ip.py +7 -7
  240. openstackclient/tests/unit/network/v2/test_local_ip_association.py +3 -5
  241. openstackclient/tests/unit/network/v2/test_ndp_proxy.py +13 -13
  242. openstackclient/tests/unit/network/v2/test_network.py +23 -28
  243. openstackclient/tests/unit/network/v2/test_network_agent.py +17 -21
  244. openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py +8 -8
  245. openstackclient/tests/unit/network/v2/test_network_compute.py +66 -65
  246. openstackclient/tests/unit/network/v2/test_network_flavor.py +17 -19
  247. openstackclient/tests/unit/network/v2/test_network_flavor_profile.py +13 -13
  248. openstackclient/tests/unit/network/v2/test_network_meter.py +11 -11
  249. openstackclient/tests/unit/network/v2/test_network_meter_rule.py +11 -11
  250. openstackclient/tests/unit/network/v2/test_network_qos_policy.py +11 -21
  251. openstackclient/tests/unit/network/v2/test_network_qos_rule.py +51 -77
  252. openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py +5 -9
  253. openstackclient/tests/unit/network/v2/test_network_rbac.py +12 -12
  254. openstackclient/tests/unit/network/v2/test_network_segment.py +11 -15
  255. openstackclient/tests/unit/network/v2/test_network_segment_range.py +11 -13
  256. openstackclient/tests/unit/network/v2/test_network_service_provider.py +3 -5
  257. openstackclient/tests/unit/network/v2/test_network_trunk.py +11 -11
  258. openstackclient/tests/unit/network/v2/test_port.py +22 -25
  259. openstackclient/tests/unit/network/v2/test_router.py +721 -51
  260. openstackclient/tests/unit/network/v2/test_security_group_compute.py +65 -49
  261. openstackclient/tests/unit/network/v2/test_security_group_network.py +15 -15
  262. openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py +57 -45
  263. openstackclient/tests/unit/network/v2/test_security_group_rule_network.py +11 -19
  264. openstackclient/tests/unit/network/v2/test_subnet.py +29 -25
  265. openstackclient/tests/unit/network/v2/test_subnet_pool.py +15 -15
  266. openstackclient/tests/unit/object/v1/fakes.py +1 -1
  267. openstackclient/tests/unit/object/v1/test_container.py +5 -5
  268. openstackclient/tests/unit/object/v1/test_container_all.py +6 -6
  269. openstackclient/tests/unit/object/v1/test_object.py +3 -3
  270. openstackclient/tests/unit/object/v1/test_object_all.py +5 -5
  271. openstackclient/tests/unit/test_shell.py +5 -5
  272. openstackclient/tests/unit/utils.py +4 -1
  273. openstackclient/tests/unit/volume/test_find_resource.py +2 -2
  274. openstackclient/tests/unit/volume/v1/fakes.py +5 -6
  275. openstackclient/tests/unit/volume/v1/test_volume.py +5 -4
  276. openstackclient/tests/unit/volume/v2/fakes.py +39 -259
  277. openstackclient/tests/unit/volume/v2/test_consistency_group_snapshot.py +5 -5
  278. openstackclient/tests/unit/volume/v2/test_qos_specs.py +9 -9
  279. openstackclient/tests/unit/volume/v2/test_volume.py +21 -87
  280. openstackclient/tests/unit/volume/v2/test_volume_backup.py +7 -368
  281. openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +1 -1
  282. openstackclient/tests/unit/volume/v2/test_volume_transfer_request.py +0 -44
  283. openstackclient/tests/unit/volume/v2/test_volume_type.py +6 -87
  284. openstackclient/tests/unit/volume/v3/fakes.py +505 -22
  285. openstackclient/tests/unit/volume/v3/test_block_storage_cleanup.py +2 -3
  286. openstackclient/tests/unit/volume/v3/test_block_storage_cluster.py +10 -11
  287. openstackclient/tests/unit/volume/v3/test_block_storage_log_level.py +10 -6
  288. openstackclient/tests/unit/volume/v3/test_block_storage_manage.py +25 -17
  289. openstackclient/tests/unit/volume/v3/test_block_storage_resource_filter.py +6 -32
  290. openstackclient/tests/unit/volume/v3/test_service.py +271 -0
  291. openstackclient/tests/unit/volume/v3/test_volume.py +2177 -33
  292. openstackclient/tests/unit/volume/v3/test_volume_attachment.py +48 -52
  293. openstackclient/tests/unit/volume/v3/test_volume_backup.py +892 -0
  294. openstackclient/tests/unit/volume/v3/test_volume_group.py +19 -20
  295. openstackclient/tests/unit/volume/v3/test_volume_group_snapshot.py +14 -34
  296. openstackclient/tests/unit/volume/v3/test_volume_group_type.py +13 -16
  297. openstackclient/tests/unit/volume/v3/test_volume_message.py +10 -11
  298. openstackclient/tests/unit/volume/v3/test_volume_snapshot.py +161 -0
  299. openstackclient/tests/unit/volume/v3/test_volume_transfer_request.py +425 -0
  300. openstackclient/tests/unit/volume/v3/test_volume_type.py +1109 -0
  301. openstackclient/volume/v1/qos_specs.py +7 -7
  302. openstackclient/volume/v1/service.py +2 -2
  303. openstackclient/volume/v1/volume.py +12 -12
  304. openstackclient/volume/v1/volume_backup.py +7 -7
  305. openstackclient/volume/v1/volume_snapshot.py +8 -8
  306. openstackclient/volume/v1/volume_transfer_request.py +5 -5
  307. openstackclient/volume/v1/volume_type.py +7 -7
  308. openstackclient/volume/v2/backup_record.py +2 -2
  309. openstackclient/volume/v2/consistency_group.py +7 -9
  310. openstackclient/volume/v2/consistency_group_snapshot.py +4 -12
  311. openstackclient/volume/v2/qos_specs.py +7 -7
  312. openstackclient/volume/v2/service.py +2 -2
  313. openstackclient/volume/v2/volume.py +80 -80
  314. openstackclient/volume/v2/volume_backend.py +2 -2
  315. openstackclient/volume/v2/volume_backup.py +7 -217
  316. openstackclient/volume/v2/volume_host.py +2 -2
  317. openstackclient/volume/v2/volume_snapshot.py +8 -8
  318. openstackclient/volume/v2/volume_transfer_request.py +5 -37
  319. openstackclient/volume/v2/volume_type.py +7 -89
  320. openstackclient/volume/v3/service.py +56 -0
  321. openstackclient/volume/v3/volume.py +971 -0
  322. openstackclient/volume/v3/volume_attachment.py +31 -29
  323. openstackclient/volume/v3/volume_backup.py +670 -0
  324. openstackclient/volume/v3/volume_message.py +1 -1
  325. openstackclient/volume/v3/volume_snapshot.py +97 -0
  326. openstackclient/volume/v3/volume_transfer_request.py +233 -0
  327. openstackclient/volume/v3/volume_type.py +967 -0
  328. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.0.0.dist-info}/AUTHORS +4 -0
  329. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.0.0.dist-info}/METADATA +2 -3
  330. python_openstackclient-7.0.0.dist-info/RECORD +502 -0
  331. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.0.0.dist-info}/entry_points.txt +33 -27
  332. python_openstackclient-7.0.0.dist-info/pbr.json +1 -0
  333. python_openstackclient-6.6.1.dist-info/RECORD +0 -489
  334. python_openstackclient-6.6.1.dist-info/pbr.json +0 -1
  335. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.0.0.dist-info}/LICENSE +0 -0
  336. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.0.0.dist-info}/WHEEL +0 -0
  337. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.0.0.dist-info}/top_level.txt +0 -0
@@ -35,11 +35,11 @@ class TestVolume(volume_fakes.TestVolumev1):
35
35
  self.volumes_mock.reset_mock()
36
36
 
37
37
  # Get a shortcut to the TenantManager Mock
38
- self.projects_mock = self.app.client_manager.identity.tenants
38
+ self.projects_mock = self.identity_client.tenants
39
39
  self.projects_mock.reset_mock()
40
40
 
41
41
  # Get a shortcut to the UserManager Mock
42
- self.users_mock = self.app.client_manager.identity.users
42
+ self.users_mock = self.identity_client.users
43
43
  self.users_mock.reset_mock()
44
44
 
45
45
  def setup_volumes_mock(self, count):
@@ -1425,7 +1425,8 @@ class TestColumns(TestVolume):
1425
1425
 
1426
1426
  col = volume.AttachmentsColumn(_volume.attachments, {})
1427
1427
  self.assertEqual(
1428
- 'Attached to %s on %s ' % (server_id, device), col.human_readable()
1428
+ f'Attached to {server_id} on {device} ',
1429
+ col.human_readable(),
1429
1430
  )
1430
1431
  self.assertEqual(_volume.attachments, col.machine_readable())
1431
1432
 
@@ -1440,7 +1441,7 @@ class TestColumns(TestVolume):
1440
1441
 
1441
1442
  col = volume.AttachmentsColumn(_volume.attachments, server_cache)
1442
1443
  self.assertEqual(
1443
- 'Attached to %s on %s ' % ('fake-server-name', device),
1444
+ 'Attached to {} on {} '.format('fake-server-name', device),
1444
1445
  col.human_readable(),
1445
1446
  )
1446
1447
  self.assertEqual(_volume.attachments, col.machine_readable())
@@ -14,37 +14,25 @@
14
14
 
15
15
  import copy
16
16
  import random
17
+ import typing as ty
17
18
  from unittest import mock
18
19
  import uuid
19
20
 
20
21
  # FIXME(stephenfin): We are using v3 resource versions despite being v2 fakes
21
22
  from cinderclient import api_versions
23
+ from keystoneauth1 import discover
22
24
  from openstack.block_storage.v2 import _proxy as block_storage_v2_proxy
23
- from openstack.block_storage.v3 import backup as _backup
25
+ from openstack.block_storage.v2 import backup as _backup
24
26
  from openstack.block_storage.v3 import capabilities as _capabilities
25
27
  from openstack.block_storage.v3 import stats as _stats
26
28
  from openstack.block_storage.v3 import volume as _volume
27
29
  from openstack.image.v2 import _proxy as image_v2_proxy
28
- from osc_lib.cli import format_columns
29
30
 
30
31
  from openstackclient.tests.unit import fakes
31
32
  from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
32
33
  from openstackclient.tests.unit import utils
33
34
 
34
35
 
35
- QUOTA = {
36
- "gigabytes": 1000,
37
- "volumes": 11,
38
- "snapshots": 10,
39
- "backups": 10,
40
- "backup_gigabytes": 1000,
41
- "per_volume_gigabytes": -1,
42
- "gigabytes_volume_type_backend": -1,
43
- "volumes_volume_type_backend": -1,
44
- "snapshots_volume_type_backend": -1,
45
- }
46
-
47
-
48
36
  class FakeVolumeClient:
49
37
  def __init__(self, **kwargs):
50
38
  self.auth_token = kwargs['token']
@@ -67,10 +55,6 @@ class FakeVolumeClient:
67
55
  self.pools.resource_class = fakes.FakeResource(None, {})
68
56
  self.qos_specs = mock.Mock()
69
57
  self.qos_specs.resource_class = fakes.FakeResource(None, {})
70
- self.quota_classes = mock.Mock()
71
- self.quota_classes.resource_class = fakes.FakeResource(None, {})
72
- self.quotas = mock.Mock()
73
- self.quotas.resource_class = fakes.FakeResource(None, {})
74
58
  self.restores = mock.Mock()
75
59
  self.restores.resource_class = fakes.FakeResource(None, {})
76
60
  self.services = mock.Mock()
@@ -106,16 +90,36 @@ class FakeClientMixin:
106
90
  spec=block_storage_v2_proxy.Proxy,
107
91
  )
108
92
  self.volume_sdk_client = self.app.client_manager.sdk_connection.volume
93
+ self.set_volume_api_version() # default to the lowest
109
94
 
95
+ def set_volume_api_version(self, version: ty.Optional[str] = None):
96
+ """Set a fake block storage API version.
110
97
 
111
- class TestVolume(FakeClientMixin, utils.TestCommand):
112
- def setUp(self):
113
- super().setUp()
98
+ :param version: The fake microversion to "support". This must be None
99
+ since cinder v2 didn't support microversions.
100
+ :returns: None
101
+ """
102
+ assert version is None
114
103
 
115
- self.app.client_manager.identity = identity_fakes.FakeIdentityv3Client(
116
- endpoint=fakes.AUTH_URL, token=fakes.AUTH_TOKEN
104
+ self.volume_client.api_version = None
105
+
106
+ self.volume_sdk_client.default_microversion = None
107
+ self.volume_sdk_client.get_endpoint_data.return_value = (
108
+ discover.EndpointData(
109
+ min_microversion=None,
110
+ max_microversion=None,
111
+ )
117
112
  )
118
113
 
114
+
115
+ class TestVolume(
116
+ identity_fakes.FakeClientMixin,
117
+ FakeClientMixin,
118
+ utils.TestCommand,
119
+ ):
120
+ def setUp(self):
121
+ super().setUp()
122
+
119
123
  # avoid circular imports by defining this manually rather than using
120
124
  # openstackclient.tests.unit.image.v2.fakes.FakeClientMixin
121
125
  self.app.client_manager.image = mock.Mock(spec=image_v2_proxy.Proxy)
@@ -472,76 +476,34 @@ def get_volumes(volumes=None, count=2):
472
476
  return mock.Mock(side_effect=volumes)
473
477
 
474
478
 
475
- def get_volume_columns(volume=None):
476
- """Get the volume columns from a faked volume object.
477
-
478
- :param volume:
479
- A FakeResource objects faking volume
480
- :return
481
- A tuple which may include the following keys:
482
- ('id', 'name', 'description', 'status', 'size', 'volume_type',
483
- 'metadata', 'snapshot', 'availability_zone', 'attachments')
484
- """
485
- if volume is not None:
486
- return tuple(k for k in sorted(volume.keys()))
487
- return tuple([])
488
-
489
-
490
- def get_volume_data(volume=None):
491
- """Get the volume data from a faked volume object.
492
-
493
- :param volume:
494
- A FakeResource objects faking volume
495
- :return
496
- A tuple which may include the following values:
497
- ('ce26708d', 'fake_volume', 'fake description', 'available',
498
- 20, 'fake_lvmdriver-1', "Alpha='a', Beta='b', Gamma='g'",
499
- 1, 'nova', [{'device': '/dev/ice', 'server_id': '1233'}])
500
- """
501
- data_list = []
502
- if volume is not None:
503
- for x in sorted(volume.keys()):
504
- if x == 'tags':
505
- # The 'tags' should be format_list
506
- data_list.append(format_columns.ListColumn(volume.info.get(x)))
507
- else:
508
- data_list.append(volume.info.get(x))
509
- return tuple(data_list)
510
-
511
-
512
479
  def create_one_backup(attrs=None):
513
480
  """Create a fake backup.
514
481
 
515
482
  :param dict attrs:
516
483
  A dictionary with all attributes
517
- :return:
518
- A FakeResource object with id, name, volume_id, etc.
484
+ :return: A fake
485
+ openstack.block_storage.v2.backup.Backup object
519
486
  """
520
487
  attrs = attrs or {}
521
488
 
522
489
  # Set default attributes.
523
490
  backup_info = {
491
+ "availability_zone": 'zone' + uuid.uuid4().hex,
492
+ "container": 'container-' + uuid.uuid4().hex,
524
493
  "created_at": 'time-' + uuid.uuid4().hex,
525
494
  "data_timestamp": 'time-' + uuid.uuid4().hex,
526
- "id": 'backup-id-' + uuid.uuid4().hex,
527
- "encryption_key_id": None,
495
+ "description": 'description-' + uuid.uuid4().hex,
528
496
  "fail_reason": "Service not found for creating backup.",
529
497
  "has_dependent_backups": False,
498
+ "id": 'backup-id-' + uuid.uuid4().hex,
530
499
  "is_incremental": False,
531
- "metadata": {},
532
- "project_id": uuid.uuid4().hex,
533
- "updated_at": 'time-' + uuid.uuid4().hex,
534
- "user_id": uuid.uuid4().hex,
535
500
  "name": 'backup-name-' + uuid.uuid4().hex,
536
- "volume_id": 'volume-id-' + uuid.uuid4().hex,
537
- "snapshot_id": 'snapshot-id' + uuid.uuid4().hex,
538
- "description": 'description-' + uuid.uuid4().hex,
539
501
  "object_count": None,
540
- "container": 'container-' + uuid.uuid4().hex,
541
502
  "size": random.randint(1, 20),
542
- "is_incremental": False,
503
+ "snapshot_id": 'snapshot-id' + uuid.uuid4().hex,
543
504
  "status": "error",
544
- "availability_zone": 'zone' + uuid.uuid4().hex,
505
+ "updated_at": 'time-' + uuid.uuid4().hex,
506
+ "volume_id": 'volume-id-' + uuid.uuid4().hex,
545
507
  }
546
508
 
547
509
  # Overwrite default attributes.
@@ -558,8 +520,8 @@ def create_backups(attrs=None, count=2):
558
520
  A dictionary with all attributes
559
521
  :param int count:
560
522
  The number of backups to fake
561
- :return:
562
- A list of FakeResource objects faking the backups
523
+ :return: A list of fake
524
+ openstack.block_storage.v2.backup.Backup objects
563
525
  """
564
526
  backups = []
565
527
  for i in range(0, count):
@@ -1012,185 +974,3 @@ def create_one_encryption_volume_type(attrs=None):
1012
974
  info=copy.deepcopy(encryption_info), loaded=True
1013
975
  )
1014
976
  return encryption_type
1015
-
1016
-
1017
- def create_one_vol_quota(attrs=None):
1018
- """Create one quota"""
1019
- attrs = attrs or {}
1020
-
1021
- quota_attrs = {
1022
- 'id': 'project-id-' + uuid.uuid4().hex,
1023
- 'backups': 100,
1024
- 'backup_gigabytes': 100,
1025
- 'gigabytes': 10,
1026
- 'per_volume_gigabytes': 10,
1027
- 'snapshots': 0,
1028
- 'volumes': 10,
1029
- }
1030
-
1031
- quota_attrs.update(attrs)
1032
-
1033
- quota = fakes.FakeResource(info=copy.deepcopy(quota_attrs), loaded=True)
1034
- quota.project_id = quota_attrs['id']
1035
-
1036
- return quota
1037
-
1038
-
1039
- def create_one_default_vol_quota(attrs=None):
1040
- """Create one quota"""
1041
- attrs = attrs or {}
1042
-
1043
- quota_attrs = {
1044
- 'id': 'project-id-' + uuid.uuid4().hex,
1045
- 'backups': 100,
1046
- 'backup_gigabytes': 100,
1047
- 'gigabytes': 100,
1048
- 'per_volume_gigabytes': 100,
1049
- 'snapshots': 100,
1050
- 'volumes': 100,
1051
- }
1052
-
1053
- quota_attrs.update(attrs)
1054
-
1055
- quota = fakes.FakeResource(info=copy.deepcopy(quota_attrs), loaded=True)
1056
- quota.project_id = quota_attrs['id']
1057
-
1058
- return quota
1059
-
1060
-
1061
- def create_one_detailed_quota(attrs=None):
1062
- """Create one quota"""
1063
- attrs = attrs or {}
1064
-
1065
- quota_attrs = {
1066
- 'volumes': {'limit': 3, 'in_use': 1, 'reserved': 0},
1067
- 'per_volume_gigabytes': {'limit': -1, 'in_use': 0, 'reserved': 0},
1068
- 'snapshots': {'limit': 10, 'in_use': 0, 'reserved': 0},
1069
- 'gigabytes': {'limit': 1000, 'in_use': 5, 'reserved': 0},
1070
- 'backups': {'limit': 10, 'in_use': 0, 'reserved': 0},
1071
- 'backup_gigabytes': {'limit': 1000, 'in_use': 0, 'reserved': 0},
1072
- 'volumes_lvmdriver-1': {'limit': -1, 'in_use': 1, 'reserved': 0},
1073
- 'gigabytes_lvmdriver-1': {'limit': -1, 'in_use': 5, 'reserved': 0},
1074
- 'snapshots_lvmdriver-1': {'limit': -1, 'in_use': 0, 'reserved': 0},
1075
- 'volumes___DEFAULT__': {'limit': -1, 'in_use': 0, 'reserved': 0},
1076
- 'gigabytes___DEFAULT__': {'limit': -1, 'in_use': 0, 'reserved': 0},
1077
- 'snapshots___DEFAULT__': {'limit': -1, 'in_use': 0, 'reserved': 0},
1078
- 'groups': {'limit': 10, 'in_use': 0, 'reserved': 0},
1079
- 'id': uuid.uuid4().hex,
1080
- }
1081
- quota_attrs.update(attrs)
1082
-
1083
- quota = fakes.FakeResource(info=copy.deepcopy(quota_attrs), loaded=True)
1084
-
1085
- return quota
1086
-
1087
-
1088
- class FakeLimits(object):
1089
- """Fake limits"""
1090
-
1091
- def __init__(self, absolute_attrs=None):
1092
- self.absolute_limits_attrs = {
1093
- 'totalSnapshotsUsed': 1,
1094
- 'maxTotalBackups': 10,
1095
- 'maxTotalVolumeGigabytes': 1000,
1096
- 'maxTotalSnapshots': 10,
1097
- 'maxTotalBackupGigabytes': 1000,
1098
- 'totalBackupGigabytesUsed': 0,
1099
- 'maxTotalVolumes': 10,
1100
- 'totalVolumesUsed': 4,
1101
- 'totalBackupsUsed': 0,
1102
- 'totalGigabytesUsed': 35,
1103
- }
1104
- absolute_attrs = absolute_attrs or {}
1105
- self.absolute_limits_attrs.update(absolute_attrs)
1106
-
1107
- self.rate_limits_attrs = [
1108
- {
1109
- "uri": "*",
1110
- "limit": [
1111
- {
1112
- "value": 10,
1113
- "verb": "POST",
1114
- "remaining": 2,
1115
- "unit": "MINUTE",
1116
- "next-available": "2011-12-15T22:42:45Z",
1117
- },
1118
- {
1119
- "value": 10,
1120
- "verb": "PUT",
1121
- "remaining": 2,
1122
- "unit": "MINUTE",
1123
- "next-available": "2011-12-15T22:42:45Z",
1124
- },
1125
- {
1126
- "value": 100,
1127
- "verb": "DELETE",
1128
- "remaining": 100,
1129
- "unit": "MINUTE",
1130
- "next-available": "2011-12-15T22:42:45Z",
1131
- },
1132
- ],
1133
- }
1134
- ]
1135
-
1136
- @property
1137
- def absolute(self):
1138
- for name, value in self.absolute_limits_attrs.items():
1139
- yield FakeAbsoluteLimit(name, value)
1140
-
1141
- def absolute_limits(self):
1142
- reference_data = []
1143
- for name, value in self.absolute_limits_attrs.items():
1144
- reference_data.append((name, value))
1145
- return reference_data
1146
-
1147
- @property
1148
- def rate(self):
1149
- for group in self.rate_limits_attrs:
1150
- uri = group['uri']
1151
- for rate in group['limit']:
1152
- yield FakeRateLimit(
1153
- rate['verb'],
1154
- uri,
1155
- rate['value'],
1156
- rate['remaining'],
1157
- rate['unit'],
1158
- rate['next-available'],
1159
- )
1160
-
1161
- def rate_limits(self):
1162
- reference_data = []
1163
- for group in self.rate_limits_attrs:
1164
- uri = group['uri']
1165
- for rate in group['limit']:
1166
- reference_data.append(
1167
- (
1168
- rate['verb'],
1169
- uri,
1170
- rate['value'],
1171
- rate['remaining'],
1172
- rate['unit'],
1173
- rate['next-available'],
1174
- )
1175
- )
1176
- return reference_data
1177
-
1178
-
1179
- class FakeAbsoluteLimit(object):
1180
- """Data model that represents an absolute limit."""
1181
-
1182
- def __init__(self, name, value):
1183
- self.name = name
1184
- self.value = value
1185
-
1186
-
1187
- class FakeRateLimit(object):
1188
- """Data model that represents a flattened view of a single rate limit."""
1189
-
1190
- def __init__(self, verb, uri, value, remain, unit, next_available):
1191
- self.verb = verb
1192
- self.uri = uri
1193
- self.value = value
1194
- self.remain = remain
1195
- self.unit = unit
1196
- self.next_available = next_available
@@ -20,7 +20,7 @@ from openstackclient.volume.v2 import consistency_group_snapshot
20
20
 
21
21
  class TestConsistencyGroupSnapshot(volume_fakes.TestVolume):
22
22
  def setUp(self):
23
- super(TestConsistencyGroupSnapshot, self).setUp()
23
+ super().setUp()
24
24
 
25
25
  # Get a shortcut to the TransferManager Mock
26
26
  self.cgsnapshots_mock = self.volume_client.cgsnapshots
@@ -53,7 +53,7 @@ class TestConsistencyGroupSnapshotCreate(TestConsistencyGroupSnapshot):
53
53
  )
54
54
 
55
55
  def setUp(self):
56
- super(TestConsistencyGroupSnapshotCreate, self).setUp()
56
+ super().setUp()
57
57
  self.cgsnapshots_mock.create.return_value = (
58
58
  self._consistency_group_snapshot
59
59
  )
@@ -126,7 +126,7 @@ class TestConsistencyGroupSnapshotDelete(TestConsistencyGroupSnapshot):
126
126
  )
127
127
 
128
128
  def setUp(self):
129
- super(TestConsistencyGroupSnapshotDelete, self).setUp()
129
+ super().setUp()
130
130
 
131
131
  self.cgsnapshots_mock.get = (
132
132
  volume_fakes.get_consistency_group_snapshots(
@@ -217,7 +217,7 @@ class TestConsistencyGroupSnapshotList(TestConsistencyGroupSnapshot):
217
217
  )
218
218
 
219
219
  def setUp(self):
220
- super(TestConsistencyGroupSnapshotList, self).setUp()
220
+ super().setUp()
221
221
 
222
222
  self.cgsnapshots_mock.list.return_value = (
223
223
  self.consistency_group_snapshots
@@ -332,7 +332,7 @@ class TestConsistencyGroupSnapshotShow(TestConsistencyGroupSnapshot):
332
332
  )
333
333
 
334
334
  def setUp(self):
335
- super(TestConsistencyGroupSnapshotShow, self).setUp()
335
+ super().setUp()
336
336
 
337
337
  self.cgsnapshots_mock.get.return_value = (
338
338
  self._consistency_group_snapshot
@@ -27,7 +27,7 @@ from openstackclient.volume.v2 import qos_specs
27
27
 
28
28
  class TestQos(volume_fakes.TestVolume):
29
29
  def setUp(self):
30
- super(TestQos, self).setUp()
30
+ super().setUp()
31
31
 
32
32
  self.qos_mock = self.volume_client.qos_specs
33
33
  self.qos_mock.reset_mock()
@@ -41,7 +41,7 @@ class TestQosAssociate(TestQos):
41
41
  qos_spec = volume_fakes.create_one_qos()
42
42
 
43
43
  def setUp(self):
44
- super(TestQosAssociate, self).setUp()
44
+ super().setUp()
45
45
 
46
46
  self.qos_mock.get.return_value = self.qos_spec
47
47
  self.types_mock.get.return_value = self.volume_type
@@ -68,7 +68,7 @@ class TestQosCreate(TestQos):
68
68
  columns = ('consumer', 'id', 'name', 'properties')
69
69
 
70
70
  def setUp(self):
71
- super(TestQosCreate, self).setUp()
71
+ super().setUp()
72
72
 
73
73
  self.new_qos_spec = volume_fakes.create_one_qos()
74
74
  self.qos_mock.create.return_value = self.new_qos_spec
@@ -158,7 +158,7 @@ class TestQosDelete(TestQos):
158
158
  qos_specs = volume_fakes.create_qoses(count=2)
159
159
 
160
160
  def setUp(self):
161
- super(TestQosDelete, self).setUp()
161
+ super().setUp()
162
162
 
163
163
  self.qos_mock.get = volume_fakes.get_qoses(self.qos_specs)
164
164
  # Get the command object to test
@@ -238,7 +238,7 @@ class TestQosDisassociate(TestQos):
238
238
  qos_spec = volume_fakes.create_one_qos()
239
239
 
240
240
  def setUp(self):
241
- super(TestQosDisassociate, self).setUp()
241
+ super().setUp()
242
242
 
243
243
  self.qos_mock.get.return_value = self.qos_spec
244
244
  self.types_mock.get.return_value = self.volume_type
@@ -302,7 +302,7 @@ class TestQosList(TestQos):
302
302
  )
303
303
 
304
304
  def setUp(self):
305
- super(TestQosList, self).setUp()
305
+ super().setUp()
306
306
 
307
307
  self.qos_mock.list.return_value = self.qos_specs
308
308
  self.qos_mock.get_associations.return_value = [self.qos_association]
@@ -354,7 +354,7 @@ class TestQosSet(TestQos):
354
354
  qos_spec = volume_fakes.create_one_qos()
355
355
 
356
356
  def setUp(self):
357
- super(TestQosSet, self).setUp()
357
+ super().setUp()
358
358
 
359
359
  self.qos_mock.get.return_value = self.qos_spec
360
360
  # Get the command object to test
@@ -403,7 +403,7 @@ class TestQosShow(TestQos):
403
403
  )
404
404
 
405
405
  def setUp(self):
406
- super(TestQosShow, self).setUp()
406
+ super().setUp()
407
407
 
408
408
  self.qos_mock.get.return_value = self.qos_spec
409
409
  self.qos_mock.get_associations.return_value = [self.qos_association]
@@ -428,7 +428,7 @@ class TestQosUnset(TestQos):
428
428
  qos_spec = volume_fakes.create_one_qos()
429
429
 
430
430
  def setUp(self):
431
- super(TestQosUnset, self).setUp()
431
+ super().setUp()
432
432
 
433
433
  self.qos_mock.get.return_value = self.qos_spec
434
434
  # Get the command object to test