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
@@ -15,7 +15,10 @@
15
15
 
16
16
  """Compute v2 Server action implementations"""
17
17
 
18
+ import argparse
19
+ from collections.abc import Iterable, Sequence
18
20
  import importlib
21
+ from typing import Any
19
22
 
20
23
  from osc_lib import exceptions
21
24
  from osc_lib import utils
@@ -32,7 +35,7 @@ class CreateServerBackup(command.ShowOne):
32
35
  "2": "openstackclient.image.v2.image",
33
36
  }
34
37
 
35
- def get_parser(self, prog_name):
38
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
36
39
  parser = super().get_parser(prog_name)
37
40
  parser.add_argument(
38
41
  'server',
@@ -65,8 +68,10 @@ class CreateServerBackup(command.ShowOne):
65
68
  )
66
69
  return parser
67
70
 
68
- def take_action(self, parsed_args):
69
- def _show_progress(progress):
71
+ def take_action(
72
+ self, parsed_args: argparse.Namespace
73
+ ) -> tuple[Sequence[str], Iterable[Any]]:
74
+ def _show_progress(progress: int | None) -> None:
70
75
  if progress:
71
76
  self.app.stderr.write(f'\rProgress: {progress}')
72
77
  self.app.stderr.flush()
@@ -124,4 +129,5 @@ class CreateServerBackup(command.ShowOne):
124
129
  ]
125
130
  )
126
131
  info = image_module._format_image(image)
127
- return zip(*sorted(info.items()))
132
+ col_headers, col_data = zip(*sorted(info.items()))
133
+ return col_headers, col_data
@@ -15,11 +15,15 @@
15
15
 
16
16
  """Compute v2 Server operation event implementations"""
17
17
 
18
+ import argparse
19
+ from collections.abc import Iterable, Sequence
18
20
  import logging
21
+ from typing import Any
19
22
  import uuid
20
23
 
21
24
  from cliff import columns
22
25
  import iso8601
26
+ from openstack.compute.v2 import server_action as _server_action
23
27
  from openstack import exceptions as sdk_exceptions
24
28
  from openstack import utils as sdk_utils
25
29
  from osc_lib import exceptions
@@ -34,7 +38,7 @@ LOG = logging.getLogger(__name__)
34
38
 
35
39
  # TODO(stephenfin): Move this to osc_lib since it's useful elsewhere (e.g.
36
40
  # glance)
37
- def is_uuid_like(value) -> bool:
41
+ def is_uuid_like(value: str) -> bool:
38
42
  """Returns validation of a value as a UUID.
39
43
 
40
44
  :param val: Value to verify
@@ -57,14 +61,15 @@ def is_uuid_like(value) -> bool:
57
61
  return False
58
62
 
59
63
 
60
- class ServerActionEventColumn(columns.FormattableColumn):
64
+ class ServerActionEventColumn(columns.FormattableColumn[Any]):
61
65
  """Custom formatter for server action events.
62
66
 
63
67
  Format the :class:`~openstack.compute.v2.server_action.ServerActionEvent`
64
68
  objects as we'd like.
