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
@@ -22,7 +22,7 @@ class APIv1(api.BaseAPI):
22
22
  _endpoint_suffix = '/v1'
23
23
 
24
24
  def __init__(self, endpoint=None, **kwargs):
25
- super(APIv1, self).__init__(endpoint=endpoint, **kwargs)
25
+ super().__init__(endpoint=endpoint, **kwargs)
26
26
 
27
27
  self.endpoint = self.endpoint.rstrip('/')
28
28
  self._munge_url()
@@ -13,7 +13,6 @@
13
13
 
14
14
  """Object Store v1 API Library"""
15
15
 
16
- import io
17
16
  import logging
18
17
  import os
19
18
  import sys
@@ -33,7 +32,7 @@ class APIv1(api.BaseAPI):
33
32
  """Object Store v1 API"""
34
33
 
35
34
  def __init__(self, **kwargs):
36
- super(APIv1, self).__init__(**kwargs)
35
+ super().__init__(**kwargs)
37
36
 
38
37
  def container_create(
39
38
  self, container=None, public=False, storage_policy=None
@@ -257,11 +256,11 @@ class APIv1(api.BaseAPI):
257
256
  # object's name in the container.
258
257
  object_name_str = name if name else object
259
258
 
260
- full_url = "%s/%s" % (
259
+ full_url = "{}/{}".format(
261
260
  urllib.parse.quote(container),
262
261
  urllib.parse.quote(object_name_str),
263
262
  )
264
- with io.open(object, 'rb') as f:
263
+ with open(object, 'rb') as f:
265
264
  response = self.create(
266
265
  full_url,
267
266
  method='PUT',
@@ -47,7 +47,7 @@ def _xform_compute_availability_zone(az, include_extra):
47
47
  for svc, state in services.items():
48
48
  info = copy.deepcopy(host_info)
49
49
  info['service_name'] = svc
50
- info['service_status'] = '%s %s %s' % (
50
+ info['service_status'] = '{} {} {}'.format(
51
51
  'enabled' if state['active'] else 'disabled',
52
52
  ':-)' if state['available'] else 'XXX',
53
53
  state['updated_at'],
@@ -51,7 +51,7 @@ class ClientManager(clientmanager.ClientManager):
51
51
  api_version=None,
52
52
  pw_func=None,
53
53
  ):
54
- super(ClientManager, self).__init__(
54
+ super().__init__(
55
55
  cli_options=cli_options,
56
56
  api_version=api_version,
57
57
  pw_func=pw_func,
@@ -94,7 +94,7 @@ class ClientManager(clientmanager.ClientManager):
94
94
  except TypeError as e:
95
95
  self._fallback_load_auth_plugin(e)
96
96
 
97
- return super(ClientManager, self).setup_auth()
97
+ return super().setup_auth()
98
98
 
99
99
  def _fallback_load_auth_plugin(self, e):
100
100
  # NOTES(RuiChen): Hack to avoid auth plugins choking on data they don't
@@ -133,7 +133,17 @@ class ClientManager(clientmanager.ClientManager):
133
133
  # NOTE(jcross): Cinder did some interesting things with their service
134
134
  # name so we need to figure out which version to look
135
135
  # for when calling is_service_available()
136
- volume_version = volume_client.api_version.ver_major
136
+ endpoint_data = volume_client.get_endpoint_data()
137
+ # Not sure how endpoint data stores the api version for v2 API,
138
+ # for v3 it is a tuple (3, 0)
139
+ if endpoint_data.api_version and isinstance(
140
+ endpoint_data.api_version, tuple
141
+ ):
142
+ volume_version = endpoint_data.api_version[0]
143
+ else:
144
+ # Setting volume_version as 2 here if it doesn't satisfy the
145
+ # conditions for version 3
146
+ volume_version = 2
137
147
  if (
138
148
  self.is_service_available("volumev%s" % volume_version)
139
149
  is not False
@@ -170,7 +180,9 @@ def get_plugin_modules(group):
170
180
  module = importlib.import_module(module_name)
171
181
  except Exception as err:
172
182
  sys.stderr.write(
173
- "WARNING: Failed to import plugin %s: %s.\n" % (ep.name, err)
183
+ "WARNING: Failed to import plugin {}: {}.\n".format(
184
+ ep.name, err
185
+ )
174
186
  )
175
187
  continue
176
188
 
@@ -27,7 +27,7 @@ class ShowConfiguration(command.ShowOne):
27
27
  auth_required = False
28
28
 
29
29
  def get_parser(self, prog_name):
30
- parser = super(ShowConfiguration, self).get_parser(prog_name)
30
+ parser = super().get_parser(prog_name)
31
31
  mask_group = parser.add_mutually_exclusive_group()
32
32
  mask_group.add_argument(
33
33
  "--mask",
@@ -148,7 +148,7 @@ class ShowExtension(command.ShowOne):
148
148
  _description = _("Show API extension")
149
149
 
150
150
  def get_parser(self, prog_name):
151
- parser = super(ShowExtension, self).get_parser(prog_name)
151
+ parser = super().get_parser(prog_name)
152
152
  parser.add_argument(
153
153
  'extension',
154
154
  metavar='<extension>',
@@ -24,11 +24,36 @@ from openstackclient.i18n import _
24
24
  from openstackclient.identity import common as identity_common
25
25
 
26
26
 
27
+ def _format_absolute_limit(absolute_limits):
28
+ info = {}
29
+
30
+ for key in set(absolute_limits):
31
+ if key in ('id', 'name', 'location'):
32
+ continue
33
+
34
+ info[key] = absolute_limits[key]
35
+
36
+ return info
37
+
38
+
39
+ def _format_rate_limit(rate_limits):
40
+ # flatten this:
41
+ #
42
+ # {'uri': '<uri>', 'limit': [{'value': '<value>', ...], ...}
43
+ #
44
+ # to this:
45
+ #
46
+ # {'uri': '<uri>', 'value': '<value>', ...}, ...}
47
+ return itertools.chain(
48
+ *[[{'uri': x['uri'], **y} for y in x['limit']] for x in rate_limits]
49
+ )
50
+
51
+
27
52
  class ShowLimits(command.Lister):
28
53
  _description = _("Show compute and block storage limits")
29
54
 
30
55
  def get_parser(self, prog_name):
31
- parser = super(ShowLimits, self).get_parser(prog_name)
56
+ parser = super().get_parser(prog_name)
32
57
  type_group = parser.add_mutually_exclusive_group(required=True)
33
58
  type_group.add_argument(
34
59
  "--absolute",
@@ -42,36 +67,42 @@ class ShowLimits(command.Lister):
42
67
  dest="is_rate",
43
68
  action="store_true",
44
69
  default=False,
45
- help=_("Show rate limits"),
70
+ help=_(
71
+ 'Show rate limits. This is not supported by the compute '
72
+ 'service since the 12.0.0 (Liberty) release and is only '
73
+ 'supported by the block storage service when the '
74
+ 'rate-limiting middleware is enabled. It is therefore a no-op '
75
+ 'in most deployments.'
76
+ ),
46
77
  )
47
78
  parser.add_argument(
48
79
  "--reserved",
49
80
  dest="is_reserved",
50
81
  action="store_true",
51
82
  default=False,
52
- help=_("Include reservations count [only valid with --absolute]"),
83
+ help=_("Include reservations count (only valid with --absolute)"),
53
84
  )
54
85
  parser.add_argument(
55
86
  '--project',
56
87
  metavar='<project>',
57
88
  help=_(
58
- 'Show limits for a specific project (name or ID)'
59
- ' [only valid with --absolute]'
89
+ 'Show limits for a specific project (name or ID) '
90
+ '(only valid with --absolute)'
60
91
  ),
61
92
  )
62
93
  parser.add_argument(
63
94
  '--domain',
64
95
  metavar='<domain>',
65
96
  help=_(
66
- 'Domain the project belongs to (name or ID)'
67
- ' [only valid with --absolute]'
97
+ 'Domain the project belongs to (name or ID) '
98
+ '(only valid with --absolute)'
68
99
  ),
69
100
  )
70
101
  return parser
71
102
 
72
103
  def take_action(self, parsed_args):
73
- compute_client = self.app.client_manager.compute
74
- volume_client = self.app.client_manager.volume
104
+ compute_client = self.app.client_manager.sdk_connection.compute
105
+ volume_client = self.app.client_manager.sdk_connection.volume
75
106
 
76
107
  project_id = None
77
108
  if parsed_args.project is not None:
@@ -94,33 +125,30 @@ class ShowLimits(command.Lister):
94
125
  volume_limits = None
95
126
 
96
127
  if self.app.client_manager.is_compute_endpoint_enabled():
97
- compute_limits = compute_client.limits.get(
98
- parsed_args.is_reserved, tenant_id=project_id
128
+ compute_limits = compute_client.get_limits(
129
+ reserved=parsed_args.is_reserved, tenant_id=project_id
99
130
  )
100
131
 
101
132
  if self.app.client_manager.is_volume_endpoint_enabled(volume_client):
102
- volume_limits = volume_client.limits.get()
133
+ volume_limits = volume_client.get_limits(
134
+ project_id=project_id,
135
+ )
103
136
 
104
- data = []
105
137
  if parsed_args.is_absolute:
138
+ columns = ["Name", "Value"]
139
+ info = {}
106
140
  if compute_limits:
107
- data.append(compute_limits.absolute)
141
+ info.update(_format_absolute_limit(compute_limits.absolute))
108
142
  if volume_limits:
109
- data.append(volume_limits.absolute)
110
- columns = ["Name", "Value"]
111
- return (
112
- columns,
113
- (
114
- utils.get_item_properties(s, columns)
115
- for s in itertools.chain(*data)
116
- ),
117
- )
143
+ info.update(_format_absolute_limit(volume_limits.absolute))
118
144
 
119
- elif parsed_args.is_rate:
145
+ return (columns, sorted(info.items(), key=lambda x: x[0]))
146
+ else: # parsed_args.is_rate
147
+ data = []
120
148
  if compute_limits:
121
- data.append(compute_limits.rate)
149
+ data.extend(_format_rate_limit(compute_limits.rate))
122
150
  if volume_limits:
123
- data.append(volume_limits.rate)
151
+ data.extend(_format_rate_limit(volume_limits.rate))
124
152
  columns = [
125
153
  "Verb",
126
154
  "URI",
@@ -129,12 +157,18 @@ class ShowLimits(command.Lister):
129
157
  "Unit",
130
158
  "Next Available",
131
159
  ]
160
+
132
161
  return (
133
162
  columns,
134
- (
135
- utils.get_item_properties(s, columns)
136
- for s in itertools.chain(*data)
137
- ),
163
+ [
164
+ (
165
+ s['verb'],
166
+ s['uri'],
167
+ s['value'],
168
+ s['remaining'],
169
+ s['unit'],
170
+ s.get('next-available') or s['next_available'],
171
+ )
172
+ for s in data
173
+ ],
138
174
  )
139
- else:
140
- return {}, {}
@@ -29,7 +29,7 @@ class ListCommand(command.Lister):
29
29
  auth_required = False
30
30
 
31
31
  def get_parser(self, prog_name):
32
- parser = super(ListCommand, self).get_parser(prog_name)
32
+ parser = super().get_parser(prog_name)
33
33
  parser.add_argument(
34
34
  '--group',
35
35
  metavar='<group-keyword>',
@@ -72,7 +72,7 @@ class ListModule(command.ShowOne):
72
72
  auth_required = False
73
73
 
74
74
  def get_parser(self, prog_name):
75
- parser = super(ListModule, self).get_parser(prog_name)
75
+ parser = super().get_parser(prog_name)
76
76
  parser.add_argument(
77
77
  '--all',
78
78
  action='store_true',
@@ -113,6 +113,6 @@ class ListModule(command.ShowOne):
113
113
  data[k] = mods[k].__version__
114
114
  except Exception:
115
115
  # Catch all exceptions, just skip it
116
- pass
116
+ pass # nosec: B110
117
117
 
118
118
  return zip(*sorted(data.items()))
@@ -16,7 +16,7 @@
16
16
  import sys
17
17
 
18
18
 
19
- class _ProgressBarBase(object):
19
+ class _ProgressBarBase:
20
20
  """A progress bar provider for a wrapped object.
21
21
 
22
22
  Base abstract class used by specific class wrapper to show
@@ -39,7 +39,7 @@ class _ProgressBarBase(object):
39
39
  self._percent += size_read / self._totalsize
40
40
  # Output something like this: [==========> ] 49%
41
41
  sys.stdout.write(
42
- '\r[{0:<30}] {1:.0%}'.format(
42
+ '\r[{:<30}] {:.0%}'.format(
43
43
  '=' * int(round(self._percent * 29)) + '>', self._percent
44
44
  )
45
45
  )
@@ -46,7 +46,7 @@ class ProjectCleanup(command.Command):
46
46
  _description = _("Clean resources associated with a project")
47
47
 
48
48
  def get_parser(self, prog_name):
49
- parser = super(ProjectCleanup, self).get_parser(prog_name)
49
+ parser = super().get_parser(prog_name)
50
50
  action_group = parser.add_mutually_exclusive_group()
51
51
  action_group.add_argument(
52
52
  '--dry-run',
@@ -150,5 +150,8 @@ class ProjectCleanup(command.Command):
150
150
  self.log.warning(_('Deleting resources'))
151
151
 
152
152
  project_connect.project_cleanup(
153
- dry_run=False, status_queue=status_queue, filters=filters
153
+ dry_run=False,
154
+ status_queue=status_queue,
155
+ filters=filters,
156
+ skip_resources=parsed_args.skip_resource,
154
157
  )