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
@@ -15,7 +15,10 @@
15
15
 
16
16
  """Image V2 Action Implementations"""
17
17
 
18
+ import argparse
19
+ from collections.abc import Iterable, Sequence
18
20
  import logging
21
+ from typing import Any
19
22
 
20
23
  from osc_lib import exceptions
21
24
  from osc_lib import utils
@@ -27,7 +30,7 @@ from openstackclient.i18n import _
27
30
  LOG = logging.getLogger(__name__)
28
31
 
29
32
 
30
- def _format_object(md_object):
33
+ def _format_object(md_object: Any) -> tuple[tuple[str, ...], Any]:
31
34
  fields_to_show = (
32
35
  'created_at',
33
36
  'description',
@@ -50,7 +53,7 @@ def _format_object(md_object):
50
53
  class CreateMetadefObjects(command.ShowOne):
51
54
  _description = _("Create a metadef object")
52
55
 
53
- def get_parser(self, prog_name):
56
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
54
57
  parser = super().get_parser(prog_name)
55
58
  parser.add_argument(
56
59
  "--namespace",
@@ -64,7 +67,9 @@ class CreateMetadefObjects(command.ShowOne):
64
67
  )
65
68
  return parser
66
69
 
67
- def take_action(self, parsed_args):
70
+ def take_action(
71
+ self, parsed_args: argparse.Namespace
72
+ ) -> tuple[Sequence[str], Iterable[Any]]:
68
73
  image_client = self.app.client_manager.image
69
74
 
70
75
  namespace = image_client.get_metadef_namespace(
@@ -83,7 +88,7 @@ class CreateMetadefObjects(command.ShowOne):
83
88
  class ShowMetadefObjects(command.ShowOne):
84
89
  _description = _("Show a particular metadef object")
85
90
 
86
- def get_parser(self, prog_name):
91
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
87
92
  parser = super().get_parser(prog_name)
88
93
  parser.add_argument(
89
94
  "namespace",
@@ -97,7 +102,9 @@ class ShowMetadefObjects(command.ShowOne):
97
102
  )
98
103
  return parser
99
104
 
100
- def take_action(self, parsed_args):
105
+ def take_action(
106
+ self, parsed_args: argparse.Namespace
107
+ ) -> tuple[Sequence[str], Iterable[Any]]:
101
108
  image_client = self.app.client_manager.image
102
109
 
103
110
  namespace = parsed_args.namespace
@@ -113,7 +120,7 @@ class ShowMetadefObjects(command.ShowOne):
113
120
  class DeleteMetadefObject(command.Command):
114
121
  _description = _("Delete metadata definitions object(s)")
115
122
 
116
- def get_parser(self, prog_name):
123
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
117
124
  parser = super().get_parser(prog_name)
118
125
  parser.add_argument(
119
126
  "namespace",
@@ -131,13 +138,14 @@ class DeleteMetadefObject(command.Command):
131
138
  )
132
139
  return parser
133
140
 
134
- def take_action(self, parsed_args):
141
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
135
142
  image_client = self.app.client_manager.image
136
143
 
137
144
  namespace = parsed_args.namespace
138
145
 
139
146
  if not parsed_args.objects:
140
- return image_client.delete_all_metadef_objects(namespace)
147
+ image_client.delete_all_metadef_objects(namespace)
148
+ return
141
149
 
142
150
  result = 0
143
151
  for obj in parsed_args.objects:
@@ -166,7 +174,7 @@ class DeleteMetadefObject(command.Command):
166
174
  class ListMetadefObjects(command.Lister):
167
175
  _description = _("List metadef objects inside a specific namespace.")
168
176
 
169
- def get_parser(self, prog_name):
177
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
170
178
  parser = super().get_parser(prog_name)
171
179
  parser.add_argument(
172
180
  "namespace",
@@ -175,7 +183,9 @@ class ListMetadefObjects(command.Lister):
175
183
  )
176
184
  return parser
177
185
 
178
- def take_action(self, parsed_args):
186
+ def take_action(
187
+ self, parsed_args: argparse.Namespace
188
+ ) -> tuple[Sequence[str], Iterable[tuple[Any, ...]]]:
179
189
  image_client = self.app.client_manager.image
180
190
 
181
191
  namespace = parsed_args.namespace
@@ -198,7 +208,7 @@ class ListMetadefObjects(command.Lister):
198
208
  class SetMetadefObject(command.Command):
199
209
  _description = _("Update a metadef object")
200
210
 
201
- def get_parser(self, prog_name):
211
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
202
212
  parser = super().get_parser(prog_name)
203
213
  parser.add_argument(
204
214
  "namespace",
@@ -216,7 +226,7 @@ class SetMetadefObject(command.Command):
216
226
  )
217
227
  return parser
218
228
 
219
- def take_action(self, parsed_args):
229
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
220
230
  image_client = self.app.client_manager.image
221
231
 
222
232
  object = image_client.get_metadef_object(
@@ -236,7 +246,7 @@ class ShowMetadefObjectProperty(command.ShowOne):
236
246
  "Describe a specific metadata definitions property inside an object."
237
247
  )
238
248
 
239
- def get_parser(self, prog_name):
249
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
240
250
  parser = super().get_parser(prog_name)
241
251
  parser.add_argument(
242
252
  "namespace",
@@ -254,7 +264,9 @@ class ShowMetadefObjectProperty(command.ShowOne):
254
264
  )
255
265
  return parser
256
266
 
257
- def take_action(self, parsed_args):
267
+ def take_action(
268
+ self, parsed_args: argparse.Namespace
269
+ ) -> tuple[Sequence[str], Iterable[Any]]:
258
270
  image_client = self.app.client_manager.image
259
271
 
260
272
  namespace_name = parsed_args.namespace
@@ -274,4 +286,5 @@ class ShowMetadefObjectProperty(command.ShowOne):
274
286
  }
275
287
  raise exceptions.CommandError(msg)
276
288
 
277
- return zip(*sorted(prop.items()))
289
+ col_headers, col_data = zip(*sorted(prop.items()))
290
+ return col_headers, col_data
@@ -12,8 +12,11 @@
12
12
  # License for the specific language governing permissions and limitations
13
13
  # under the License.
14
14
 
15
+ import argparse
16
+ from collections.abc import Iterable, Sequence
15
17
  import json
16
18
  import logging
19
+ from typing import Any
17
20
 
18
21
  from osc_lib import exceptions
19
22
  from osc_lib import utils
@@ -25,7 +28,7 @@ from openstackclient.i18n import _
25
28
  LOG = logging.getLogger(__name__)
26
29
 
27
30
 
28
- def _format_property(prop):
31
+ def _format_property(prop: Any) -> dict[str, Any]:
29
32
  prop = prop.to_dict(ignore_none=True, original_names=True)
30
33
  return {
31
34
  key: prop[key]
@@ -57,7 +60,7 @@ def _format_property(prop):
57
60
  class CreateMetadefProperty(command.ShowOne):
58
61
  _description = _("Create a metadef property")
59
62
 
60
- def get_parser(self, prog_name):
63
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
61
64
  parser = super().get_parser(prog_name)
62
65
  parser.add_argument(
63
66
  "--name",
@@ -85,7 +88,9 @@ class CreateMetadefProperty(command.ShowOne):
85
88
  )
86
89
  return parser
87
90
 
88
- def take_action(self, parsed_args):
91
+ def take_action(
92
+ self, parsed_args: argparse.Namespace
93
+ ) -> tuple[Sequence[str], Iterable[Any]]:
89
94
  image_client = self.app.client_manager.image
90
95
 
91
96
  kwargs = {
@@ -108,13 +113,14 @@ class CreateMetadefProperty(command.ShowOne):
108
113
  )
109
114
  info = _format_property(data)
110
115
 
111
- return zip(*sorted(info.items()))
116
+ col_headers, col_data = zip(*sorted(info.items()))
117
+ return col_headers, col_data
112
118
 
113
119
 
114
120
  class DeleteMetadefProperty(command.Command):
115
121
  _description = _("Delete metadef propert(ies)")
116
122
 
117
- def get_parser(self, prog_name):
123
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
118
124
  parser = super().get_parser(prog_name)
119
125
  parser.add_argument(
120
126
  "namespace",
@@ -133,7 +139,7 @@ class DeleteMetadefProperty(command.Command):
133
139
  )
134
140
  return parser
135
141
 
136
- def take_action(self, parsed_args):
142
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
137
143
  image_client = self.app.client_manager.image
138
144
 
139
145
  if not parsed_args.properties:
@@ -174,7 +180,7 @@ class DeleteMetadefProperty(command.Command):
174
180
  class ListMetadefProperties(command.Lister):
175
181
  _description = _("List metadef properties")
176
182
 
177
- def get_parser(self, prog_name):
183
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
178
184
  parser = super().get_parser(prog_name)
179
185
  parser.add_argument(
180
186
  "namespace",
@@ -183,7 +189,9 @@ class ListMetadefProperties(command.Lister):
183
189
  )
184
190
  return parser
185
191
 
186
- def take_action(self, parsed_args):
192
+ def take_action(
193
+ self, parsed_args: argparse.Namespace
194
+ ) -> tuple[Sequence[str], Iterable[tuple[Any, ...]]]:
187
195
  image_client = self.app.client_manager.image
188
196
  props = image_client.metadef_properties(parsed_args.namespace)
189
197
  columns = ['name', 'title', 'type']
@@ -202,7 +210,7 @@ class ListMetadefProperties(command.Lister):
202
210
  class SetMetadefProperty(command.Command):
203
211
  _description = _("Update metadef namespace property")
204
212
 
205
- def get_parser(self, prog_name):
213
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
206
214
  parser = super().get_parser(prog_name)
207
215
  parser.add_argument(
208
216
  "--name",
@@ -230,7 +238,7 @@ class SetMetadefProperty(command.Command):
230
238
  )
231
239
  return parser
232
240
 
233
- def take_action(self, parsed_args):
241
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
234
242
  image_client = self.app.client_manager.image
235
243
 
236
244
  # We need to pass the values for *all* attributes as kwargs to
@@ -267,7 +275,7 @@ class SetMetadefProperty(command.Command):
267
275
  class ShowMetadefProperty(command.ShowOne):
268
276
  _description = _("Show a particular metadef property")
269
277
 
270
- def get_parser(self, prog_name):
278
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
271
279
  parser = super().get_parser(prog_name)
272
280
  parser.add_argument(
273
281
  "namespace",
@@ -281,7 +289,9 @@ class ShowMetadefProperty(command.ShowOne):
281
289
  )
282
290
  return parser
283
291
 
284
- def take_action(self, parsed_args):
292
+ def take_action(
293
+ self, parsed_args: argparse.Namespace
294
+ ) -> tuple[Sequence[str], Iterable[Any]]:
285
295
  image_client = self.app.client_manager.image
286
296
  data = image_client.get_metadef_property(
287
297
  parsed_args.property,
@@ -289,4 +299,5 @@ class ShowMetadefProperty(command.ShowOne):
289
299
  )
290
300
  info = _format_property(data)
291
301
 
292
- return zip(*sorted(info.items()))
302
+ col_headers, col_data = zip(*sorted(info.items()))
303
+ return col_headers, col_data
@@ -10,7 +10,10 @@
10
10
  # License for the specific language governing permissions and limitations
11
11
  # under the License.
12
12
 
13
+ import argparse
14
+ from collections.abc import Iterable, Sequence
13
15
  import logging
16
+ from typing import Any
14
17
 
15
18
  from osc_lib import exceptions
16
19
  from osc_lib import utils
@@ -21,7 +24,7 @@ from openstackclient.i18n import _
21
24
  LOG = logging.getLogger(__name__)
22
25
 
23
26
 
24
- def _get_columns(item):
27
+ def _get_columns(item: Any) -> tuple[tuple[str, ...], tuple[str, ...]]:
25
28
  hidden_columns = ['location']
26
29
  return utils.get_osc_show_columns_for_sdk_resource(
27
30
  item, {}, hidden_columns
@@ -31,7 +34,7 @@ def _get_columns(item):
31
34
  class CreateMetadefResourceTypeAssociation(command.ShowOne):
32
35
  _description = _("Create metadef resource type association")
33
36
 
34
- def get_parser(self, prog_name):
37
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
35
38
  parser = super().get_parser(prog_name)
36
39
  parser.add_argument(
37
40
  "namespace",
@@ -56,7 +59,9 @@ class CreateMetadefResourceTypeAssociation(command.ShowOne):
56
59
  )
57
60
  return parser
58
61
 
59
- def take_action(self, parsed_args):
62
+ def take_action(
63
+ self, parsed_args: argparse.Namespace
64
+ ) -> tuple[Sequence[str], Iterable[Any]]:
60
65
  image_client = self.app.client_manager.image
61
66
  kwargs = {}
62
67
 
@@ -79,7 +84,7 @@ class CreateMetadefResourceTypeAssociation(command.ShowOne):
79
84
  class DeleteMetadefResourceTypeAssociation(command.Command):
80
85
  _description = _("Delete metadef resource type association")
81
86
 
82
- def get_parser(self, prog_name):
87
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
83
88
  parser = super().get_parser(prog_name)
84
89
  parser.add_argument(
85
90
  "metadef_namespace",
@@ -107,7 +112,7 @@ class DeleteMetadefResourceTypeAssociation(command.Command):
107
112
  )
108
113
  return parser
109
114
 
110
- def take_action(self, parsed_args):
115
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
111
116
  image_client = self.app.client_manager.image
112
117
 
113
118
  result = 0
@@ -160,7 +165,7 @@ class DeleteMetadefResourceTypeAssociation(command.Command):
160
165
  class ListMetadefResourceTypeAssociations(command.Lister):
161
166
  _description = _("List metadef resource type associations")
162
167
 
163
- def get_parser(self, prog_name):
168
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
164
169
  parser = super().get_parser(prog_name)
165
170
  parser.add_argument(
166
171
  "metadef_namespace",
@@ -169,7 +174,9 @@ class ListMetadefResourceTypeAssociations(command.Lister):
169
174
  )
170
175
  return parser
171
176
 
172
- def take_action(self, parsed_args):
177
+ def take_action(
178
+ self, parsed_args: argparse.Namespace
179
+ ) -> tuple[Sequence[str], Iterable[Any]]:
173
180
  image_client = self.app.client_manager.image
174
181
  data = image_client.metadef_resource_type_associations(
175
182
  parsed_args.metadef_namespace,
@@ -12,6 +12,10 @@
12
12
 
13
13
  """Image V2 Action Implementations"""
14
14
 
15
+ import argparse
16
+ from collections.abc import Iterable, Sequence
17
+ from typing import Any
18
+
15
19
  from osc_lib import utils
16
20
 
17
21
  from openstackclient import command
@@ -21,7 +25,9 @@ from openstackclient.i18n import _
21
25
  class ListMetadefResourceTypes(command.Lister):
22
26
  _description = _("List metadef resource types")
23
27
 
24
- def take_action(self, parsed_args):
28
+ def take_action(
29
+ self, parsed_args: argparse.Namespace
30
+ ) -> tuple[Sequence[str], Iterable[tuple[Any, ...]]]:
25
31
  image_client = self.app.client_manager.image
26
32
  data = image_client.metadef_resource_types()
27
33
  columns = ['Name']
@@ -10,6 +10,10 @@
10
10
  # License for the specific language governing permissions and limitations
11
11
  # under the License.
12
12
 
13
+ import argparse
14
+ from collections.abc import Iterable, Sequence
15
+ from typing import Any
16
+
13
17
  from osc_lib.cli import format_columns
14
18
  from osc_lib import utils
15
19
 
@@ -21,7 +25,7 @@ _formatters = {
21
25
  }
22
26
 
23
27
 
24
- def _format_task(task):
28
+ def _format_task(task: Any) -> dict[str, Any]:
25
29
  """Format an task to make it more consistent with OSC operations."""
26
30
 
27
31
  info = {}
@@ -63,7 +67,7 @@ def _format_task(task):
63
67
  class ShowTask(command.ShowOne):
64
68
  _description = _('Display task details')
65
69
 
66
- def get_parser(self, prog_name):
70
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
67
71
  parser = super().get_parser(prog_name)
68
72
 
69
73
  parser.add_argument(
@@ -74,19 +78,22 @@ class ShowTask(command.ShowOne):
74
78
 
75
79
  return parser
76
80
 
77
- def take_action(self, parsed_args):
81
+ def take_action(
82
+ self, parsed_args: argparse.Namespace
83
+ ) -> tuple[Sequence[str], Iterable[Any]]:
78
84
  image_client = self.app.client_manager.image
79
85
 
80
86
  task = image_client.get_task(parsed_args.task)
81
87
  info = _format_task(task)
82
88
 
83
- return zip(*sorted(info.items()))
89
+ col_headers, col_data = zip(*sorted(info.items()))
90
+ return col_headers, col_data
84
91
 
85
92
 
86
93
  class ListTask(command.Lister):
87
94
  _description = _('List tasks')
88
95
 
89
- def get_parser(self, prog_name):
96
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
90
97
  parser = super().get_parser(prog_name)
91
98
 
92
99
  parser.add_argument(
@@ -146,7 +153,9 @@ class ListTask(command.Lister):
146
153
 
147
154
  return parser
148
155
 
149
- def take_action(self, parsed_args):
156
+ def take_action(
157
+ self, parsed_args: argparse.Namespace
158
+ ) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
150
159
  image_client = self.app.client_manager.image
151
160
 
152
161
  columns = ('id', 'type', 'status', 'owner_id')