python-openstackclient 9.0.0__py3-none-any.whl → 10.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (352) 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 +59 -43
  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 +36 -34
  14. openstackclient/common/pagination.py +50 -6
  15. openstackclient/common/progressbar.py +7 -6
  16. openstackclient/common/project_cleanup.py +11 -6
  17. openstackclient/common/quota.py +105 -103
  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 +42 -22
  25. openstackclient/compute/v2/host.py +14 -6
  26. openstackclient/compute/v2/hypervisor.py +16 -5
  27. openstackclient/compute/v2/hypervisor_stats.py +10 -2
  28. openstackclient/compute/v2/keypair.py +35 -16
  29. openstackclient/compute/v2/server.py +268 -179
  30. openstackclient/compute/v2/server_backup.py +10 -4
  31. openstackclient/compute/v2/server_event.py +28 -12
  32. openstackclient/compute/v2/server_group.py +23 -11
  33. openstackclient/compute/v2/server_image.py +19 -10
  34. openstackclient/compute/v2/server_migration.py +27 -10
  35. openstackclient/compute/v2/server_share.py +274 -0
  36. openstackclient/compute/v2/server_volume.py +13 -5
  37. openstackclient/compute/v2/service.py +17 -8
  38. openstackclient/compute/v2/usage.py +28 -23
  39. openstackclient/identity/client.py +8 -3
  40. openstackclient/identity/common.py +82 -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 +32 -12
  51. openstackclient/identity/v3/application_credential.py +66 -24
  52. openstackclient/identity/v3/catalog.py +14 -7
  53. openstackclient/identity/v3/consumer.py +22 -11
  54. openstackclient/identity/v3/credential.py +39 -17
  55. openstackclient/identity/v3/domain.py +40 -19
  56. openstackclient/identity/v3/ec2creds.py +25 -12
  57. openstackclient/identity/v3/endpoint.py +98 -64
  58. openstackclient/identity/v3/endpoint_group.py +28 -17
  59. openstackclient/identity/v3/federation_protocol.py +44 -20
  60. openstackclient/identity/v3/group.py +64 -40
  61. openstackclient/identity/v3/identity_provider.py +95 -57
  62. openstackclient/identity/v3/implied_role.py +21 -9
  63. openstackclient/identity/v3/limit.py +42 -17
  64. openstackclient/identity/v3/mapping.py +58 -28
  65. openstackclient/identity/v3/policy.py +23 -12
  66. openstackclient/identity/v3/project.py +59 -26
  67. openstackclient/identity/v3/region.py +39 -17
  68. openstackclient/identity/v3/registered_limit.py +41 -16
  69. openstackclient/identity/v3/role.py +62 -31
  70. openstackclient/identity/v3/role_assignment.py +25 -7
  71. openstackclient/identity/v3/service.py +39 -17
  72. openstackclient/identity/v3/service_provider.py +40 -16
  73. openstackclient/identity/v3/tag.py +23 -6
  74. openstackclient/identity/v3/token.py +30 -14
  75. openstackclient/identity/v3/trust.py +39 -18
  76. openstackclient/identity/v3/unscoped_saml.py +10 -2
  77. openstackclient/identity/v3/user.py +86 -36
  78. openstackclient/image/client.py +7 -3
  79. openstackclient/image/v1/image.py +33 -26
  80. openstackclient/image/v2/cache.py +16 -11
  81. openstackclient/image/v2/image.py +88 -56
  82. openstackclient/image/v2/info.py +7 -1
  83. openstackclient/image/v2/metadef_namespaces.py +117 -20
  84. openstackclient/image/v2/metadef_objects.py +32 -19
  85. openstackclient/image/v2/metadef_properties.py +30 -16
  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 +25 -27
  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 +27 -54
  93. openstackclient/network/v2/address_group.py +39 -16
  94. openstackclient/network/v2/address_scope.py +36 -20
  95. openstackclient/network/v2/bgpvpn/bgpvpn.py +477 -0
  96. openstackclient/network/v2/bgpvpn/constants.py +30 -0
  97. openstackclient/network/v2/bgpvpn/network_association.py +226 -0
  98. openstackclient/network/v2/bgpvpn/port_association.py +504 -0
  99. openstackclient/network/v2/bgpvpn/router_association.py +301 -0
  100. openstackclient/network/v2/default_security_group_rule.py +31 -14
  101. openstackclient/network/v2/floating_ip.py +121 -162
  102. openstackclient/network/v2/floating_ip_port_forwarding.py +41 -19
  103. openstackclient/network/v2/fwaas/__init__.py +0 -0
  104. openstackclient/network/v2/fwaas/group.py +499 -0
  105. openstackclient/network/v2/fwaas/policy.py +518 -0
  106. openstackclient/network/v2/fwaas/rule.py +610 -0
  107. openstackclient/network/v2/ip_availability.py +25 -8
  108. openstackclient/network/v2/l3_conntrack_helper.py +35 -13
  109. openstackclient/network/v2/local_ip.py +27 -13
  110. openstackclient/network/v2/local_ip_association.py +17 -7
  111. openstackclient/network/v2/ndp_proxy.py +23 -11
  112. openstackclient/network/v2/network.py +213 -213
  113. openstackclient/network/v2/network_agent.py +77 -34
  114. openstackclient/network/v2/network_auto_allocated_topology.py +27 -15
  115. openstackclient/network/v2/network_flavor.py +45 -21
  116. openstackclient/network/v2/network_flavor_profile.py +42 -17
  117. openstackclient/network/v2/network_meter.py +39 -15
  118. openstackclient/network/v2/network_meter_rule.py +40 -12
  119. openstackclient/network/v2/network_qos_policy.py +39 -21
  120. openstackclient/network/v2/network_qos_rule.py +48 -18
  121. openstackclient/network/v2/network_qos_rule_type.py +28 -9
  122. openstackclient/network/v2/network_rbac.py +34 -16
  123. openstackclient/network/v2/network_segment.py +32 -11
  124. openstackclient/network/v2/network_segment_range.py +70 -31
  125. openstackclient/network/v2/network_service_provider.py +7 -1
  126. openstackclient/network/v2/network_trunk.py +41 -22
  127. openstackclient/network/v2/port.py +141 -40
  128. openstackclient/network/v2/router.py +101 -67
  129. openstackclient/network/v2/security_group.py +97 -198
  130. openstackclient/network/v2/security_group_rule.py +115 -282
  131. openstackclient/network/v2/subnet.py +63 -34
  132. openstackclient/network/v2/subnet_pool.py +42 -24
  133. openstackclient/network/v2/taas/tap_flow.py +35 -14
  134. openstackclient/network/v2/taas/tap_mirror.py +28 -14
  135. openstackclient/network/v2/taas/tap_service.py +26 -12
  136. openstackclient/object/client.py +7 -2
  137. openstackclient/object/v1/account.py +13 -6
  138. openstackclient/object/v1/container.py +28 -16
  139. openstackclient/object/v1/object.py +28 -16
  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 +59 -19
  151. openstackclient/tests/functional/identity/v3/test_application_credential.py +1 -1
  152. openstackclient/tests/functional/identity/v3/test_group.py +20 -20
  153. openstackclient/tests/functional/identity/v3/test_idp.py +3 -1
  154. openstackclient/tests/functional/identity/v3/test_mapping.py +81 -0
  155. openstackclient/tests/functional/identity/v3/test_project.py +10 -10
  156. openstackclient/tests/functional/identity/v3/test_role.py +18 -18
  157. openstackclient/tests/functional/identity/v3/test_role_assignment.py +12 -12
  158. openstackclient/tests/functional/identity/v3/test_user.py +8 -8
  159. openstackclient/tests/functional/image/base.py +1 -6
  160. openstackclient/tests/functional/network/v2/common.py +5 -2
  161. openstackclient/tests/functional/network/v2/test_floating_ip.py +10 -4
  162. openstackclient/tests/functional/network/v2/test_ip_availability.py +4 -0
  163. openstackclient/tests/functional/network/v2/test_network_meter_rule.py +3 -2
  164. openstackclient/tests/functional/network/v2/test_network_segment.py +5 -0
  165. openstackclient/tests/functional/network/v2/test_subnet.py +13 -9
  166. openstackclient/tests/functional/object/v1/common.py +4 -0
  167. openstackclient/tests/functional/volume/v2/common.py +4 -0
  168. openstackclient/tests/functional/volume/v2/test_volume_snapshot.py +27 -11
  169. openstackclient/tests/functional/volume/v2/test_volume_type.py +2 -2
  170. openstackclient/tests/functional/volume/v3/common.py +4 -0
  171. openstackclient/tests/functional/volume/v3/test_volume_group.py +163 -0
  172. openstackclient/tests/functional/volume/v3/test_volume_snapshot.py +11 -7
  173. openstackclient/tests/functional/volume/v3/test_volume_type.py +2 -2
  174. openstackclient/tests/unit/common/test_availability_zone.py +35 -49
  175. openstackclient/tests/unit/common/test_extension.py +2 -2
  176. openstackclient/tests/unit/common/test_limits.py +1 -1
  177. openstackclient/tests/unit/common/test_module.py +82 -44
  178. openstackclient/tests/unit/common/test_project_cleanup.py +3 -1
  179. openstackclient/tests/unit/common/test_quota.py +15 -26
  180. openstackclient/tests/unit/compute/v2/fakes.py +26 -57
  181. openstackclient/tests/unit/compute/v2/test_agent.py +4 -4
  182. openstackclient/tests/unit/compute/v2/test_aggregate.py +1 -1
  183. openstackclient/tests/unit/compute/v2/test_console.py +2 -2
  184. openstackclient/tests/unit/compute/v2/test_console_connection.py +1 -1
  185. openstackclient/tests/unit/compute/v2/test_flavor.py +29 -3
  186. openstackclient/tests/unit/compute/v2/test_host.py +3 -3
  187. openstackclient/tests/unit/compute/v2/test_hypervisor.py +2 -2
  188. openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py +1 -1
  189. openstackclient/tests/unit/compute/v2/test_keypair.py +7 -7
  190. openstackclient/tests/unit/compute/v2/test_server.py +26 -111
  191. openstackclient/tests/unit/compute/v2/test_server_backup.py +1 -1
  192. openstackclient/tests/unit/compute/v2/test_server_event.py +2 -2
  193. openstackclient/tests/unit/compute/v2/test_server_group.py +1 -1
  194. openstackclient/tests/unit/compute/v2/test_server_image.py +1 -1
  195. openstackclient/tests/unit/compute/v2/test_server_migration.py +4 -4
  196. openstackclient/tests/unit/compute/v2/test_server_share.py +287 -0
  197. openstackclient/tests/unit/compute/v2/test_server_volume.py +2 -2
  198. openstackclient/tests/unit/compute/v2/test_service.py +3 -3
  199. openstackclient/tests/unit/compute/v2/test_usage.py +1 -1
  200. openstackclient/tests/unit/identity/v2_0/fakes.py +3 -7
  201. openstackclient/tests/unit/identity/v2_0/test_endpoint.py +1 -1
  202. openstackclient/tests/unit/identity/v2_0/test_project.py +1 -1
  203. openstackclient/tests/unit/identity/v2_0/test_role.py +1 -1
  204. openstackclient/tests/unit/identity/v2_0/test_role_assignment.py +1 -1
  205. openstackclient/tests/unit/identity/v2_0/test_service.py +1 -1
  206. openstackclient/tests/unit/identity/v2_0/test_token.py +2 -2
  207. openstackclient/tests/unit/identity/v2_0/test_user.py +1 -1
  208. openstackclient/tests/unit/identity/v3/fakes.py +8 -38
  209. openstackclient/tests/unit/identity/v3/test_access_rule.py +3 -3
  210. openstackclient/tests/unit/identity/v3/test_application_credential.py +4 -4
  211. openstackclient/tests/unit/identity/v3/test_credential.py +5 -5
  212. openstackclient/tests/unit/identity/v3/test_domain.py +5 -5
  213. openstackclient/tests/unit/identity/v3/test_endpoint.py +6 -6
  214. openstackclient/tests/unit/identity/v3/test_endpoint_group.py +1 -1
  215. openstackclient/tests/unit/identity/v3/test_group.py +12 -22
  216. openstackclient/tests/unit/identity/v3/test_identity_provider.py +303 -299
  217. openstackclient/tests/unit/identity/v3/test_implied_role.py +1 -1
  218. openstackclient/tests/unit/identity/v3/test_limit.py +5 -5
  219. openstackclient/tests/unit/identity/v3/test_mappings.py +163 -79
  220. openstackclient/tests/unit/identity/v3/test_project.py +28 -5
  221. openstackclient/tests/unit/identity/v3/test_protocol.py +3 -3
  222. openstackclient/tests/unit/identity/v3/test_region.py +5 -5
  223. openstackclient/tests/unit/identity/v3/test_registered_limit.py +5 -5
  224. openstackclient/tests/unit/identity/v3/test_role.py +8 -8
  225. openstackclient/tests/unit/identity/v3/test_role_assignment.py +1 -1
  226. openstackclient/tests/unit/identity/v3/test_service.py +5 -5
  227. openstackclient/tests/unit/identity/v3/test_token.py +2 -2
  228. openstackclient/tests/unit/identity/v3/test_trust.py +4 -4
  229. openstackclient/tests/unit/identity/v3/test_user.py +77 -10
  230. openstackclient/tests/unit/image/v2/test_image.py +11 -11
  231. openstackclient/tests/unit/image/v2/test_metadef_namespaces.py +105 -6
  232. openstackclient/tests/unit/network/test_common.py +0 -155
  233. openstackclient/tests/unit/network/v2/bgpvpn/__init__.py +0 -0
  234. openstackclient/tests/unit/network/v2/bgpvpn/fakes.py +179 -0
  235. openstackclient/tests/unit/network/v2/bgpvpn/test_bgpvpn.py +584 -0
  236. openstackclient/tests/unit/network/v2/bgpvpn/test_network_association.py +285 -0
  237. openstackclient/tests/unit/network/v2/bgpvpn/test_port_association.py +384 -0
  238. openstackclient/tests/unit/network/v2/bgpvpn/test_router_association.py +297 -0
  239. openstackclient/tests/unit/network/v2/fakes.py +5 -77
  240. openstackclient/tests/unit/network/v2/fwaas/__init__.py +0 -0
  241. openstackclient/tests/unit/network/v2/fwaas/test_group.py +923 -0
  242. openstackclient/tests/unit/network/v2/fwaas/test_policy.py +869 -0
  243. openstackclient/tests/unit/network/v2/fwaas/test_rule.py +1005 -0
  244. openstackclient/tests/unit/network/v2/taas/{test_osc_tap_flow.py → test_tap_flow.py} +18 -25
  245. openstackclient/tests/unit/network/v2/taas/{test_osc_tap_mirror.py → test_tap_mirror.py} +19 -29
  246. openstackclient/tests/unit/network/v2/taas/{test_osc_tap_service.py → test_tap_service.py} +19 -29
  247. openstackclient/tests/unit/network/v2/test_address_group.py +26 -2
  248. openstackclient/tests/unit/network/v2/test_address_scope.py +24 -0
  249. openstackclient/tests/unit/network/v2/{test_floating_ip_network.py → test_floating_ip.py} +27 -2
  250. openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +37 -13
  251. openstackclient/tests/unit/network/v2/test_ip_availability.py +25 -0
  252. openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py +29 -3
  253. openstackclient/tests/unit/network/v2/test_network.py +74 -12
  254. openstackclient/tests/unit/network/v2/test_network_agent.py +58 -5
  255. openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py +3 -3
  256. openstackclient/tests/unit/network/v2/test_network_flavor.py +26 -2
  257. openstackclient/tests/unit/network/v2/test_network_flavor_profile.py +24 -0
  258. openstackclient/tests/unit/network/v2/test_network_meter.py +24 -0
  259. openstackclient/tests/unit/network/v2/test_network_qos_policy.py +25 -1
  260. openstackclient/tests/unit/network/v2/test_network_qos_rule.py +2 -2
  261. openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py +24 -0
  262. openstackclient/tests/unit/network/v2/test_network_rbac.py +25 -1
  263. openstackclient/tests/unit/network/v2/test_network_segment.py +25 -1
  264. openstackclient/tests/unit/network/v2/test_network_segment_range.py +31 -10
  265. openstackclient/tests/unit/network/v2/test_network_trunk.py +1 -1
  266. openstackclient/tests/unit/network/v2/test_port.py +166 -0
  267. openstackclient/tests/unit/network/v2/test_router.py +36 -16
  268. openstackclient/tests/unit/network/v2/{test_security_group_network.py → test_security_group.py} +11 -8
  269. openstackclient/tests/unit/network/v2/{test_security_group_rule_network.py → test_security_group_rule.py} +28 -37
  270. openstackclient/tests/unit/network/v2/test_subnet.py +30 -5
  271. openstackclient/tests/unit/network/v2/test_subnet_pool.py +26 -1
  272. openstackclient/tests/unit/object/v1/fakes.py +8 -7
  273. openstackclient/tests/unit/object/v1/test_container.py +65 -101
  274. openstackclient/tests/unit/object/v1/test_container_all.py +8 -1
  275. openstackclient/tests/unit/object/v1/test_object.py +44 -84
  276. openstackclient/tests/unit/object/v1/test_object_all.py +8 -1
  277. openstackclient/tests/unit/test_hacking.py +108 -0
  278. openstackclient/tests/unit/volume/v2/fakes.py +21 -140
  279. openstackclient/tests/unit/volume/v2/test_volume_backup.py +6 -14
  280. openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +8 -1
  281. openstackclient/tests/unit/volume/v2/test_volume_type.py +2 -4
  282. openstackclient/tests/unit/volume/v3/fakes.py +205 -100
  283. openstackclient/tests/unit/volume/v3/test_backup_record.py +114 -0
  284. openstackclient/tests/unit/volume/v3/test_consistency_group.py +720 -0
  285. openstackclient/tests/unit/volume/v3/test_consistency_group_snapshot.py +354 -0
  286. openstackclient/tests/unit/volume/v3/test_qos_specs.py +455 -0
  287. openstackclient/tests/unit/volume/v3/test_volume.py +60 -3
  288. openstackclient/tests/unit/volume/v3/test_volume_attachment.py +3 -1
  289. openstackclient/tests/unit/volume/v3/test_volume_backend.py +158 -0
  290. openstackclient/tests/unit/volume/v3/test_volume_backup.py +6 -14
  291. openstackclient/tests/unit/volume/v3/test_volume_group_type.py +65 -0
  292. openstackclient/tests/unit/volume/v3/test_volume_host.py +115 -0
  293. openstackclient/tests/unit/volume/v3/test_volume_snapshot.py +61 -1
  294. openstackclient/tests/unit/volume/v3/test_volume_type.py +2 -4
  295. openstackclient/volume/client.py +7 -3
  296. openstackclient/volume/v2/backup_record.py +15 -6
  297. openstackclient/volume/v2/consistency_group.py +29 -17
  298. openstackclient/volume/v2/consistency_group_snapshot.py +25 -10
  299. openstackclient/volume/v2/qos_specs.py +28 -17
  300. openstackclient/volume/v2/service.py +17 -6
  301. openstackclient/volume/v2/volume.py +60 -30
  302. openstackclient/volume/v2/volume_backend.py +19 -6
  303. openstackclient/volume/v2/volume_backup.py +48 -23
  304. openstackclient/volume/v2/volume_host.py +6 -4
  305. openstackclient/volume/v2/volume_snapshot.py +49 -24
  306. openstackclient/volume/v2/volume_transfer_request.py +31 -13
  307. openstackclient/volume/v2/volume_type.py +43 -24
  308. openstackclient/volume/v3/backup_record.py +94 -0
  309. openstackclient/volume/v3/block_storage_cleanup.py +11 -3
  310. openstackclient/volume/v3/block_storage_cluster.py +19 -7
  311. openstackclient/volume/v3/block_storage_log_level.py +15 -6
  312. openstackclient/volume/v3/block_storage_manage.py +10 -4
  313. openstackclient/volume/v3/block_storage_resource_filter.py +17 -5
  314. openstackclient/volume/v3/consistency_group.py +400 -0
  315. openstackclient/volume/v3/consistency_group_snapshot.py +225 -0
  316. openstackclient/volume/v3/qos_specs.py +389 -0
  317. openstackclient/volume/v3/service.py +16 -6
  318. openstackclient/volume/v3/volume.py +92 -40
  319. openstackclient/volume/v3/volume_attachment.py +47 -21
  320. openstackclient/volume/v3/volume_backend.py +130 -0
  321. openstackclient/volume/v3/volume_backup.py +55 -27
  322. openstackclient/volume/v3/volume_group.py +23 -13
  323. openstackclient/volume/v3/volume_group_snapshot.py +34 -17
  324. openstackclient/volume/v3/volume_group_type.py +27 -14
  325. openstackclient/volume/v3/volume_host.py +74 -0
  326. openstackclient/volume/v3/volume_message.py +18 -8
  327. openstackclient/volume/v3/volume_snapshot.py +70 -32
  328. openstackclient/volume/v3/volume_transfer_request.py +31 -13
  329. openstackclient/volume/v3/volume_type.py +42 -24
  330. {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/METADATA +7 -8
  331. python_openstackclient-10.1.0.dist-info/RECORD +524 -0
  332. {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/WHEEL +1 -1
  333. {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/entry_points.txt +77 -25
  334. {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/licenses/AUTHORS +9 -0
  335. python_openstackclient-10.1.0.dist-info/pbr.json +1 -0
  336. openstackclient/api/image_v1.py +0 -69
  337. openstackclient/api/image_v2.py +0 -79
  338. openstackclient/network/v2/floating_ip_pool.py +0 -38
  339. openstackclient/tests/functional/image/v1/test_image.py +0 -97
  340. openstackclient/tests/unit/api/test_image_v1.py +0 -96
  341. openstackclient/tests/unit/api/test_image_v2.py +0 -96
  342. openstackclient/tests/unit/network/v2/test_floating_ip_compute.py +0 -248
  343. openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py +0 -49
  344. openstackclient/tests/unit/network/v2/test_floating_ip_pool_network.py +0 -39
  345. openstackclient/tests/unit/network/v2/test_network_compute.py +0 -404
  346. openstackclient/tests/unit/network/v2/test_security_group_compute.py +0 -392
  347. openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py +0 -555
  348. python_openstackclient-9.0.0.dist-info/RECORD +0 -499
  349. python_openstackclient-9.0.0.dist-info/pbr.json +0 -1
  350. /openstackclient/{tests/functional/image/v1 → network/v2/bgpvpn}/__init__.py +0 -0
  351. {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/licenses/LICENSE +0 -0
  352. {python_openstackclient-9.0.0.dist-info → python_openstackclient-10.1.0.dist-info}/top_level.txt +0 -0
@@ -10,8 +10,12 @@
10
10
  # License for the specific language governing permissions and limitations
11
11
  # under the License.
12
12
 
13
+ import argparse
13
14
  import logging
15
+ from collections.abc import Iterable, Sequence
16
+ from typing import Any
14
17
 
18
+ from openstack.network.v2 import tap_mirror as _tap_mirror
15
19
  from osc_lib.cli import identity as identity_utils
16
20
  from osc_lib import exceptions
17
21
  from osc_lib import utils as osc_utils
@@ -39,7 +43,9 @@ _attr_map = [
39
43
  ]
40
44
 
41
45
 
42
- def _get_columns(item):
46
+ def _get_columns(
47
+ item: _tap_mirror.TapMirror,
48
+ ) -> tuple[tuple[str, ...], tuple[str, ...]]:
43
49
  column_map: dict[str, str] = {}
44
50
  hidden_columns = ['location', 'tenant_id']
45
51
  return osc_utils.get_osc_show_columns_for_sdk_resource(
@@ -50,7 +56,7 @@ def _get_columns(item):
50
56
  class CreateTapMirror(command.ShowOne):
51
57
  _description = _("Create a new tap mirror.")
52
58
 
53
- def get_parser(self, prog_name):
59
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
54
60
  parser = super().get_parser(prog_name)
55
61
  identity_utils.add_project_owner_option_to_parser(parser)
56
62
  tap_service._add_updatable_args(parser)
@@ -88,7 +94,9 @@ class CreateTapMirror(command.ShowOne):
88
94
  )
89
95
  return parser
90
96
 
91
- def take_action(self, parsed_args):
97
+ def take_action(
98
+ self, parsed_args: argparse.Namespace
99
+ ) -> tuple[Sequence[str], Iterable[Any]]:
92
100
  client = self.app.client_manager.network
93
101
  attrs = {}
94
102
  if parsed_args.name is not None:
@@ -113,7 +121,7 @@ class CreateTapMirror(command.ShowOne):
113
121
  parsed_args.project_domain,
114
122
  ).id
115
123
  obj = client.create_tap_mirror(**attrs)
116
- display_columns, columns = tap_service._get_columns(obj)
124
+ display_columns, columns = _get_columns(obj)
117
125
  data = osc_utils.get_dict_properties(obj, columns)
118
126
  return display_columns, data
119
127
 
@@ -121,13 +129,15 @@ class CreateTapMirror(command.ShowOne):
121
129
  class ListTapMirror(command.Lister):
122
130
  _description = _("List tap mirrors.")
123
131
 
124
- def get_parser(self, prog_name):
132
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
125
133
  parser = super().get_parser(prog_name)
126
134
  identity_utils.add_project_owner_option_to_parser(parser)
127
135
 
128
136
  return parser
129
137
 
130
- def take_action(self, parsed_args):
138
+ def take_action(
139
+ self, parsed_args: argparse.Namespace
140
+ ) -> tuple[Sequence[str], Iterable[tuple[Any, ...]]]:
131
141
  client = self.app.client_manager.network
132
142
  params = {}
133
143
  if parsed_args.project is not None:
@@ -149,7 +159,7 @@ class ListTapMirror(command.Lister):
149
159
  class ShowTapMirror(command.ShowOne):
150
160
  _description = _("Show tap mirror details.")
151
161
 
152
- def get_parser(self, prog_name):
162
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
153
163
  parser = super().get_parser(prog_name)
154
164
  parser.add_argument(
155
165
  TAP_MIRROR,
@@ -158,13 +168,15 @@ class ShowTapMirror(command.ShowOne):
158
168
  )
159
169
  return parser
160
170
 
161
- def take_action(self, parsed_args):
171
+ def take_action(
172
+ self, parsed_args: argparse.Namespace
173
+ ) -> tuple[Sequence[str], Iterable[Any]]:
162
174
  client = self.app.client_manager.network
163
175
  id = client.find_tap_mirror(
164
176
  parsed_args.tap_mirror, ignore_missing=False
165
177
  ).id
166
178
  obj = client.get_tap_mirror(id)
167
- display_columns, columns = tap_service._get_columns(obj)
179
+ display_columns, columns = _get_columns(obj)
168
180
  data = osc_utils.get_dict_properties(obj, columns)
169
181
  return display_columns, data
170
182
 
@@ -172,7 +184,7 @@ class ShowTapMirror(command.ShowOne):
172
184
  class DeleteTapMirror(command.Command):
173
185
  _description = _("Delete a tap mirror.")
174
186
 
175
- def get_parser(self, prog_name):
187
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
176
188
  parser = super().get_parser(prog_name)
177
189
  parser.add_argument(
178
190
  TAP_MIRROR,
@@ -182,7 +194,7 @@ class DeleteTapMirror(command.Command):
182
194
  )
183
195
  return parser
184
196
 
185
- def take_action(self, parsed_args):
197
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
186
198
  client = self.app.client_manager.network
187
199
  fails = 0
188
200
  for id_or_name in parsed_args.tap_mirror:
@@ -211,7 +223,7 @@ class DeleteTapMirror(command.Command):
211
223
  class UpdateTapMirror(command.ShowOne):
212
224
  _description = _("Update a tap mirror.")
213
225
 
214
- def get_parser(self, prog_name):
226
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
215
227
  parser = super().get_parser(prog_name)
216
228
  parser.add_argument(
217
229
  TAP_MIRROR,
@@ -221,7 +233,9 @@ class UpdateTapMirror(command.ShowOne):
221
233
  tap_service._add_updatable_args(parser)
222
234
  return parser
223
235
 
224
- def take_action(self, parsed_args):
236
+ def take_action(
237
+ self, parsed_args: argparse.Namespace
238
+ ) -> tuple[Sequence[str], Iterable[Any]]:
225
239
  client = self.app.client_manager.network
226
240
  original_t_s = client.find_tap_mirror(
227
241
  parsed_args.tap_mirror, ignore_missing=False
@@ -232,6 +246,6 @@ class UpdateTapMirror(command.ShowOne):
232
246
  if parsed_args.description is not None:
233
247
  attrs['description'] = parsed_args.description
234
248
  obj = client.update_tap_mirror(original_t_s, **attrs)
235
- display_columns, columns = tap_service._get_columns(obj)
249
+ display_columns, columns = _get_columns(obj)
236
250
  data = osc_utils.get_dict_properties(obj, columns)
237
251
  return display_columns, data
@@ -12,8 +12,12 @@
12
12
  # License for the specific language governing permissions and limitations
13
13
  # under the License.
14
14
 
15
+ import argparse
15
16
  import logging
17
+ from collections.abc import Iterable, Sequence
18
+ from typing import Any
16
19
 
20
+ from openstack.network.v2 import tap_service as _tap_service
17
21
  from osc_lib.cli import identity as identity_utils
18
22
  from osc_lib import exceptions
19
23
  from osc_lib import utils as osc_utils
@@ -37,14 +41,16 @@ _attr_map = [
37
41
  ]
38
42
 
39
43
 
40
- def _add_updatable_args(parser):
44
+ def _add_updatable_args(parser: argparse.ArgumentParser) -> None:
41
45
  parser.add_argument('--name', help=_('Name of the tap service.'))
42
46
  parser.add_argument(
43
47
  '--description', help=_('Description of the tap service.')
44
48
  )
45
49
 
46
50
 
47
- def _get_columns(item):
51
+ def _get_columns(
52
+ item: _tap_service.TapService,
53
+ ) -> tuple[tuple[str, ...], tuple[str, ...]]:
48
54
  column_map: dict[str, str] = {}
49
55
  hidden_columns = ['location', 'tenant_id']
50
56
  return osc_utils.get_osc_show_columns_for_sdk_resource(
@@ -55,7 +61,7 @@ def _get_columns(item):
55
61
  class CreateTapService(command.ShowOne):
56
62
  _description = _("Create a new tap service.")
57
63
 
58
- def get_parser(self, prog_name):
64
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
59
65
  parser = super().get_parser(prog_name)
60
66
  identity_utils.add_project_owner_option_to_parser(parser)
61
67
  _add_updatable_args(parser)
@@ -68,7 +74,9 @@ class CreateTapService(command.ShowOne):
68
74
  )
69
75
  return parser
70
76
 
71
- def take_action(self, parsed_args):
77
+ def take_action(
78
+ self, parsed_args: argparse.Namespace
79
+ ) -> tuple[Sequence[str], Iterable[Any]]:
72
80
  client = self.app.client_manager.network
73
81
  attrs = {}
74
82
  if parsed_args.name is not None:
@@ -95,13 +103,15 @@ class CreateTapService(command.ShowOne):
95
103
  class ListTapService(command.Lister):
96
104
  _description = _("List tap services.")
97
105
 
98
- def get_parser(self, prog_name):
106
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
99
107
  parser = super().get_parser(prog_name)
100
108
  identity_utils.add_project_owner_option_to_parser(parser)
101
109
 
102
110
  return parser
103
111
 
104
- def take_action(self, parsed_args):
112
+ def take_action(
113
+ self, parsed_args: argparse.Namespace
114
+ ) -> tuple[Sequence[str], Iterable[tuple[Any, ...]]]:
105
115
  client = self.app.client_manager.network
106
116
  params = {}
107
117
  if parsed_args.project is not None:
@@ -123,7 +133,7 @@ class ListTapService(command.Lister):
123
133
  class ShowTapService(command.ShowOne):
124
134
  _description = _("Show tap service details.")
125
135
 
126
- def get_parser(self, prog_name):
136
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
127
137
  parser = super().get_parser(prog_name)
128
138
  parser.add_argument(
129
139
  TAP_SERVICE,
@@ -132,7 +142,9 @@ class ShowTapService(command.ShowOne):
132
142
  )
133
143
  return parser
134
144
 
135
- def take_action(self, parsed_args):
145
+ def take_action(
146
+ self, parsed_args: argparse.Namespace
147
+ ) -> tuple[Sequence[str], Iterable[Any]]:
136
148
  client = self.app.client_manager.network
137
149
  id = client.find_tap_service(
138
150
  parsed_args.tap_service, ignore_missing=False
@@ -146,7 +158,7 @@ class ShowTapService(command.ShowOne):
146
158
  class DeleteTapService(command.Command):
147
159
  _description = _("Delete a tap service.")
148
160
 
149
- def get_parser(self, prog_name):
161
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
150
162
  parser = super().get_parser(prog_name)
151
163
  parser.add_argument(
152
164
  TAP_SERVICE,
@@ -156,7 +168,7 @@ class DeleteTapService(command.Command):
156
168
  )
157
169
  return parser
158
170
 
159
- def take_action(self, parsed_args):
171
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
160
172
  client = self.app.client_manager.network
161
173
  fails = 0
162
174
  for id_or_name in parsed_args.tap_service:
@@ -185,7 +197,7 @@ class DeleteTapService(command.Command):
185
197
  class UpdateTapService(command.ShowOne):
186
198
  _description = _("Update a tap service.")
187
199
 
188
- def get_parser(self, prog_name):
200
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
189
201
  parser = super().get_parser(prog_name)
190
202
  parser.add_argument(
191
203
  TAP_SERVICE,
@@ -195,7 +207,9 @@ class UpdateTapService(command.ShowOne):
195
207
  _add_updatable_args(parser)
196
208
  return parser
197
209
 
198
- def take_action(self, parsed_args):
210
+ def take_action(
211
+ self, parsed_args: argparse.Namespace
212
+ ) -> tuple[Sequence[str], Iterable[Any]]:
199
213
  client = self.app.client_manager.network
200
214
  original_t_s = client.find_tap_service(
201
215
  parsed_args.tap_service, ignore_missing=False
@@ -15,6 +15,9 @@
15
15
 
16
16
  """Object client"""
17
17
 
18
+ import argparse
19
+ from typing import Any
20
+
18
21
  from osc_lib import utils
19
22
 
20
23
  from openstackclient.api import object_store_v1
@@ -26,7 +29,7 @@ API_NAME = 'object_store'
26
29
  API_VERSIONS = ('1',)
27
30
 
28
31
 
29
- def make_client(instance):
32
+ def make_client(instance: Any) -> object_store_v1.APIv1:
30
33
  """Returns an object-store API client."""
31
34
 
32
35
  endpoint = instance.get_endpoint_for_service_type(
@@ -43,7 +46,9 @@ def make_client(instance):
43
46
  return client
44
47
 
45
48
 
46
- def build_option_parser(parser):
49
+ def build_option_parser(
50
+ parser: argparse.ArgumentParser,
51
+ ) -> argparse.ArgumentParser:
47
52
  """Hook to add global options"""
48
53
  parser.add_argument(
49
54
  '--os-object-api-version',
@@ -13,6 +13,10 @@
13
13
 
14
14
  """Account v1 action implementations"""
15
15
 
16
+ import argparse
17
+ from collections.abc import Iterable, Sequence
18
+ from typing import Any
19
+
16
20
  from osc_lib.cli import format_columns
17
21
  from osc_lib.cli import parseractions
18
22
 
@@ -23,7 +27,7 @@ from openstackclient.i18n import _
23
27
  class SetAccount(command.Command):
24
28
  _description = _("Set account properties")
25
29
 
26
- def get_parser(self, prog_name):
30
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
27
31
  parser = super().get_parser(prog_name)
28
32
  parser.add_argument(
29
33
  "--property",
@@ -37,7 +41,7 @@ class SetAccount(command.Command):
37
41
  )
38
42
  return parser
39
43
 
40
- def take_action(self, parsed_args):
44
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
41
45
  self.app.client_manager.object_store.account_set(
42
46
  properties=parsed_args.property,
43
47
  )
@@ -46,19 +50,22 @@ class SetAccount(command.Command):
46
50
  class ShowAccount(command.ShowOne):
47
51
  _description = _("Display account details")
48
52
 
49
- def take_action(self, parsed_args):
53
+ def take_action(
54
+ self, parsed_args: argparse.Namespace
55
+ ) -> tuple[Sequence[str], Iterable[Any]]:
50
56
  data = self.app.client_manager.object_store.account_show()
51
57
  if 'properties' in data:
52
58
  data['properties'] = format_columns.DictColumn(
53
59
  data.pop('properties')
54
60
  )
55
- return zip(*sorted(data.items()))
61
+ col_headers, col_data = zip(*sorted(data.items()))
62
+ return col_headers, col_data
56
63
 
57
64
 
58
65
  class UnsetAccount(command.Command):
59
66
  _description = _("Unset account properties")
60
67
 
61
- def get_parser(self, prog_name):
68
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
62
69
  parser = super().get_parser(prog_name)
63
70
  parser.add_argument(
64
71
  '--property',
@@ -73,7 +80,7 @@ class UnsetAccount(command.Command):
73
80
  )
74
81
  return parser
75
82
 
76
- def take_action(self, parsed_args):
83
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
77
84
  self.app.client_manager.object_store.account_unset(
78
85
  properties=parsed_args.property,
79
86
  )
@@ -15,7 +15,10 @@
15
15
 
16
16
  """Container v1 action implementations"""
17
17
 
18
+ import argparse
18
19
  import logging
20
+ from collections.abc import Iterable, Sequence
21
+ from typing import Any
19
22
 
20
23
  from osc_lib.cli import format_columns
21
24
  from osc_lib.cli import parseractions
@@ -31,7 +34,7 @@ LOG = logging.getLogger(__name__)
31
34
  class CreateContainer(command.Lister):
32
35
  _description = _("Create new container")
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
  '--public',
@@ -51,7 +54,9 @@ class CreateContainer(command.Lister):
51
54
  )
52
55
  return parser
53
56
 
54
- def take_action(self, parsed_args):
57
+ def take_action(
58
+ self, parsed_args: argparse.Namespace
59
+ ) -> tuple[Sequence[str], Iterable[tuple[Any, ...]]]:
55
60
  results = []
56
61
  for container in parsed_args.containers:
57
62
  if len(container) > 256:
@@ -84,7 +89,7 @@ class CreateContainer(command.Lister):
84
89
  class DeleteContainer(command.Command):
85
90
  _description = _("Delete container")
86
91
 
87
- def get_parser(self, prog_name):
92
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
88
93
  parser = super().get_parser(prog_name)
89
94
  parser.add_argument(
90
95
  '--recursive',
@@ -101,7 +106,7 @@ class DeleteContainer(command.Command):
101
106
  )
102
107
  return parser
103
108
 
104
- def take_action(self, parsed_args):
109
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
105
110
  for container in parsed_args.containers:
106
111
  if parsed_args.recursive:
107
112
  objs = self.app.client_manager.object_store.object_list(
@@ -120,14 +125,16 @@ class DeleteContainer(command.Command):
120
125
  class ListContainer(command.Lister):
121
126
  _description = _("List containers")
122
127
 
123
- def get_parser(self, prog_name):
128
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
124
129
  parser = super().get_parser(prog_name)
125
130
  parser.add_argument(
126
131
  "--prefix",
127
132
  metavar="<prefix>",
128
133
  help=_("Filter list using <prefix>"),
129
134
  )
130
- pagination.add_marker_pagination_option_to_parser(parser)
135
+ pagination.add_marker_pagination_option_to_parser(
136
+ parser, include_max_items=False
137
+ )
131
138
  parser.add_argument(
132
139
  "--end-marker",
133
140
  metavar="<end-marker>",
@@ -147,7 +154,9 @@ class ListContainer(command.Lister):
147
154
  )
148
155
  return parser
149
156
 
150
- def take_action(self, parsed_args):
157
+ def take_action(
158
+ self, parsed_args: argparse.Namespace
159
+ ) -> tuple[Sequence[str], Iterable[tuple[Any, ...]]]:
151
160
  columns: tuple[str, ...] = ('Name',)
152
161
  if parsed_args.long:
153
162
  columns += ('Bytes', 'Count')
@@ -182,7 +191,7 @@ class ListContainer(command.Lister):
182
191
  class SaveContainer(command.Command):
183
192
  _description = _("Save container contents locally")
184
193
 
185
- def get_parser(self, prog_name):
194
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
186
195
  parser = super().get_parser(prog_name)
187
196
  parser.add_argument(
188
197
  'container',
@@ -191,7 +200,7 @@ class SaveContainer(command.Command):
191
200
  )
192
201
  return parser
193
202
 
194
- def take_action(self, parsed_args):
203
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
195
204
  self.app.client_manager.object_store.container_save(
196
205
  container=parsed_args.container,
197
206
  )
@@ -200,7 +209,7 @@ class SaveContainer(command.Command):
200
209
  class SetContainer(command.Command):
201
210
  _description = _("Set container properties")
202
211
 
203
- def get_parser(self, prog_name):
212
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
204
213
  parser = super().get_parser(prog_name)
205
214
  parser.add_argument(
206
215
  'container',
@@ -219,7 +228,7 @@ class SetContainer(command.Command):
219
228
  )
220
229
  return parser
221
230
 
222
- def take_action(self, parsed_args):
231
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
223
232
  self.app.client_manager.object_store.container_set(
224
233
  parsed_args.container,
225
234
  properties=parsed_args.property,
@@ -229,7 +238,7 @@ class SetContainer(command.Command):
229
238
  class ShowContainer(command.ShowOne):
230
239
  _description = _("Display container details")
231
240
 
232
- def get_parser(self, prog_name):
241
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
233
242
  parser = super().get_parser(prog_name)
234
243
  parser.add_argument(
235
244
  'container',
@@ -238,20 +247,23 @@ class ShowContainer(command.ShowOne):
238
247
  )
239
248
  return parser
240
249
 
241
- def take_action(self, parsed_args):
250
+ def take_action(
251
+ self, parsed_args: argparse.Namespace
252
+ ) -> tuple[Sequence[str], Iterable[Any]]:
242
253
  data = self.app.client_manager.object_store.container_show(
243
254
  container=parsed_args.container,
244
255
  )
245
256
  if 'properties' in data:
246
257
  data['properties'] = format_columns.DictColumn(data['properties'])
247
258
 
248
- return zip(*sorted(data.items()))
259
+ col_headers, col_data = zip(*sorted(data.items()))
260
+ return col_headers, col_data
249
261
 
250
262
 
251
263
  class UnsetContainer(command.Command):
252
264
  _description = _("Unset container properties")
253
265
 
254
- def get_parser(self, prog_name):
266
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
255
267
  parser = super().get_parser(prog_name)
256
268
  parser.add_argument(
257
269
  'container',
@@ -271,7 +283,7 @@ class UnsetContainer(command.Command):
271
283
  )
272
284
  return parser
273
285
 
274
- def take_action(self, parsed_args):
286
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
275
287
  self.app.client_manager.object_store.container_unset(
276
288
  parsed_args.container,
277
289
  properties=parsed_args.property,
@@ -15,7 +15,10 @@
15
15
 
16
16
  """Object v1 action implementations"""
17
17
 
18
+ import argparse
18
19
  import logging
20
+ from collections.abc import Iterable, Sequence
21
+ from typing import Any
19
22
 
20
23
  from osc_lib.cli import format_columns
21
24
  from osc_lib.cli import parseractions
@@ -33,7 +36,7 @@ LOG = logging.getLogger(__name__)
33
36
  class CreateObject(command.Lister):
34
37
  _description = _("Upload object to container")
35
38
 
36
- def get_parser(self, prog_name):
39
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
37
40
  parser = super().get_parser(prog_name)
38
41
  parser.add_argument(
39
42
  'container',
@@ -56,7 +59,9 @@ class CreateObject(command.Lister):
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[tuple[Any, ...]]]:
60
65
  if parsed_args.name:
61
66
  if len(parsed_args.objects) > 1:
62
67
  msg = _(
@@ -98,7 +103,7 @@ class CreateObject(command.Lister):
98
103
  class DeleteObject(command.Command):
99
104
  _description = _("Delete object from container")
100
105
 
101
- def get_parser(self, prog_name):
106
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
102
107
  parser = super().get_parser(prog_name)
103
108
  parser.add_argument(
104
109
  'container',
@@ -113,7 +118,7 @@ class DeleteObject(command.Command):
113
118
  )
114
119
  return parser
115
120
 
116
- def take_action(self, parsed_args):
121
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
117
122
  for obj in parsed_args.objects:
118
123
  self.app.client_manager.object_store.object_delete(
119
124
  container=parsed_args.container,
@@ -124,7 +129,7 @@ class DeleteObject(command.Command):
124
129
  class ListObject(command.Lister):
125
130
  _description = _("List objects")
126
131
 
127
- def get_parser(self, prog_name):
132
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
128
133
  parser = super().get_parser(prog_name)
129
134
  parser.add_argument(
130
135
  "container",
@@ -141,7 +146,9 @@ class ListObject(command.Lister):
141
146
  metavar="<delimiter>",
142
147
  help=_("Roll up items with <delimiter>"),
143
148
  )
144
- pagination.add_marker_pagination_option_to_parser(parser)
149
+ pagination.add_marker_pagination_option_to_parser(
150
+ parser, include_max_items=False
151
+ )
145
152
  parser.add_argument(
146
153
  "--end-marker",
147
154
  metavar="<end-marker>",
@@ -161,7 +168,9 @@ class ListObject(command.Lister):
161
168
  )
162
169
  return parser
163
170
 
164
- def take_action(self, parsed_args):
171
+ def take_action(
172
+ self, parsed_args: argparse.Namespace
173
+ ) -> tuple[Sequence[str], Iterable[tuple[Any, ...]]]:
165
174
  columns: tuple[str, ...] = ('Name',)
166
175
  if parsed_args.long:
167
176
  columns += ('Bytes', 'Hash', 'Content Type', 'Last Modified')
@@ -200,7 +209,7 @@ class ListObject(command.Lister):
200
209
  class SaveObject(command.Command):
201
210
  _description = _("Save object locally")
202
211
 
203
- def get_parser(self, prog_name):
212
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
204
213
  parser = super().get_parser(prog_name)
205
214
  parser.add_argument(
206
215
  "--file",
@@ -222,7 +231,7 @@ class SaveObject(command.Command):
222
231
  )
223
232
  return parser
224
233
 
225
- def take_action(self, parsed_args):
234
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
226
235
  self.app.client_manager.object_store.object_save(
227
236
  container=parsed_args.container,
228
237
  object=parsed_args.object,
@@ -233,7 +242,7 @@ class SaveObject(command.Command):
233
242
  class SetObject(command.Command):
234
243
  _description = _("Set object properties")
235
244
 
236
- def get_parser(self, prog_name):
245
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
237
246
  parser = super().get_parser(prog_name)
238
247
  parser.add_argument(
239
248
  'container',
@@ -257,7 +266,7 @@ class SetObject(command.Command):
257
266
  )
258
267
  return parser
259
268
 
260
- def take_action(self, parsed_args):
269
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
261
270
  self.app.client_manager.object_store.object_set(
262
271
  parsed_args.container,
263
272
  parsed_args.object,
@@ -268,7 +277,7 @@ class SetObject(command.Command):
268
277
  class ShowObject(command.ShowOne):
269
278
  _description = _("Display object details")
270
279
 
271
- def get_parser(self, prog_name):
280
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
272
281
  parser = super().get_parser(prog_name)
273
282
  parser.add_argument(
274
283
  'container',
@@ -282,7 +291,9 @@ class ShowObject(command.ShowOne):
282
291
  )
283
292
  return parser
284
293
 
285
- def take_action(self, parsed_args):
294
+ def take_action(
295
+ self, parsed_args: argparse.Namespace
296
+ ) -> tuple[Sequence[str], Iterable[Any]]:
286
297
  data = self.app.client_manager.object_store.object_show(
287
298
  container=parsed_args.container,
288
299
  object=parsed_args.object,
@@ -290,13 +301,14 @@ class ShowObject(command.ShowOne):
290
301
  if 'properties' in data:
291
302
  data['properties'] = format_columns.DictColumn(data['properties'])
292
303
 
293
- return zip(*sorted(data.items()))
304
+ col_headers, col_data = zip(*sorted(data.items()))
305
+ return col_headers, col_data
294
306
 
295
307
 
296
308
  class UnsetObject(command.Command):
297
309
  _description = _("Unset object properties")
298
310
 
299
- def get_parser(self, prog_name):
311
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
300
312
  parser = super().get_parser(prog_name)
301
313
  parser.add_argument(
302
314
  'container',
@@ -321,7 +333,7 @@ class UnsetObject(command.Command):
321
333
  )
322
334
  return parser
323
335
 
324
- def take_action(self, parsed_args):
336
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
325
337
  self.app.client_manager.object_store.object_unset(
326
338
  parsed_args.container,
327
339
  parsed_args.object,
File without changes