python-openstackclient 9.0.0__py3-none-any.whl → 10.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 (284) hide show
  1. openstackclient/__init__.py +2 -6
  2. openstackclient/api/api.py +41 -23
  3. openstackclient/api/compute_v2.py +44 -25
  4. openstackclient/api/object_store_v1.py +75 -97
  5. openstackclient/api/volume_v2.py +2 -1
  6. openstackclient/api/volume_v3.py +2 -1
  7. openstackclient/common/availability_zone.py +58 -42
  8. openstackclient/common/clientmanager.py +56 -29
  9. openstackclient/common/configuration.py +10 -3
  10. openstackclient/common/envvars.py +2 -2
  11. openstackclient/common/extension.py +14 -5
  12. openstackclient/common/limits.py +10 -5
  13. openstackclient/common/module.py +14 -6
  14. openstackclient/common/pagination.py +8 -2
  15. openstackclient/common/progressbar.py +7 -6
  16. openstackclient/common/project_cleanup.py +13 -7
  17. openstackclient/common/quota.py +97 -99
  18. openstackclient/common/versions.py +8 -2
  19. openstackclient/compute/client.py +7 -3
  20. openstackclient/compute/v2/agent.py +17 -10
  21. openstackclient/compute/v2/aggregate.py +36 -22
  22. openstackclient/compute/v2/console.py +14 -8
  23. openstackclient/compute/v2/console_connection.py +11 -3
  24. openstackclient/compute/v2/flavor.py +39 -21
  25. openstackclient/compute/v2/host.py +14 -6
  26. openstackclient/compute/v2/hypervisor.py +14 -5
  27. openstackclient/compute/v2/hypervisor_stats.py +10 -2
  28. openstackclient/compute/v2/keypair.py +29 -14
  29. openstackclient/compute/v2/server.py +249 -169
  30. openstackclient/compute/v2/server_backup.py +10 -4
  31. openstackclient/compute/v2/server_event.py +21 -12
  32. openstackclient/compute/v2/server_group.py +21 -11
  33. openstackclient/compute/v2/server_image.py +19 -10
  34. openstackclient/compute/v2/server_migration.py +24 -10
  35. openstackclient/compute/v2/server_share.py +274 -0
  36. openstackclient/compute/v2/server_volume.py +10 -4
  37. openstackclient/compute/v2/service.py +14 -7
  38. openstackclient/compute/v2/usage.py +26 -21
  39. openstackclient/identity/client.py +8 -3
  40. openstackclient/identity/common.py +78 -47
  41. openstackclient/identity/v2_0/catalog.py +14 -7
  42. openstackclient/identity/v2_0/ec2creds.py +21 -10
  43. openstackclient/identity/v2_0/endpoint.py +23 -11
  44. openstackclient/identity/v2_0/project.py +25 -14
  45. openstackclient/identity/v2_0/role.py +28 -14
  46. openstackclient/identity/v2_0/role_assignment.py +9 -3
  47. openstackclient/identity/v2_0/service.py +23 -11
  48. openstackclient/identity/v2_0/token.py +12 -5
  49. openstackclient/identity/v2_0/user.py +26 -15
  50. openstackclient/identity/v3/access_rule.py +26 -12
  51. openstackclient/identity/v3/application_credential.py +59 -24
  52. openstackclient/identity/v3/catalog.py +14 -7
  53. openstackclient/identity/v3/consumer.py +22 -11
  54. openstackclient/identity/v3/credential.py +36 -16
  55. openstackclient/identity/v3/domain.py +37 -18
  56. openstackclient/identity/v3/ec2creds.py +25 -12
  57. openstackclient/identity/v3/endpoint.py +42 -20
  58. openstackclient/identity/v3/endpoint_group.py +28 -17
  59. openstackclient/identity/v3/federation_protocol.py +38 -16
  60. openstackclient/identity/v3/group.py +55 -32
  61. openstackclient/identity/v3/identity_provider.py +92 -57
  62. openstackclient/identity/v3/implied_role.py +21 -9
  63. openstackclient/identity/v3/limit.py +38 -16
  64. openstackclient/identity/v3/mapping.py +26 -13
  65. openstackclient/identity/v3/policy.py +23 -12
  66. openstackclient/identity/v3/project.py +43 -23
  67. openstackclient/identity/v3/region.py +36 -16
  68. openstackclient/identity/v3/registered_limit.py +40 -16
  69. openstackclient/identity/v3/role.py +61 -31
  70. openstackclient/identity/v3/role_assignment.py +23 -6
  71. openstackclient/identity/v3/service.py +36 -16
  72. openstackclient/identity/v3/service_provider.py +37 -15
  73. openstackclient/identity/v3/tag.py +23 -6
  74. openstackclient/identity/v3/token.py +30 -14
  75. openstackclient/identity/v3/trust.py +32 -14
  76. openstackclient/identity/v3/unscoped_saml.py +10 -2
  77. openstackclient/identity/v3/user.py +49 -26
  78. openstackclient/image/client.py +7 -3
  79. openstackclient/image/v1/image.py +33 -26
  80. openstackclient/image/v2/cache.py +14 -9
  81. openstackclient/image/v2/image.py +74 -48
  82. openstackclient/image/v2/info.py +7 -1
  83. openstackclient/image/v2/metadef_namespaces.py +109 -13
  84. openstackclient/image/v2/metadef_objects.py +28 -15
  85. openstackclient/image/v2/metadef_properties.py +24 -13
  86. openstackclient/image/v2/metadef_resource_type_association.py +14 -7
  87. openstackclient/image/v2/metadef_resource_types.py +7 -1
  88. openstackclient/image/v2/task.py +15 -6
  89. openstackclient/locale/tr_TR/LC_MESSAGES/openstackclient.po +7 -192
  90. openstackclient/network/client.py +7 -2
  91. openstackclient/network/common.py +16 -241
  92. openstackclient/network/utils.py +36 -22
  93. openstackclient/network/v2/address_group.py +27 -16
  94. openstackclient/network/v2/address_scope.py +24 -13
  95. openstackclient/network/v2/bgpvpn/bgpvpn.py +463 -0
  96. openstackclient/network/v2/bgpvpn/constants.py +30 -0
  97. openstackclient/network/v2/bgpvpn/network_association.py +214 -0
  98. openstackclient/network/v2/bgpvpn/port_association.py +490 -0
  99. openstackclient/network/v2/bgpvpn/router_association.py +288 -0
  100. openstackclient/network/v2/default_security_group_rule.py +19 -10
  101. openstackclient/network/v2/floating_ip.py +110 -159
  102. openstackclient/network/v2/floating_ip_port_forwarding.py +30 -18
  103. openstackclient/network/v2/fwaas/__init__.py +0 -0
  104. openstackclient/network/v2/fwaas/group.py +466 -0
  105. openstackclient/network/v2/fwaas/policy.py +518 -0
  106. openstackclient/network/v2/fwaas/rule.py +574 -0
  107. openstackclient/network/v2/ip_availability.py +13 -5
  108. openstackclient/network/v2/l3_conntrack_helper.py +22 -13
  109. openstackclient/network/v2/local_ip.py +24 -13
  110. openstackclient/network/v2/local_ip_association.py +14 -7
  111. openstackclient/network/v2/ndp_proxy.py +20 -11
  112. openstackclient/network/v2/network.py +129 -196
  113. openstackclient/network/v2/network_agent.py +46 -25
  114. openstackclient/network/v2/network_auto_allocated_topology.py +22 -11
  115. openstackclient/network/v2/network_flavor.py +27 -16
  116. openstackclient/network/v2/network_flavor_profile.py +23 -12
  117. openstackclient/network/v2/network_meter.py +21 -10
  118. openstackclient/network/v2/network_meter_rule.py +21 -11
  119. openstackclient/network/v2/network_qos_policy.py +25 -15
  120. openstackclient/network/v2/network_qos_rule.py +32 -17
  121. openstackclient/network/v2/network_qos_rule_type.py +13 -5
  122. openstackclient/network/v2/network_rbac.py +23 -12
  123. openstackclient/network/v2/network_segment.py +20 -11
  124. openstackclient/network/v2/network_segment_range.py +56 -29
  125. openstackclient/network/v2/network_service_provider.py +7 -1
  126. openstackclient/network/v2/network_trunk.py +38 -22
  127. openstackclient/network/v2/port.py +54 -29
  128. openstackclient/network/v2/router.py +75 -52
  129. openstackclient/network/v2/security_group.py +87 -157
  130. openstackclient/network/v2/security_group_rule.py +100 -280
  131. openstackclient/network/v2/subnet.py +49 -28
  132. openstackclient/network/v2/subnet_pool.py +30 -17
  133. openstackclient/network/v2/taas/tap_flow.py +22 -11
  134. openstackclient/network/v2/taas/tap_mirror.py +22 -11
  135. openstackclient/network/v2/taas/tap_service.py +23 -12
  136. openstackclient/object/client.py +7 -2
  137. openstackclient/object/v1/account.py +13 -6
  138. openstackclient/object/v1/container.py +25 -15
  139. openstackclient/object/v1/object.py +25 -15
  140. openstackclient/py.typed +0 -0
  141. openstackclient/shell.py +46 -10
  142. openstackclient/tests/functional/base.py +55 -20
  143. openstackclient/tests/functional/common/test_extension.py +4 -0
  144. openstackclient/tests/functional/common/test_quota.py +3 -1
  145. openstackclient/tests/functional/compute/v2/common.py +14 -13
  146. openstackclient/tests/functional/compute/v2/test_flavor.py +3 -1
  147. openstackclient/tests/functional/compute/v2/test_server.py +3 -0
  148. openstackclient/tests/functional/identity/v2/common.py +10 -6
  149. openstackclient/tests/functional/identity/v2/test_role.py +4 -4
  150. openstackclient/tests/functional/identity/v3/common.py +25 -19
  151. openstackclient/tests/functional/identity/v3/test_group.py +20 -20
  152. openstackclient/tests/functional/identity/v3/test_idp.py +3 -1
  153. openstackclient/tests/functional/identity/v3/test_project.py +10 -10
  154. openstackclient/tests/functional/identity/v3/test_role.py +18 -18
  155. openstackclient/tests/functional/identity/v3/test_role_assignment.py +12 -12
  156. openstackclient/tests/functional/identity/v3/test_user.py +8 -8
  157. openstackclient/tests/functional/image/base.py +1 -6
  158. openstackclient/tests/functional/network/v2/common.py +5 -2
  159. openstackclient/tests/functional/network/v2/test_floating_ip.py +10 -4
  160. openstackclient/tests/functional/network/v2/test_ip_availability.py +4 -0
  161. openstackclient/tests/functional/network/v2/test_network_meter_rule.py +3 -2
  162. openstackclient/tests/functional/network/v2/test_network_segment.py +5 -0
  163. openstackclient/tests/functional/network/v2/test_subnet.py +13 -9
  164. openstackclient/tests/functional/object/v1/common.py +4 -0
  165. openstackclient/tests/functional/volume/v2/common.py +4 -0
  166. openstackclient/tests/functional/volume/v2/test_volume_snapshot.py +27 -11
  167. openstackclient/tests/functional/volume/v2/test_volume_type.py +2 -2
  168. openstackclient/tests/functional/volume/v3/common.py +4 -0
  169. openstackclient/tests/functional/volume/v3/test_volume_snapshot.py +11 -7
  170. openstackclient/tests/functional/volume/v3/test_volume_type.py +2 -2
  171. openstackclient/tests/unit/common/test_availability_zone.py +35 -49
  172. openstackclient/tests/unit/common/test_extension.py +2 -2
  173. openstackclient/tests/unit/common/test_module.py +12 -7
  174. openstackclient/tests/unit/common/test_project_cleanup.py +3 -1
  175. openstackclient/tests/unit/common/test_quota.py +6 -26
  176. openstackclient/tests/unit/compute/v2/fakes.py +25 -0
  177. openstackclient/tests/unit/compute/v2/test_flavor.py +28 -2
  178. openstackclient/tests/unit/compute/v2/test_keypair.py +6 -6
  179. openstackclient/tests/unit/compute/v2/test_server.py +11 -96
  180. openstackclient/tests/unit/compute/v2/test_server_share.py +287 -0
  181. openstackclient/tests/unit/identity/v3/fakes.py +3 -0
  182. openstackclient/tests/unit/identity/v3/test_group.py +4 -14
  183. openstackclient/tests/unit/identity/v3/test_identity_provider.py +303 -299
  184. openstackclient/tests/unit/identity/v3/test_user.py +4 -4
  185. openstackclient/tests/unit/image/v2/test_image.py +11 -11
  186. openstackclient/tests/unit/image/v2/test_metadef_namespaces.py +105 -6
  187. openstackclient/tests/unit/network/test_common.py +0 -155
  188. openstackclient/tests/unit/network/v2/bgpvpn/__init__.py +0 -0
  189. openstackclient/tests/unit/network/v2/bgpvpn/fakes.py +179 -0
  190. openstackclient/tests/unit/network/v2/bgpvpn/test_bgpvpn.py +584 -0
  191. openstackclient/tests/unit/network/v2/bgpvpn/test_network_association.py +285 -0
  192. openstackclient/tests/unit/network/v2/bgpvpn/test_port_association.py +384 -0
  193. openstackclient/tests/unit/network/v2/bgpvpn/test_router_association.py +297 -0
  194. openstackclient/tests/unit/network/v2/fwaas/__init__.py +0 -0
  195. openstackclient/tests/unit/network/v2/fwaas/test_group.py +897 -0
  196. openstackclient/tests/unit/network/v2/fwaas/test_policy.py +869 -0
  197. openstackclient/tests/unit/network/v2/fwaas/test_rule.py +980 -0
  198. openstackclient/tests/unit/network/v2/taas/{test_osc_tap_flow.py → test_tap_flow.py} +18 -25
  199. openstackclient/tests/unit/network/v2/taas/{test_osc_tap_mirror.py → test_tap_mirror.py} +19 -29
  200. openstackclient/tests/unit/network/v2/taas/{test_osc_tap_service.py → test_tap_service.py} +19 -29
  201. openstackclient/tests/unit/network/v2/test_address_group.py +2 -2
  202. openstackclient/tests/unit/network/v2/{test_floating_ip_network.py → test_floating_ip.py} +3 -2
  203. openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +13 -13
  204. openstackclient/tests/unit/network/v2/test_network_agent.py +8 -4
  205. openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py +3 -3
  206. openstackclient/tests/unit/network/v2/test_network_flavor.py +2 -2
  207. openstackclient/tests/unit/network/v2/test_network_qos_policy.py +1 -1
  208. openstackclient/tests/unit/network/v2/test_network_qos_rule.py +2 -2
  209. openstackclient/tests/unit/network/v2/test_network_rbac.py +1 -1
  210. openstackclient/tests/unit/network/v2/test_network_segment.py +1 -1
  211. openstackclient/tests/unit/network/v2/test_network_segment_range.py +7 -10
  212. openstackclient/tests/unit/network/v2/test_network_trunk.py +1 -1
  213. openstackclient/tests/unit/network/v2/test_router.py +8 -9
  214. openstackclient/tests/unit/network/v2/{test_security_group_network.py → test_security_group.py} +1 -20
  215. openstackclient/tests/unit/network/v2/{test_security_group_rule_network.py → test_security_group_rule.py} +7 -41
  216. openstackclient/tests/unit/network/v2/test_subnet.py +2 -1
  217. openstackclient/tests/unit/network/v2/test_subnet_pool.py +2 -1
  218. openstackclient/tests/unit/object/v1/fakes.py +8 -7
  219. openstackclient/tests/unit/object/v1/test_container.py +65 -101
  220. openstackclient/tests/unit/object/v1/test_container_all.py +8 -1
  221. openstackclient/tests/unit/object/v1/test_object.py +44 -84
  222. openstackclient/tests/unit/object/v1/test_object_all.py +8 -1
  223. openstackclient/tests/unit/test_hacking.py +108 -0
  224. openstackclient/tests/unit/volume/v2/fakes.py +1 -0
  225. openstackclient/tests/unit/volume/v2/test_volume_backup.py +1 -5
  226. openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +2 -1
  227. openstackclient/tests/unit/volume/v2/test_volume_type.py +2 -4
  228. openstackclient/tests/unit/volume/v3/fakes.py +1 -0
  229. openstackclient/tests/unit/volume/v3/test_volume.py +60 -3
  230. openstackclient/tests/unit/volume/v3/test_volume_attachment.py +1 -1
  231. openstackclient/tests/unit/volume/v3/test_volume_backup.py +1 -5
  232. openstackclient/tests/unit/volume/v3/test_volume_snapshot.py +55 -1
  233. openstackclient/tests/unit/volume/v3/test_volume_type.py +2 -4
  234. openstackclient/volume/client.py +7 -3
  235. openstackclient/volume/v2/backup_record.py +15 -6
  236. openstackclient/volume/v2/consistency_group.py +29 -17
  237. openstackclient/volume/v2/consistency_group_snapshot.py +25 -10
  238. openstackclient/volume/v2/qos_specs.py +28 -17
  239. openstackclient/volume/v2/service.py +17 -6
  240. openstackclient/volume/v2/volume.py +57 -29
  241. openstackclient/volume/v2/volume_backend.py +19 -6
  242. openstackclient/volume/v2/volume_backup.py +46 -20
  243. openstackclient/volume/v2/volume_host.py +6 -4
  244. openstackclient/volume/v2/volume_snapshot.py +50 -24
  245. openstackclient/volume/v2/volume_transfer_request.py +31 -13
  246. openstackclient/volume/v2/volume_type.py +43 -24
  247. openstackclient/volume/v3/block_storage_cleanup.py +11 -3
  248. openstackclient/volume/v3/block_storage_cluster.py +19 -7
  249. openstackclient/volume/v3/block_storage_log_level.py +15 -6
  250. openstackclient/volume/v3/block_storage_manage.py +10 -4
  251. openstackclient/volume/v3/block_storage_resource_filter.py +17 -5
  252. openstackclient/volume/v3/service.py +16 -6
  253. openstackclient/volume/v3/volume.py +89 -39
  254. openstackclient/volume/v3/volume_attachment.py +43 -21
  255. openstackclient/volume/v3/volume_backup.py +53 -24
  256. openstackclient/volume/v3/volume_group.py +23 -13
  257. openstackclient/volume/v3/volume_group_snapshot.py +32 -13
  258. openstackclient/volume/v3/volume_group_type.py +26 -13
  259. openstackclient/volume/v3/volume_message.py +15 -7
  260. openstackclient/volume/v3/volume_snapshot.py +69 -32
  261. openstackclient/volume/v3/volume_transfer_request.py +31 -13
  262. openstackclient/volume/v3/volume_type.py +42 -24
  263. {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.0.0.dist-info}/METADATA +6 -6
  264. {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.0.0.dist-info}/RECORD +271 -260
  265. {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.0.0.dist-info}/WHEEL +1 -1
  266. {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.0.0.dist-info}/entry_points.txt +53 -1
  267. {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.0.0.dist-info}/licenses/AUTHORS +4 -0
  268. python_openstackclient-10.0.0.dist-info/pbr.json +1 -0
  269. openstackclient/api/image_v1.py +0 -69
  270. openstackclient/api/image_v2.py +0 -79
  271. openstackclient/network/v2/floating_ip_pool.py +0 -38
  272. openstackclient/tests/functional/image/v1/test_image.py +0 -97
  273. openstackclient/tests/unit/api/test_image_v1.py +0 -96
  274. openstackclient/tests/unit/api/test_image_v2.py +0 -96
  275. openstackclient/tests/unit/network/v2/test_floating_ip_compute.py +0 -248
  276. openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py +0 -49
  277. openstackclient/tests/unit/network/v2/test_floating_ip_pool_network.py +0 -39
  278. openstackclient/tests/unit/network/v2/test_network_compute.py +0 -404
  279. openstackclient/tests/unit/network/v2/test_security_group_compute.py +0 -392
  280. openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py +0 -555
  281. python_openstackclient-9.0.0.dist-info/pbr.json +0 -1
  282. /openstackclient/{tests/functional/image/v1 → network/v2/bgpvpn}/__init__.py +0 -0
  283. {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.0.0.dist-info}/licenses/LICENSE +0 -0
  284. {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.0.0.dist-info}/top_level.txt +0 -0