65
69
  """
66
70
 
67
- def _format_event(self, event):
71
+ @staticmethod
72
+ def _format_event(event: _server_action.ServerAction) -> dict[str, Any]:
68
73
  hidden_columns = ['id', 'name', 'location']
69
74
  _, columns = utils.get_osc_show_columns_for_sdk_resource(
70
75
  event, {}, hidden_columns
@@ -72,17 +77,19 @@ class ServerActionEventColumn(columns.FormattableColumn):
72
77
  data = utils.get_item_properties(event, columns)
73
78
  return dict(zip(columns, data))
74
79
 
75
- def human_readable(self):
80
+ def human_readable(self) -> str:
76
81
  events = [self._format_event(event) for event in self._value]
77
- return utils.format_list_of_dicts(events)
82
+ return utils.format_list_of_dicts(events) or ""
78
83
 
79
- def machine_readable(self):
84
+ def machine_readable(self) -> Any:
80
85
  events = [self._format_event(event) for event in self._value]
81
86
  return events
82
87
 
83
88
 
84
- def _get_server_event_columns(item, client):
85
- hidden_columns = ['name', 'server_id', 'links', 'location', 'finish_time']
89
+ def _get_server_event_columns(
90
+ item: Any, client: Any
91
+ ) -> tuple[tuple[str, ...], tuple[str, ...]]:
92
+ hidden_columns = ['name', 'server_id', 'links', 'location']
86
93
 
87
94
  if not sdk_utils.supports_microversion(client, '2.58'):
88
95
  # updated_at was introduced in 2.58
@@ -100,7 +107,7 @@ class ListServerEvent(command.Lister):
100
107
  deleted server, specified by ID only.
101
108
  """
102
109
 
103
- def get_parser(self, prog_name):
110
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
104
111
  parser = super().get_parser(prog_name)
