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
@@ -16,30 +16,35 @@
16
16
 
17
17
  """Network segment action implementations"""
18
18
 
19
+ import argparse
20
+ from collections.abc import Iterable, Sequence
19
21
  import itertools
20
22
  import logging
21
- import typing as ty
23
+ from typing import Any
22
24
 
25
+ from openstack.network.v2 import network_segment_range as _segment_range
23
26
  from osc_lib import exceptions
24
27
  from osc_lib import utils
25
28
 
26
29
  from openstackclient import command
30
+ from openstackclient.common import pagination
27
31
  from openstackclient.i18n import _
28
32
  from openstackclient.identity import common as identity_common
29
33
  from openstackclient.network import common
30
34
 
31
-
32
35
  LOG = logging.getLogger(__name__)
33
36
 
34
37
 
35
- def _get_columns(item):
38
+ def _get_columns(
39
+ item: _segment_range.NetworkSegmentRange,
40
+ ) -> tuple[tuple[str, ...], tuple[str, ...]]:
36
41
  hidden_columns = ['location', 'tenant_id']
37
42
  return utils.get_osc_show_columns_for_sdk_resource(
38
43
  item, {}, hidden_columns
39
44
  )
40
45
 
41
46
 
42
- def _get_ranges(item):
47
+ def _get_ranges(item: Any) -> Iterable[str]:
43
48
  item = sorted([int(i) for i in item])
44
49
  for a, b in itertools.groupby(enumerate(item), lambda xy: xy[1] - xy[0]):
45
50
  c = list(b)
@@ -48,18 +53,24 @@ def _get_ranges(item):
48
53
  )
49
54
 
50
55
 
51
- def _hack_tuple_value_update_by_index(tup, index, value):
56
+ def _hack_tuple_value_update_by_index(
57
+ tup: tuple[Any, ...], index: int, value: Any
58
+ ) -> tuple[Any, ...]:
52
59
  lot = list(tup)
53
60
  lot[index] = value
54
61
  return tuple(lot)
55
62
 
56
63
 
57
- def _is_prop_empty(columns, props, prop_name):
64
+ def _is_prop_empty(
65
+ columns: tuple[str, ...], props: tuple[Any, ...], prop_name: str
66
+ ) -> bool:
58
67
  return True if not props[columns.index(prop_name)] else False
59
68
 
60
69
 
61
- def _exchange_dict_keys_with_values(orig_dict):
62
- updated_dict: dict[str, ty.Any] = {}
70
+ def _exchange_dict_keys_with_values(
71
+ orig_dict: dict[Any, Any],
72
+ ) -> dict[str, Any]:
73
+ updated_dict: dict[str, Any] = {}
63
74
  for k, v in orig_dict.items():
64
75
  k = [k]
65
76
  if not updated_dict.get(v):
@@ -69,7 +80,9 @@ def _exchange_dict_keys_with_values(orig_dict):
69
80
  return updated_dict
70
81
 
71
82
 
72
- def _update_available_from_props(columns, props):
83
+ def _update_available_from_props(
84
+ columns: tuple[str, ...], props: tuple[Any, ...]
85
+ ) -> tuple[Any, ...]:
73
86
  index_available = columns.index('available')