@@ -13,9 +13,11 @@
13
13
 
14
14
  """Volume v3 Type action implementations"""
15
15
 
16
+ import argparse
17
+ from collections.abc import Iterable, MutableMapping, Sequence
16
18
  import functools
17
19
  import logging
18
- import typing as ty
20
+ from typing import Any
19
21
 
20
22
  from cinderclient import api_versions
21
23
  from cliff import columns as cliff_columns
@@ -32,7 +34,7 @@ from openstackclient.identity import common as identity_common
32
34
  LOG = logging.getLogger(__name__)
33
35
 
34
36
 
35
- class EncryptionInfoColumn(cliff_columns.FormattableColumn[ty.Any]):
37
+ class EncryptionInfoColumn(cliff_columns.FormattableColumn[Any]):
36
38
  """Formattable column for encryption info column.
37
39
 
38
40
  Unlike the parent FormattableColumn class, the initializer of the
@@ -43,26 +45,30 @@ class EncryptionInfoColumn(cliff_columns.FormattableColumn[ty.Any]):
43
45
  ``functools.partial(EncryptionInfoColumn encryption_data)``.
44
46
  """
45
47
 
46
- def __init__(self, value, encryption_data=None):
48
+ def __init__(
49
+ self, value: Any, encryption_data: dict[str, Any] | None = None
50
+ ) -> None:
47
51
  super().__init__(value)