105
112
  parser.add_argument(
106
113
  'server',
@@ -138,7 +145,9 @@ class ListServerEvent(command.Lister):
138
145
  pagination.add_marker_pagination_option_to_parser(parser)
139
146
  return parser
140
147
 
141
- def take_action(self, parsed_args):
148
+ def take_action(
149
+ self, parsed_args: argparse.Namespace
150
+ ) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
142
151
  compute_client = self.app.client_manager.compute
143
152
 
144
153
  kwargs = {}
@@ -164,6 +173,9 @@ class ListServerEvent(command.Lister):
164
173
  kwargs['limit'] = parsed_args.limit
165
174
  kwargs['paginated'] = False
166
175
 
176
+ if parsed_args.max_items is not None:
177
+ kwargs['max_items'] = parsed_args.max_items
178
+
167
179
  if parsed_args.changes_since:
168
180
  if not sdk_utils.supports_microversion(compute_client, '2.58'):
169
181
  msg = _(
@@ -251,7 +263,7 @@ class ShowServerEvent(command.ShowOne):
251
263
  non-admin users.
252
264
  """
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
  'server',
@@ -265,7 +277,9 @@ class ShowServerEvent(command.ShowOne):
265
277
  )
266
278
  return parser
267
279
 
268
- def take_action(self, parsed_args):
280
+ def take_action(
281
+ self, parsed_args: argparse.Namespace
282
+ ) -> tuple[Sequence[str], Iterable[Any]]:
269
283
  compute_client = self.app.client_manager.compute
270
284
 
271
285
  try:
@@ -286,6 +300,8 @@ class ShowServerEvent(command.ShowOne):
286
300
  parsed_args.request_id,
287
301
  server_id,
288
302
  )
303
+ # this is a bug is SDK
304
+ assert server_action is not None
289
305
 
290
306
  column_headers, columns = _get_server_event_columns(
291
307
  server_action,
@@ -15,8 +15,10 @@
15
15
 
16
16
  """Compute v2 Server Group action implementations"""
17
17
 
18
+ import argparse
19
+ from collections.abc import Iterable, Sequence
18
20
  import logging
19
- import typing as ty
21
+ from typing import Any
20
22
 
21
23
  from cliff import columns
22
24
  from openstack import utils as sdk_utils
@@ -32,14 +34,16 @@ from openstackclient.i18n import _
32
34
  LOG = logging.getLogger(__name__)
33
35
 
34
36
 
35
- _formatters: dict[str, type[columns.FormattableColumn[ty.Any]]] = {
37
+ _formatters: dict[str, type[columns.FormattableColumn[Any]]] = {
36
38
  'member_ids': format_columns.ListColumn,
37
39
  'policies': format_columns.ListColumn,
38
40
  'rules': format_columns.DictColumn,
39
41
  }
40
42
 
41
43
 
42
- def _get_server_group_columns(item, client):
44
+ def _get_server_group_columns(
45
+ item: Any, client: Any
46
+ ) -> tuple[tuple[str, ...], tuple[str, ...]]:
43
47
  column_map = {'member_ids': 'members'}
44
48
  hidden_columns = ['metadata', 'location']
45
49
 
@@ -57,7 +61,7 @@ def _get_server_group_columns(item, client):
57
61
  class CreateServerGroup(command.ShowOne):
58
62
  _description = _("Create a new server group.")
59
63
 
60
- def get_parser(self, prog_name):
64
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
61
65
  parser = super().get_parser(prog_name)
62
66
  parser.add_argument(
63
67
  'name',
@@ -94,7 +98,9 @@ class CreateServerGroup(command.ShowOne):
94
98
  )
95
99
  return parser
96
100
 
97
- def take_action(self, parsed_args):
101
+ def take_action(
102
+ self, parsed_args: argparse.Namespace
103
+ ) -> tuple[Sequence[str], Iterable[Any]]:
98
104
  compute_client = self.app.client_manager.compute
99
105
 
100
106
  if parsed_args.policy in ('soft-affinity', 'soft-anti-affinity'):
@@ -144,7 +150,7 @@ class CreateServerGroup(command.ShowOne):
144
150
  class DeleteServerGroup(command.Command):
145
151
  _description = _("Delete existing server group(s).")
146
152
 
147
- def get_parser(self, prog_name):
153
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
148
154
  parser = super().get_parser(prog_name)
149
155
  parser.add_argument(
150
156
  'server_group',
@@ -154,7 +160,7 @@ class DeleteServerGroup(command.Command):
154
160
  )
155
161
  return parser
156
162
 
157
- def take_action(self, parsed_args):
163
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
158
164
  compute_client = self.app.client_manager.compute
159
165
  result = 0
160
166
  for group in parsed_args.server_group:
@@ -179,7 +185,7 @@ class DeleteServerGroup(command.Command):
179
185
  class ListServerGroup(command.Lister):
180
186
  _description = _("List all server groups.")
181
187
 
182
- def get_parser(self, prog_name):
188
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
183
189
  parser = super().get_parser(prog_name)
184
190
  parser.add_argument(
185
191
  '--all-projects',
@@ -198,7 +204,9 @@ class ListServerGroup(command.Lister):
198
204
  pagination.add_offset_pagination_option_to_parser(parser)
199
205
  return parser
200
206
 
201
- def take_action(self, parsed_args):
207
+ def take_action(
208
+ self, parsed_args: argparse.Namespace
209
+ ) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
202
210
  compute_client = self.app.client_manager.compute
203
211
 
204
212
  kwargs = {}
@@ -211,6 +219,8 @@ class ListServerGroup(command.Lister):
211
219
 
212
220
  if parsed_args.limit:
213
221
  kwargs['limit'] = parsed_args.limit
222
+ if parsed_args.max_items is not None:
223
+ kwargs['max_items'] = parsed_args.max_items
214
224
 
215
225
  data = compute_client.server_groups(**kwargs)
216
226
 
@@ -256,7 +266,7 @@ class ListServerGroup(command.Lister):
256
266
  class ShowServerGroup(command.ShowOne):
257
267
  _description = _("Display server group details.")
258
268
 
259
- def get_parser(self, prog_name):
269
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
260
270
  parser = super().get_parser(prog_name)
261
271
  parser.add_argument(
262
272
  'server_group',
@@ -265,7 +275,9 @@ class ShowServerGroup(command.ShowOne):
265
275
  )
266
276
  return parser
267
277
 
268
- def take_action(self, parsed_args):
278
+ def take_action(
279
+ self, parsed_args: argparse.Namespace
280
+ ) -> tuple[Sequence[str], Iterable[Any]]:
269
281
  compute_client = self.app.client_manager.compute
270
282
  group = compute_client.find_server_group(
271
283
  parsed_args.server_group, ignore_missing=False
@@ -15,8 +15,11 @@
15
15
 
16
16
  """Compute v2 Server action implementations"""
17
17
 
18
+ import argparse
19
+ from collections.abc import Iterable, Sequence
18
20
  import importlib
19
21
  import logging
22
+ from typing import Any
20
23
 
21
24
  from osc_lib.cli import parseractions
22
25
  from osc_lib import exceptions
@@ -37,7 +40,7 @@ class CreateServerImage(command.ShowOne):
37
40
  "2": "openstackclient.image.v2.image",
38
41
  }
39
42
 
40
- def get_parser(self, prog_name):
43
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
41
44
  parser = super().get_parser(prog_name)
42
45
  parser.add_argument(
43
46
  'server',
@@ -66,8 +69,10 @@ class CreateServerImage(command.ShowOne):
66
69
  )
67
70
  return parser
68
71
 
69
- def take_action(self, parsed_args):
70
- def _show_progress(progress):
72
+ def take_action(
73
+ self, parsed_args: argparse.Namespace
74
+ ) -> tuple[Sequence[str], Iterable[Any]]:
75
+ def _show_progress(progress: int | None) -> None:
71
76
  if progress:
72
77
  self.app.stdout.write(f'\rProgress: {progress}')
73
78
  self.app.stdout.flush()
@@ -85,11 +90,16 @@ class CreateServerImage(command.ShowOne):
85
90
  else:
86
91
  image_name = server.name
87
92
 
88
- image_id = compute_client.create_server_image(
93
+ image = compute_client.create_server_image(
89
94
  server.id,
90
95
  image_name,
91
96
  parsed_args.properties,
92
- ).id
97
+ )
98
+ if not image:
99
+ msg = _('Error creating server image: %s')
100
+ raise exceptions.CommandError(msg, parsed_args.server)
101
+
102
+ image_id = image.id
93
103
 
94
104
  if parsed_args.wait:
95
105
  if utils.wait_for_status(
@@ -99,10 +109,8 @@ class CreateServerImage(command.ShowOne):
99
109
  ):
100
110
  self.app.stdout.write('\n')
101
111
  else:
102
- LOG.error(
103
- _('Error creating server image: %s'), parsed_args.server
104
- )
105
- raise exceptions.CommandError
112
+ msg = _('Error creating server image: %s')
113
+ raise exceptions.CommandError(msg, parsed_args.server)
106
114
 
107
115
  image = image_client.find_image(image_id, ignore_missing=False)
108
116
 
@@ -119,4 +127,5 @@ class CreateServerImage(command.ShowOne):
119
127
  )
120
128
  info = image_module._format_image(image)
121
129
 
122
- return zip(*sorted(info.items()))
130
+ col_headers, col_data = zip(*sorted(info.items()))
131
+ return col_headers, col_data
@@ -12,6 +12,9 @@
12
12
 
13
13
  """Compute v2 Server Migration action implementations"""
14
14
 
15
+ import argparse
16
+ from collections.abc import Iterable, Sequence
17
+ from typing import Any
15
18
  import uuid
16
19
 
17
20
  from openstack import utils as sdk_utils
@@ -27,7 +30,7 @@ from openstackclient.identity import common as identity_common
27
30
  class ListMigration(command.Lister):
28
31
  _description = _("""List server migrations""")
29
32
 
30
- def get_parser(self, prog_name):
33
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
31
34
  parser = super().get_parser(prog_name)
32
35
  parser.add_argument(
33
36
  '--server',
@@ -98,7 +101,12 @@ class ListMigration(command.Lister):
98
101
  identity_common.add_user_domain_option_to_parser(parser)
99
102
  return parser
100
103
 
101
- def print_migrations(self, parsed_args, compute_client, migrations):
104
+ def print_migrations(
105
+ self,
106
+ parsed_args: argparse.Namespace,
107
+ compute_client: Any,
108
+ migrations: Any,
109
+ ) -> tuple[list[str], Iterable[tuple[Any, ...]]]:
102
110
  column_headers = [
103
111
  'Source Node',
104
112
  'Dest Node',
@@ -153,7 +161,9 @@ class ListMigration(command.Lister):
153
161
  (utils.get_item_properties(mig, columns) for mig in migrations),
154
162
  )
155
163
 
156
- def take_action(self, parsed_args):
164
+ def take_action(
165
+ self, parsed_args: argparse.Namespace
166
+ ) -> tuple[list[str], Iterable[tuple[Any, ...]]]:
157
167
  compute_client = self.app.client_manager.compute
158
168
  identity_client = self.app.client_manager.identity
159
169
 
@@ -197,6 +207,9 @@ class ListMigration(command.Lister):
197
207
  search_opts['limit'] = parsed_args.limit
198
208
  search_opts['paginated'] = False
199
209
 
210
+ if parsed_args.max_items is not None:
211
+ search_opts['max_items'] = parsed_args.max_items
212
+
200
213
  if parsed_args.changes_since:
201
214
  if not sdk_utils.supports_microversion(compute_client, "2.59"):
202
215
  msg = _(
@@ -248,7 +261,9 @@ class ListMigration(command.Lister):
248
261
  return self.print_migrations(parsed_args, compute_client, migrations)
249
262
 
250
263
 
251
- def _get_migration_by_uuid(compute_client, server_id, migration_uuid):
264
+ def _get_migration_by_uuid(
265
+ compute_client: Any, server_id: str, migration_uuid: str
266
+ ) -> Any:
252
267
  for migration in compute_client.server_migrations(server_id):
253
268
  if migration.uuid == migration_uuid:
254
269
  return migration
@@ -274,7 +289,7 @@ class ShowMigration(command.ShowOne):
274
289
  these.
275
290
  """
276
291
 
277
- def get_parser(self, prog_name):
292
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
278
293
  parser = super().get_parser(prog_name)
279
294
  parser.add_argument(
280
295
  'server',
@@ -288,7 +303,9 @@ class ShowMigration(command.ShowOne):
288
303
  )
289
304
  return parser
290
305
 
291
- def take_action(self, parsed_args):
306
+ def take_action(
307
+ self, parsed_args: argparse.Namespace
308
+ ) -> tuple[Sequence[str], Iterable[Any]]:
292
309
  compute_client = self.app.client_manager.compute
293
310
 
294
311
  if not sdk_utils.supports_microversion(compute_client, '2.24'):
@@ -389,7 +406,7 @@ class AbortMigration(command.Command):
389
406
  This command requires ``--os-compute-api-version`` 2.24 or greater.
390
407
  """
391
408
 
392
- def get_parser(self, prog_name):
409
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
393
410
  parser = super().get_parser(prog_name)
394
411
  parser.add_argument(
395
412
  'server',
@@ -403,7 +420,7 @@ class AbortMigration(command.Command):
403
420
  )
404
421
  return parser
405
422
 
406
- def take_action(self, parsed_args):
423
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
407
424
  compute_client = self.app.client_manager.compute
408
425
 
409
426
  if not sdk_utils.supports_microversion(compute_client, '2.24'):
@@ -456,7 +473,7 @@ class ForceCompleteMigration(command.Command):
456
473
  This command requires ``--os-compute-api-version`` 2.22 or greater.
457
474
  """
458
475
 
459
- def get_parser(self, prog_name):
476
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
460
477
  parser = super().get_parser(prog_name)
461
478
  parser.add_argument(
462
479
  'server',
@@ -468,7 +485,7 @@ class ForceCompleteMigration(command.Command):
468
485
  )
469
486
  return parser
470
487
 
471
- def take_action(self, parsed_args):
488
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
472
489
  compute_client = self.app.client_manager.compute
473
490
 
474
491
  if not sdk_utils.supports_microversion(compute_client, '2.22'):