74
87
  props = _hack_tuple_value_update_by_index(
75
88
  props, index_available, list(_get_ranges(props[index_available]))
@@ -77,7 +90,9 @@ def _update_available_from_props(columns, props):
77
90
  return props
78
91
 
79
92
 
80
- def _update_used_from_props(columns, props):
93
+ def _update_used_from_props(
94
+ columns: tuple[str, ...], props: tuple[Any, ...]
95
+ ) -> tuple[Any, ...]:
81
96
  index_used = columns.index('used')
82
97
  updated_used = _exchange_dict_keys_with_values(props[index_used])
83
98
  for k, v in updated_used.items():
@@ -86,7 +101,9 @@ def _update_used_from_props(columns, props):
86
101
  return props
87
102
 
88
103
 
89
- def _update_additional_fields_from_props(columns, props):
104
+ def _update_additional_fields_from_props(
105
+ columns: tuple[str, ...], props: tuple[Any, ...]
106
+ ) -> tuple[Any, ...]:
90
107
  props = _update_available_from_props(columns, props)
91
108
  props = _update_used_from_props(columns, props)
92
109
  return props
@@ -97,7 +114,7 @@ class CreateNetworkSegmentRange(
97
114
  ):
98
115
  _description = _("Create new network segment range")
99
116
 
100
- def get_parser(self, prog_name):
117
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
101
118
  parser = super().get_parser(prog_name)
102
119
  shared_group = parser.add_mutually_exclusive_group()
103
120
  shared_group.add_argument(
@@ -170,7 +187,9 @@ class CreateNetworkSegmentRange(
170
187
 
171
188
  return parser
172
189
 
173
- def take_action(self, parsed_args):
190
+ def take_action(
191
+ self, parsed_args: argparse.Namespace
192
+ ) -> tuple[Sequence[str], Iterable[Any]]:
174
193
  network_client = self.app.client_manager.network
175
194
  try:
176
195
  # Verify that the extension exists.
@@ -251,7 +270,7 @@ class CreateNetworkSegmentRange(
251
270
  class DeleteNetworkSegmentRange(command.Command):
252
271
  _description = _("Delete network segment range(s)")
253
272
 
254
- def get_parser(self, prog_name):
273
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
255
274
  parser = super().get_parser(prog_name)
256
275
  parser.add_argument(
257
276
  'network_segment_range',
@@ -261,7 +280,7 @@ class DeleteNetworkSegmentRange(command.Command):
261
280
  )
262
281
  return parser
263
282
 
264
- def take_action(self, parsed_args):
283
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
265
284
  network_client = self.app.client_manager.network
266
285
  try:
267
286
  # Verify that the extension exists.
@@ -304,7 +323,7 @@ class DeleteNetworkSegmentRange(command.Command):
304
323
  class ListNetworkSegmentRange(command.Lister):
305
324
  _description = _("List network segment ranges")
306
325
 
307
- def get_parser(self, prog_name):
326
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
308
327
  parser = super().get_parser(prog_name)
309
328
  parser.add_argument(
310
329
  '--long',
@@ -342,9 +361,12 @@ class ListNetworkSegmentRange(command.Lister):
342
361
  'List only network segment ranges without available segments'
343
362
  ),
344
363
  )
364
+ pagination.add_marker_pagination_option_to_parser(parser)
345
365
  return parser
346
366
 
347
- def take_action(self, parsed_args):
367
+ def take_action(
368
+ self, parsed_args: argparse.Namespace
369
+ ) -> tuple[tuple[str, ...], tuple[Any, ...]]:
348
370
  network_client = self.app.client_manager.network
349
371
  try:
350
372
  # Verify that the extension exists.
@@ -358,7 +380,15 @@ class ListNetworkSegmentRange(command.Lister):
358
380
  ) % {'e': e}
359
381
  raise exceptions.CommandError(msg)
360
382
 
361
- data = network_client.network_segment_ranges()
383
+ filters = {}
384
+ if parsed_args.marker is not None:
385
+ filters['marker'] = parsed_args.marker
386
+ if parsed_args.limit is not None:
387
+ filters['limit'] = parsed_args.limit
388
+ if parsed_args.max_items is not None:
389
+ filters['max_items'] = parsed_args.max_items
390
+
391
+ data = network_client.network_segment_ranges(**filters)
362
392
 
363
393
  headers: tuple[str, ...] = (
364
394
  'ID',
@@ -402,18 +432,25 @@ class ListNetworkSegmentRange(command.Lister):
402
432
  'available',
403
433
  )
404
434
 
405
- display_props: tuple[ty.Any, ...] = tuple()
435
+ display_props: tuple[Any, ...] = tuple()
406
436
  for s in data:
407
437
  props = utils.get_item_properties(s, columns)
408
438
  if (
409
- parsed_args.available
410
- and _is_prop_empty(columns, props, 'available')
411
- or parsed_args.unavailable
412
- and not _is_prop_empty(columns, props, 'available')
413
- or parsed_args.used
414
- and _is_prop_empty(columns, props, 'used')
415
- or parsed_args.unused
416
- and not _is_prop_empty(columns, props, 'used')
439
+ (
440
+ parsed_args.available
441
+ and _is_prop_empty(columns, props, 'available')
442
+ )
443
+ or (
444
+ parsed_args.unavailable
445
+ and not _is_prop_empty(columns, props, 'available')
446
+ )
447
+ or (
448
+ parsed_args.used and _is_prop_empty(columns, props, 'used')
449
+ )
450
+ or (
451
+ parsed_args.unused
452
+ and not _is_prop_empty(columns, props, 'used')
453
+ )
417
454
  ):
418
455
  continue
419
456
  if parsed_args.long:
@@ -426,7 +463,7 @@ class ListNetworkSegmentRange(command.Lister):
426
463
  class SetNetworkSegmentRange(common.NeutronCommandWithExtraArgs):
427
464
  _description = _("Set network segment range properties")
428
465
 
429
- def get_parser(self, prog_name):
466
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
430
467
  parser = super().get_parser(prog_name)
431
468
  parser.add_argument(
432
469
  'network_segment_range',
@@ -452,7 +489,7 @@ class SetNetworkSegmentRange(common.NeutronCommandWithExtraArgs):
452
489
  )
453
490
  return parser
454
491
 
455
- def take_action(self, parsed_args):
492
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
456
493
  network_client = self.app.client_manager.network
457
494
  try:
458
495
  # Verify that the extension exists.
@@ -490,7 +527,7 @@ class SetNetworkSegmentRange(common.NeutronCommandWithExtraArgs):
490
527
  class ShowNetworkSegmentRange(command.ShowOne):
491
528
  _description = _("Display network segment range details")
492
529
 
493
- def get_parser(self, prog_name):
530
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
494
531
  parser = super().get_parser(prog_name)
495
532
  parser.add_argument(
496
533
  'network_segment_range',
@@ -499,7 +536,9 @@ class ShowNetworkSegmentRange(command.ShowOne):
499
536
  )
500
537
  return parser
501
538
 
502
- def take_action(self, parsed_args):
539
+ def take_action(
540
+ self, parsed_args: argparse.Namespace
541
+ ) -> tuple[Sequence[str], Iterable[Any]]:
503
542
  network_client = self.app.client_manager.network
504
543
  try:
505
544
  # Verify that the extension exists.
@@ -13,6 +13,10 @@
13
13
 
14
14
  """Network Service Providers Implementation"""
15
15
 
16
+ import argparse
17
+ from collections.abc import Iterable
18
+ from typing import Any
19
+
16
20
  from osc_lib import utils
17
21
 
18
22
  from openstackclient import command
@@ -22,7 +26,9 @@ from openstackclient.i18n import _
22
26
  class ListNetworkServiceProvider(command.Lister):
23
27
  _description = _("List Service Providers")
24
28
 
25
- def take_action(self, parsed_args):
29
+ def take_action(
30
+ self, parsed_args: argparse.Namespace
31
+ ) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
26
32
  client = self.app.client_manager.network
27
33
 
28
34
  columns = (
@@ -16,10 +16,13 @@
16
16
 
17
17
  """Network trunk and subports action implementations"""
18
18
 
19
+ import argparse
20
+ from collections.abc import Iterable, Sequence
19
21
  import logging
20
- import typing as ty
22
+ from typing import Any
21
23
 
22
24
  from cliff import columns as cliff_columns
25
+ from openstack.network.v2 import trunk as _trunk
23
26
  from osc_lib.cli import format_columns
24
27
  from osc_lib.cli import identity as identity_utils
25
28
  from osc_lib.cli import parseractions
@@ -37,14 +40,14 @@ SUB_PORTS = 'sub_ports'
37
40
 
38
41
 
39
42
  class AdminStateColumn(cliff_columns.FormattableColumn[bool]):
40
- def human_readable(self):
43
+ def human_readable(self) -> str:
41
44
  return 'UP' if self._value else 'DOWN'
42
45
 
43
46
 
44
47
  class CreateNetworkTrunk(command.ShowOne):
45
48
  """Create a network trunk for a given project"""
46
49
 
47
- def get_parser(self, prog_name):
50
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
48
51
  parser = super().get_parser(prog_name)
49
52
  parser.add_argument(
50
53
  'name', metavar='<name>', help=_("Name of the trunk to create")
@@ -87,7 +90,9 @@ class CreateNetworkTrunk(command.ShowOne):
87
90
  identity_utils.add_project_owner_option_to_parser(parser)
88
91
  return parser
89
92
 
90
- def take_action(self, parsed_args):
93
+ def take_action(
94
+ self, parsed_args: argparse.Namespace
95
+ ) -> tuple[Sequence[str], Iterable[Any]]:
91
96
  network_client = self.app.client_manager.network
92
97
  identity_client = self.app.client_manager.identity
93
98
  attrs = _get_attrs_for_trunk(
@@ -104,7 +109,7 @@ class CreateNetworkTrunk(command.ShowOne):
104
109
  class DeleteNetworkTrunk(command.Command):
105
110
  """Delete a given network trunk"""
106
111
 
107
- def get_parser(self, prog_name):
112
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
108
113
  parser = super().get_parser(prog_name)
109
114
  parser.add_argument(
110
115
  'trunk',
@@ -114,7 +119,7 @@ class DeleteNetworkTrunk(command.Command):
114
119
  )
115
120
  return parser
116
121
 
117
- def take_action(self, parsed_args):
122
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
118
123
  network_client = self.app.client_manager.network
119
124
  result = 0
120
125
  for trunk in parsed_args.trunk:
@@ -145,7 +150,7 @@ class DeleteNetworkTrunk(command.Command):
145
150
  class ListNetworkTrunk(command.Lister):
146
151
  """List all network trunks"""
147
152
 
148
- def get_parser(self, prog_name):
153
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
149
154
  parser = super().get_parser(prog_name)
150
155
  parser.add_argument(
151
156
  '--long',
@@ -155,7 +160,9 @@ class ListNetworkTrunk(command.Lister):
155
160
  )
156
161
  return parser
157
162
 
158
- def take_action(self, parsed_args):
163
+ def take_action(
164
+ self, parsed_args: argparse.Namespace
165
+ ) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
159
166
  network_client = self.app.client_manager.network
160
167
  data = network_client.trunks()
161
168
  headers: tuple[str, ...] = ('ID', 'Name', 'Parent Port', 'Description')
@@ -184,7 +191,7 @@ class ListNetworkTrunk(command.Lister):
184
191
  class SetNetworkTrunk(command.Command):
185
192
  """Set network trunk properties"""
186
193
 
187
- def get_parser(self, prog_name):
194
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
188
195
  parser = super().get_parser(prog_name)
189
196
  parser.add_argument(
190
197
  'trunk', metavar="<trunk>", help=_("Trunk to modify (name or ID)")
@@ -220,7 +227,7 @@ class SetNetworkTrunk(command.Command):
220
227
  )
221
228
  return parser
222
229
 
223
- def take_action(self, parsed_args):
230
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
224
231
  network_client = self.app.client_manager.network
225
232
  identity_client = self.app.client_manager.identity
226
233
  trunk_id = network_client.find_trunk(
@@ -255,14 +262,16 @@ class SetNetworkTrunk(command.Command):
255
262
  class ShowNetworkTrunk(command.ShowOne):
256
263
  """Show information of a given network trunk"""
257
264
 
258
- def get_parser(self, prog_name):
265
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
259
266
  parser = super().get_parser(prog_name)
260
267
  parser.add_argument(
261
268
  'trunk', metavar="<trunk>", help=_("Trunk to display (name or ID)")
262
269
  )
263
270
  return parser
264
271
 
265
- def take_action(self, parsed_args):
272
+ def take_action(
273
+ self, parsed_args: argparse.Namespace
274
+ ) -> tuple[Sequence[str], Iterable[Any]]:
266
275
  network_client = self.app.client_manager.network
267
276
  trunk_id = network_client.find_trunk(
268
277
  parsed_args.trunk,
@@ -279,7 +288,7 @@ class ShowNetworkTrunk(command.ShowOne):
279
288
  class ListNetworkSubport(command.Lister):
280
289
  """List all subports for a given network trunk"""
281
290
 
282
- def get_parser(self, prog_name):
291
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
283
292
  parser = super().get_parser(prog_name)
284
293
  parser.add_argument(
285
294
  '--trunk',
@@ -289,7 +298,9 @@ class ListNetworkSubport(command.Lister):
289
298
  )
290
299
  return parser
291
300
 
292
- def take_action(self, parsed_args):
301
+ def take_action(
302
+ self, parsed_args: argparse.Namespace
303
+ ) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
293
304
  network_client = self.app.client_manager.network
294
305
  trunk_id = network_client.find_trunk(
295
306
  parsed_args.trunk,
@@ -321,7 +332,7 @@ class ListNetworkSubport(command.Lister):
321
332
  class UnsetNetworkTrunk(command.Command):
322
333
  """Unset subports from a given network trunk"""
323
334
 
324
- def get_parser(self, prog_name):
335
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
325
336
  parser = super().get_parser(prog_name)
326
337
  parser.add_argument(
327
338
  'trunk',
@@ -341,7 +352,7 @@ class UnsetNetworkTrunk(command.Command):
341
352
  )
342
353
  return parser
343
354
 
344
- def take_action(self, parsed_args):
355
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
345
356
  network_client = self.app.client_manager.network
346
357
  attrs = _get_attrs_for_subports(network_client, parsed_args)
347
358
  trunk_id = network_client.find_trunk(
@@ -357,15 +368,19 @@ _formatters = {
357
368
  }
358
369
 
359
370
 
360
- def _get_columns(item):
371
+ def _get_columns(
372
+ item: _trunk.Trunk,
373
+ ) -> tuple[tuple[str, ...], tuple[str, ...]]:
361
374
  hidden_columns = ['location', 'tenant_id']
362
375
  return osc_utils.get_osc_show_columns_for_sdk_resource(
363
376
  item, {}, hidden_columns
364
377
  )
365
378
 
366
379
 
367
- def _get_attrs_for_trunk(network_client, identity_client, parsed_args):
368
- attrs: dict[str, ty.Any] = {}
380
+ def _get_attrs_for_trunk(
381
+ network_client: Any, identity_client: Any, parsed_args: argparse.Namespace
382
+ ) -> dict[str, Any]:
383
+ attrs: dict[str, Any] = {}
369
384
  if parsed_args.name is not None:
370
385
  attrs['name'] = str(parsed_args.name)
371
386
  if parsed_args.description is not None:
@@ -392,12 +407,14 @@ def _get_attrs_for_trunk(network_client, identity_client, parsed_args):
392
407
  parsed_args.project,
393
408
  parsed_args.project_domain,
394
409
  ).id
395
- attrs['tenant_id'] = project_id
410
+ attrs['project_id'] = project_id
396
411
 
397
412
  return attrs
398
413
 
399
414
 
400
- def _format_subports(network_client, subports):
415
+ def _format_subports(
416
+ network_client: Any, subports: list[dict[str, Any]]
417
+ ) -> list[dict[str, Any]]:
401
418
  attrs = []
402
419
  for subport in subports:
403
420
  subport_attrs = {}
@@ -424,7 +441,9 @@ def _format_subports(network_client, subports):
424
441
  return attrs
425
442
 
426
443
 
427
- def _get_attrs_for_subports(network_client, parsed_args):
444
+ def _get_attrs_for_subports(
445
+ network_client: Any, parsed_args: argparse.Namespace
446
+ ) -> list[dict[str, Any]]:
428
447
  attrs = []
429
448
  if 'set_subports' in parsed_args and parsed_args.set_subports is not None:
430
449
  attrs = _format_subports(network_client, parsed_args.set_subports)