48
52
  self._encryption_data = encryption_data or {}
49
53
 
50
- def _get_encryption_info(self):
54
+ def _get_encryption_info(self) -> Any:
51
55
  type_id = self._value
52
56
  return self._encryption_data.get(type_id)
53
57
 
54
- def human_readable(self):
58
+ def human_readable(self) -> str:
55
59
  encryption_info = self._get_encryption_info()
56
60
  if encryption_info:
57
61
  return utils.format_dict(encryption_info)
58
62
  else:
59
63
  return '-'
60
64
 
61
- def machine_readable(self):
65
+ def machine_readable(self) -> Any:
62
66
  return self._get_encryption_info()
63
67
 
64
68
 
65
- def _create_encryption_type(volume_client, volume_type, parsed_args):
69
+ def _create_encryption_type(
70
+ volume_client: Any, volume_type: Any, parsed_args: argparse.Namespace
71
+ ) -> Any:
66
72
  if not parsed_args.encryption_provider:
67
73
  msg = _(
68
74
  "'--encryption-provider' should be specified while "
@@ -85,7 +91,9 @@ def _create_encryption_type(volume_client, volume_type, parsed_args):
85
91
  return encryption
86
92
 
87
93
 
88
- def _set_encryption_type(volume_client, volume_type, parsed_args):
94
+ def _set_encryption_type(
95
+ volume_client: Any, volume_type: Any, parsed_args: argparse.Namespace
96
+ ) -> None:
89
97
  # update the existing encryption type
90
98
  body = {}
91
99
  for attr in ['provider', 'cipher', 'key_size', 'control_location']:
@@ -109,7 +117,7 @@ def _set_encryption_type(volume_client, volume_type, parsed_args):
109
117
  class CreateVolumeType(command.ShowOne):
110
118
  _description = _("Create new volume type")
111
119
 
112
- def get_parser(self, prog_name):
120
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
113
121
  parser = super().get_parser(prog_name)
114
122
  parser.add_argument(
115
123
  "name",
@@ -243,7 +251,9 @@ class CreateVolumeType(command.ShowOne):
243
251
  )
244
252
  return parser
245
253
 
246
- def take_action(self, parsed_args):
254
+ def take_action(
255
+ self, parsed_args: argparse.Namespace
256
+ ) -> tuple[Sequence[str], Iterable[Any]]:
247
257
  identity_client = self.app.client_manager.identity
248
258
  volume_client = self.app.client_manager.volume
249
259
 
@@ -325,13 +335,14 @@ class CreateVolumeType(command.ShowOne):
325
335
 
326
336
  volume_type._info.pop("os-volume-type-access:is_public", None)
327
337
 
328
- return zip(*sorted(volume_type._info.items()))
338
+ col_headers, col_data = zip(*sorted(volume_type._info.items()))
339
+ return col_headers, col_data
329
340
 
330
341
 
331
342
  class DeleteVolumeType(command.Command):
332
343
  _description = _("Delete volume type(s)")
333
344
 
334
- def get_parser(self, prog_name):
345
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
335
346
  parser = super().get_parser(prog_name)
336
347
  parser.add_argument(
337
348
  "volume_types",
@@ -341,7 +352,7 @@ class DeleteVolumeType(command.Command):
341
352
  )
342
353
  return parser
343
354
 
344
- def take_action(self, parsed_args):
355
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
345
356
  volume_client = self.app.client_manager.volume
346
357
  result = 0
347
358
 
@@ -373,7 +384,7 @@ class DeleteVolumeType(command.Command):
373
384
  class ListVolumeType(command.Lister):
374
385
  _description = _("List volume types")
375
386
 
376
- def get_parser(self, prog_name):
387
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
377
388
  parser = super().get_parser(prog_name)
378
389
  parser.add_argument(
379
390
  '--long',
@@ -467,7 +478,9 @@ class ListVolumeType(command.Lister):
467
478
  )
468
479
  return parser
469
480
 
470
- def take_action(self, parsed_args):
481
+ def take_action(
482
+ self, parsed_args: argparse.Namespace
483
+ ) -> tuple[Sequence[str], Iterable[tuple[Any, ...]]]:
471
484
  volume_client = self.app.client_manager.volume
472
485
 
473
486
  if parsed_args.long:
@@ -522,7 +535,9 @@ class ListVolumeType(command.Lister):
522
535
  is_public=parsed_args.is_public,
523
536
  )
524
537
 
525
- formatters = {'Extra Specs': format_columns.DictColumn}
538
+ formatters: MutableMapping[str, Any] = {
539
+ 'Extra Specs': format_columns.DictColumn
540
+ }
526
541
 
527
542
  if parsed_args.encryption_type:
528
543
  encryption = {}
@@ -549,7 +564,7 @@ class ListVolumeType(command.Lister):
549
564
  _EncryptionInfoColumn = functools.partial(
550
565
  EncryptionInfoColumn, encryption_data=encryption
551
566
  )
552
- formatters['id'] = _EncryptionInfoColumn # type: ignore
567
+ formatters['id'] = _EncryptionInfoColumn
553
568
 
554
569
  return (
555
570
  column_headers,
@@ -567,7 +582,7 @@ class ListVolumeType(command.Lister):
567
582
  class SetVolumeType(command.Command):
568
583
  _description = _("Set volume type properties")
569
584
 
570
- def get_parser(self, prog_name):
585
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
571
586
  parser = super().get_parser(prog_name)
572
587
  parser.add_argument(
573
588
  'volume_type',
@@ -706,7 +721,7 @@ class SetVolumeType(command.Command):
706
721
  )
707
722
  return parser
708
723
 
709
- def take_action(self, parsed_args):
724
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
710
725
  volume_client = self.app.client_manager.volume
711
726
  identity_client = self.app.client_manager.identity
712
727
 
@@ -802,7 +817,7 @@ class SetVolumeType(command.Command):
802
817
  class ShowVolumeType(command.ShowOne):
803
818
  _description = _("Display volume type details")
804
819
 
805
- def get_parser(self, prog_name):
820
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
806
821
  parser = super().get_parser(prog_name)
807
822
  parser.add_argument(
808
823
  "volume_type",
@@ -819,7 +834,9 @@ class ShowVolumeType(command.ShowOne):
819
834
  )
820
835
  return parser
821
836
 
822
- def take_action(self, parsed_args):
837
+ def take_action(
838
+ self, parsed_args: argparse.Namespace
839
+ ) -> tuple[Sequence[str], Iterable[Any]]:
823
840
  volume_client = self.app.client_manager.volume
824
841
  volume_type = utils.find_resource(
825
842
  volume_client.volume_types, parsed_args.volume_type
@@ -867,13 +884,14 @@ class ShowVolumeType(command.ShowOne):
867
884
  e,
868
885
  )
869
886
  volume_type._info.pop("os-volume-type-access:is_public", None)
870
- return zip(*sorted(volume_type._info.items()))
887
+ col_headers, col_data = zip(*sorted(volume_type._info.items()))
888
+ return col_headers, col_data
871
889
 
872
890
 
873
891
  class UnsetVolumeType(command.Command):
874
892
  _description = _("Unset volume type properties")
875
893
 
876
- def get_parser(self, prog_name):
894
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
877
895
  parser = super().get_parser(prog_name)
878
896
  parser.add_argument(
879
897
  'volume_type',
@@ -908,7 +926,7 @@ class UnsetVolumeType(command.Command):
908
926
  )
909
927
  return parser
910
928
 
911
- def take_action(self, parsed_args):
929
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
912
930
  volume_client = self.app.client_manager.volume
913
931
  identity_client = self.app.client_manager.identity
914
932
 
@@ -1,15 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-openstackclient
3
- Version: 9.0.0
3
+ Version: 10.0.0
4
4
  Summary: OpenStack Command-line Client
5
5
  Author-email: OpenStack <openstack-discuss@lists.openstack.org>
6
- License: Apache-2.0
6
+ License-Expression: Apache-2.0
7
7
  Project-URL: Homepage, https://docs.openstack.org/python-openstackclient/
8
8
  Project-URL: Repository, https://opendev.org/openstack/python-openstackclient/
9
9
  Classifier: Environment :: OpenStack
10
10
  Classifier: Intended Audience :: Information Technology
11
11
  Classifier: Intended Audience :: System Administrators
12
- Classifier: License :: OSI Approved :: Apache Software License
13
12
  Classifier: Operating System :: POSIX :: Linux
14
13
  Classifier: Programming Language :: Python
15
14
  Classifier: Programming Language :: Python :: 3
@@ -17,16 +16,17 @@ Classifier: Programming Language :: Python :: 3.10
17
16
  Classifier: Programming Language :: Python :: 3.11
18
17
  Classifier: Programming Language :: Python :: 3.12
19
18
  Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Programming Language :: Python :: 3.14
20
+ Classifier: Typing :: Typed
20
21
  Requires-Python: >=3.10
21
22
  Description-Content-Type: text/x-rst
22
23
  License-File: LICENSE
23
24
  License-File: AUTHORS
24
- Requires-Dist: pbr!=2.1.0,>=2.0.0
25
25
  Requires-Dist: cryptography>=2.7
26
26
  Requires-Dist: cliff>=4.13.0
27
27
  Requires-Dist: iso8601>=0.1.11
28
- Requires-Dist: openstacksdk>=4.6.0
29
- Requires-Dist: osc-lib>=2.3.0
28
+ Requires-Dist: openstacksdk>=4.12.0
29
+ Requires-Dist: osc-lib>=4.6.0
30
30
  Requires-Dist: oslo.i18n>=3.15.3
31
31
  Requires-Dist: python-keystoneclient>=3.22.0
32
32
  Requires-Dist: python-cinderclient>=3.3.0