python-openstackclient 8.3.0__py3-none-any.whl → 10.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. openstackclient/__init__.py +2 -6
  2. openstackclient/api/api.py +41 -23
  3. openstackclient/api/compute_v2.py +44 -25
  4. openstackclient/api/object_store_v1.py +75 -97
  5. openstackclient/api/volume_v2.py +2 -1
  6. openstackclient/api/volume_v3.py +2 -1
  7. openstackclient/common/availability_zone.py +58 -42
  8. openstackclient/common/clientmanager.py +56 -29
  9. openstackclient/common/configuration.py +10 -3
  10. openstackclient/common/envvars.py +2 -2
  11. openstackclient/common/extension.py +14 -5
  12. openstackclient/common/limits.py +10 -5
  13. openstackclient/common/module.py +14 -6
  14. openstackclient/common/pagination.py +8 -2
  15. openstackclient/common/progressbar.py +7 -6
  16. openstackclient/common/project_cleanup.py +13 -7
  17. openstackclient/common/quota.py +126 -114
  18. openstackclient/common/versions.py +8 -2
  19. openstackclient/compute/client.py +7 -3
  20. openstackclient/compute/v2/agent.py +17 -10
  21. openstackclient/compute/v2/aggregate.py +36 -22
  22. openstackclient/compute/v2/console.py +14 -8
  23. openstackclient/compute/v2/console_connection.py +11 -3
  24. openstackclient/compute/v2/flavor.py +39 -21
  25. openstackclient/compute/v2/host.py +14 -6
  26. openstackclient/compute/v2/hypervisor.py +14 -5
  27. openstackclient/compute/v2/hypervisor_stats.py +10 -2
  28. openstackclient/compute/v2/keypair.py +29 -14
  29. openstackclient/compute/v2/server.py +251 -171
  30. openstackclient/compute/v2/server_backup.py +10 -4
  31. openstackclient/compute/v2/server_event.py +21 -12
  32. openstackclient/compute/v2/server_group.py +21 -11
  33. openstackclient/compute/v2/server_image.py +19 -10
  34. openstackclient/compute/v2/server_migration.py +24 -10
  35. openstackclient/compute/v2/server_share.py +274 -0
  36. openstackclient/compute/v2/server_volume.py +10 -4
  37. openstackclient/compute/v2/service.py +14 -7
  38. openstackclient/compute/v2/usage.py +26 -21
  39. openstackclient/identity/client.py +8 -3
  40. openstackclient/identity/common.py +103 -41
  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 +26 -12
  48. openstackclient/identity/v2_0/token.py +12 -5
  49. openstackclient/identity/v2_0/user.py +26 -15
  50. openstackclient/identity/v3/access_rule.py +26 -12
  51. openstackclient/identity/v3/application_credential.py +59 -24
  52. openstackclient/identity/v3/catalog.py +14 -7
  53. openstackclient/identity/v3/consumer.py +22 -11
  54. openstackclient/identity/v3/credential.py +36 -16
  55. openstackclient/identity/v3/domain.py +37 -18
  56. openstackclient/identity/v3/ec2creds.py +25 -12
  57. openstackclient/identity/v3/endpoint.py +42 -20
  58. openstackclient/identity/v3/endpoint_group.py +28 -17
  59. openstackclient/identity/v3/federation_protocol.py +71 -50
  60. openstackclient/identity/v3/group.py +55 -32
  61. openstackclient/identity/v3/identity_provider.py +92 -57
  62. openstackclient/identity/v3/implied_role.py +21 -9
  63. openstackclient/identity/v3/limit.py +115 -92
  64. openstackclient/identity/v3/mapping.py +26 -13
  65. openstackclient/identity/v3/policy.py +23 -12
  66. openstackclient/identity/v3/project.py +211 -122
  67. openstackclient/identity/v3/region.py +36 -16
  68. openstackclient/identity/v3/registered_limit.py +116 -109
  69. openstackclient/identity/v3/role.py +61 -31
  70. openstackclient/identity/v3/role_assignment.py +23 -6
  71. openstackclient/identity/v3/service.py +36 -16
  72. openstackclient/identity/v3/service_provider.py +37 -15
  73. openstackclient/identity/v3/tag.py +23 -17
  74. openstackclient/identity/v3/token.py +30 -14
  75. openstackclient/identity/v3/trust.py +32 -14
  76. openstackclient/identity/v3/unscoped_saml.py +10 -2
  77. openstackclient/identity/v3/user.py +49 -26
  78. openstackclient/image/client.py +7 -3
  79. openstackclient/image/v1/image.py +33 -26
  80. openstackclient/image/v2/cache.py +14 -9
  81. openstackclient/image/v2/image.py +76 -49
  82. openstackclient/image/v2/info.py +7 -1
  83. openstackclient/image/v2/metadef_namespaces.py +109 -13
  84. openstackclient/image/v2/metadef_objects.py +28 -15
  85. openstackclient/image/v2/metadef_properties.py +24 -13
  86. openstackclient/image/v2/metadef_resource_type_association.py +14 -7
  87. openstackclient/image/v2/metadef_resource_types.py +7 -1
  88. openstackclient/image/v2/task.py +15 -6
  89. openstackclient/locale/tr_TR/LC_MESSAGES/openstackclient.po +7 -192
  90. openstackclient/network/client.py +7 -2
  91. openstackclient/network/common.py +16 -241
  92. openstackclient/network/utils.py +36 -22
  93. openstackclient/network/v2/address_group.py +27 -16
  94. openstackclient/network/v2/address_scope.py +24 -13
  95. openstackclient/network/v2/bgpvpn/bgpvpn.py +463 -0
  96. openstackclient/network/v2/bgpvpn/constants.py +30 -0
  97. openstackclient/network/v2/bgpvpn/network_association.py +214 -0
  98. openstackclient/network/v2/bgpvpn/port_association.py +490 -0
  99. openstackclient/network/v2/bgpvpn/router_association.py +288 -0
  100. openstackclient/network/v2/default_security_group_rule.py +19 -10
  101. openstackclient/network/v2/floating_ip.py +110 -159
  102. openstackclient/network/v2/floating_ip_port_forwarding.py +30 -18
  103. openstackclient/network/v2/fwaas/__init__.py +0 -0
  104. openstackclient/network/v2/fwaas/group.py +466 -0
  105. openstackclient/network/v2/fwaas/policy.py +518 -0
  106. openstackclient/network/v2/fwaas/rule.py +574 -0
  107. openstackclient/network/v2/ip_availability.py +13 -5
  108. openstackclient/network/v2/l3_conntrack_helper.py +22 -13
  109. openstackclient/network/v2/local_ip.py +24 -13
  110. openstackclient/network/v2/local_ip_association.py +14 -7
  111. openstackclient/network/v2/ndp_proxy.py +20 -11
  112. openstackclient/network/v2/network.py +129 -196
  113. openstackclient/network/v2/network_agent.py +46 -25
  114. openstackclient/network/v2/network_auto_allocated_topology.py +22 -11
  115. openstackclient/network/v2/network_flavor.py +27 -16
  116. openstackclient/network/v2/network_flavor_profile.py +23 -12
  117. openstackclient/network/v2/network_meter.py +21 -10
  118. openstackclient/network/v2/network_meter_rule.py +21 -11
  119. openstackclient/network/v2/network_qos_policy.py +25 -15
  120. openstackclient/network/v2/network_qos_rule.py +32 -17
  121. openstackclient/network/v2/network_qos_rule_type.py +13 -5
  122. openstackclient/network/v2/network_rbac.py +23 -12
  123. openstackclient/network/v2/network_segment.py +20 -11
  124. openstackclient/network/v2/network_segment_range.py +56 -29
  125. openstackclient/network/v2/network_service_provider.py +7 -1
  126. openstackclient/network/v2/network_trunk.py +38 -22
  127. openstackclient/network/v2/port.py +54 -29
  128. openstackclient/network/v2/router.py +75 -52
  129. openstackclient/network/v2/security_group.py +87 -157
  130. openstackclient/network/v2/security_group_rule.py +100 -280
  131. openstackclient/network/v2/subnet.py +49 -28
  132. openstackclient/network/v2/subnet_pool.py +30 -17
  133. openstackclient/network/v2/taas/tap_flow.py +22 -11
  134. openstackclient/network/v2/taas/tap_mirror.py +22 -11
  135. openstackclient/network/v2/taas/tap_service.py +23 -12
  136. openstackclient/object/client.py +7 -2
  137. openstackclient/object/v1/account.py +13 -6
  138. openstackclient/object/v1/container.py +25 -15
  139. openstackclient/object/v1/object.py +25 -15
  140. openstackclient/py.typed +0 -0
  141. openstackclient/shell.py +46 -10
  142. openstackclient/tests/functional/base.py +55 -20
  143. openstackclient/tests/functional/common/test_extension.py +4 -0
  144. openstackclient/tests/functional/common/test_quota.py +3 -1
  145. openstackclient/tests/functional/compute/v2/common.py +14 -13
  146. openstackclient/tests/functional/compute/v2/test_flavor.py +3 -1
  147. openstackclient/tests/functional/compute/v2/test_server.py +3 -0
  148. openstackclient/tests/functional/identity/v2/common.py +10 -6
  149. openstackclient/tests/functional/identity/v2/test_role.py +4 -4
  150. openstackclient/tests/functional/identity/v3/common.py +25 -19
  151. openstackclient/tests/functional/identity/v3/test_group.py +20 -20
  152. openstackclient/tests/functional/identity/v3/test_idp.py +3 -1
  153. openstackclient/tests/functional/identity/v3/test_limit.py +47 -0
  154. openstackclient/tests/functional/identity/v3/test_project.py +10 -10
  155. openstackclient/tests/functional/identity/v3/test_role.py +18 -18
  156. openstackclient/tests/functional/identity/v3/test_role_assignment.py +12 -12
  157. openstackclient/tests/functional/identity/v3/test_user.py +8 -8
  158. openstackclient/tests/functional/image/base.py +1 -6
  159. openstackclient/tests/functional/image/v2/test_metadef_objects.py +69 -0
  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_snapshot.py +56 -138
  172. openstackclient/tests/functional/volume/v3/test_volume_type.py +2 -2
  173. openstackclient/tests/unit/common/test_availability_zone.py +35 -49
  174. openstackclient/tests/unit/common/test_extension.py +2 -2
  175. openstackclient/tests/unit/common/test_module.py +12 -7
  176. openstackclient/tests/unit/common/test_project_cleanup.py +3 -1
  177. openstackclient/tests/unit/common/test_quota.py +62 -23
  178. openstackclient/tests/unit/compute/v2/fakes.py +25 -0
  179. openstackclient/tests/unit/compute/v2/test_flavor.py +28 -2
  180. openstackclient/tests/unit/compute/v2/test_keypair.py +6 -6
  181. openstackclient/tests/unit/compute/v2/test_server.py +17 -104
  182. openstackclient/tests/unit/compute/v2/test_server_share.py +287 -0
  183. openstackclient/tests/unit/identity/v3/fakes.py +3 -0
  184. openstackclient/tests/unit/identity/v3/test_group.py +4 -14
  185. openstackclient/tests/unit/identity/v3/test_identity_provider.py +303 -299
  186. openstackclient/tests/unit/identity/v3/test_limit.py +197 -145
  187. openstackclient/tests/unit/identity/v3/test_project.py +831 -512
  188. openstackclient/tests/unit/identity/v3/test_protocol.py +97 -88
  189. openstackclient/tests/unit/identity/v3/test_registered_limit.py +355 -220
  190. openstackclient/tests/unit/identity/v3/test_user.py +4 -4
  191. openstackclient/tests/unit/image/v2/test_image.py +16 -16
  192. openstackclient/tests/unit/image/v2/test_metadef_namespaces.py +105 -6
  193. openstackclient/tests/unit/network/test_common.py +0 -155
  194. openstackclient/tests/unit/network/v2/bgpvpn/__init__.py +0 -0
  195. openstackclient/tests/unit/network/v2/bgpvpn/fakes.py +179 -0
  196. openstackclient/tests/unit/network/v2/bgpvpn/test_bgpvpn.py +584 -0
  197. openstackclient/tests/unit/network/v2/bgpvpn/test_network_association.py +285 -0
  198. openstackclient/tests/unit/network/v2/bgpvpn/test_port_association.py +384 -0
  199. openstackclient/tests/unit/network/v2/bgpvpn/test_router_association.py +297 -0
  200. openstackclient/tests/unit/network/v2/fwaas/__init__.py +0 -0
  201. openstackclient/tests/unit/network/v2/fwaas/test_group.py +897 -0
  202. openstackclient/tests/unit/network/v2/fwaas/test_policy.py +869 -0
  203. openstackclient/tests/unit/network/v2/fwaas/test_rule.py +980 -0
  204. openstackclient/tests/unit/network/v2/taas/{test_osc_tap_flow.py → test_tap_flow.py} +18 -25
  205. openstackclient/tests/unit/network/v2/taas/{test_osc_tap_mirror.py → test_tap_mirror.py} +19 -29
  206. openstackclient/tests/unit/network/v2/taas/{test_osc_tap_service.py → test_tap_service.py} +19 -29
  207. openstackclient/tests/unit/network/v2/test_address_group.py +2 -2
  208. openstackclient/tests/unit/network/v2/{test_floating_ip_network.py → test_floating_ip.py} +3 -2
  209. openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +13 -13
  210. openstackclient/tests/unit/network/v2/test_network_agent.py +8 -4
  211. openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py +3 -3
  212. openstackclient/tests/unit/network/v2/test_network_flavor.py +2 -2
  213. openstackclient/tests/unit/network/v2/test_network_qos_policy.py +1 -1
  214. openstackclient/tests/unit/network/v2/test_network_qos_rule.py +2 -2
  215. openstackclient/tests/unit/network/v2/test_network_rbac.py +1 -1
  216. openstackclient/tests/unit/network/v2/test_network_segment.py +1 -1
  217. openstackclient/tests/unit/network/v2/test_network_segment_range.py +7 -10
  218. openstackclient/tests/unit/network/v2/test_network_trunk.py +1 -1
  219. openstackclient/tests/unit/network/v2/test_router.py +8 -9
  220. openstackclient/tests/unit/network/v2/{test_security_group_network.py → test_security_group.py} +1 -20
  221. openstackclient/tests/unit/network/v2/{test_security_group_rule_network.py → test_security_group_rule.py} +7 -41
  222. openstackclient/tests/unit/network/v2/test_subnet.py +2 -1
  223. openstackclient/tests/unit/network/v2/test_subnet_pool.py +2 -1
  224. openstackclient/tests/unit/object/v1/fakes.py +8 -7
  225. openstackclient/tests/unit/object/v1/test_container.py +65 -101
  226. openstackclient/tests/unit/object/v1/test_container_all.py +8 -1
  227. openstackclient/tests/unit/object/v1/test_object.py +44 -84
  228. openstackclient/tests/unit/object/v1/test_object_all.py +8 -1
  229. openstackclient/tests/unit/test_hacking.py +108 -0
  230. openstackclient/tests/unit/volume/v2/fakes.py +1 -0
  231. openstackclient/tests/unit/volume/v2/test_consistency_group.py +8 -2
  232. openstackclient/tests/unit/volume/v2/test_volume.py +7 -6
  233. openstackclient/tests/unit/volume/v2/test_volume_backup.py +1 -5
  234. openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +2 -1
  235. openstackclient/tests/unit/volume/v2/test_volume_type.py +2 -4
  236. openstackclient/tests/unit/volume/v3/fakes.py +1 -0
  237. openstackclient/tests/unit/volume/v3/test_volume.py +94 -15
  238. openstackclient/tests/unit/volume/v3/test_volume_attachment.py +1 -1
  239. openstackclient/tests/unit/volume/v3/test_volume_backup.py +1 -5
  240. openstackclient/tests/unit/volume/v3/test_volume_snapshot.py +55 -1
  241. openstackclient/tests/unit/volume/v3/test_volume_type.py +2 -4
  242. openstackclient/volume/client.py +7 -3
  243. openstackclient/volume/v2/backup_record.py +15 -6
  244. openstackclient/volume/v2/consistency_group.py +37 -25
  245. openstackclient/volume/v2/consistency_group_snapshot.py +27 -12
  246. openstackclient/volume/v2/qos_specs.py +30 -19
  247. openstackclient/volume/v2/service.py +17 -6
  248. openstackclient/volume/v2/volume.py +69 -34
  249. openstackclient/volume/v2/volume_backend.py +19 -6
  250. openstackclient/volume/v2/volume_backup.py +48 -22
  251. openstackclient/volume/v2/volume_host.py +6 -4
  252. openstackclient/volume/v2/volume_snapshot.py +52 -26
  253. openstackclient/volume/v2/volume_transfer_request.py +33 -15
  254. openstackclient/volume/v2/volume_type.py +46 -27
  255. openstackclient/volume/v3/block_storage_cleanup.py +11 -3
  256. openstackclient/volume/v3/block_storage_cluster.py +19 -7
  257. openstackclient/volume/v3/block_storage_log_level.py +15 -6
  258. openstackclient/volume/v3/block_storage_manage.py +10 -4
  259. openstackclient/volume/v3/block_storage_resource_filter.py +17 -5
  260. openstackclient/volume/v3/service.py +16 -6
  261. openstackclient/volume/v3/volume.py +103 -46
  262. openstackclient/volume/v3/volume_attachment.py +43 -21
  263. openstackclient/volume/v3/volume_backup.py +55 -26
  264. openstackclient/volume/v3/volume_group.py +23 -13
  265. openstackclient/volume/v3/volume_group_snapshot.py +32 -13
  266. openstackclient/volume/v3/volume_group_type.py +26 -13
  267. openstackclient/volume/v3/volume_message.py +15 -7
  268. openstackclient/volume/v3/volume_snapshot.py +71 -34
  269. openstackclient/volume/v3/volume_transfer_request.py +33 -15
  270. openstackclient/volume/v3/volume_type.py +45 -27
  271. {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/METADATA +6 -6
  272. {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/RECORD +279 -267
  273. {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/WHEEL +1 -1
  274. {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/entry_points.txt +53 -1
  275. {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/licenses/AUTHORS +9 -0
  276. python_openstackclient-10.0.0.dist-info/pbr.json +1 -0
  277. openstackclient/api/image_v1.py +0 -69
  278. openstackclient/api/image_v2.py +0 -79
  279. openstackclient/network/v2/floating_ip_pool.py +0 -38
  280. openstackclient/tests/functional/image/v1/test_image.py +0 -97
  281. openstackclient/tests/unit/api/test_image_v1.py +0 -96
  282. openstackclient/tests/unit/api/test_image_v2.py +0 -96
  283. openstackclient/tests/unit/network/v2/test_floating_ip_compute.py +0 -248
  284. openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py +0 -49
  285. openstackclient/tests/unit/network/v2/test_floating_ip_pool_network.py +0 -39
  286. openstackclient/tests/unit/network/v2/test_network_compute.py +0 -404
  287. openstackclient/tests/unit/network/v2/test_security_group_compute.py +0 -392
  288. openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py +0 -555
  289. python_openstackclient-8.3.0.dist-info/pbr.json +0 -1
  290. /openstackclient/{tests/functional/image/v1 → network/v2/bgpvpn}/__init__.py +0 -0
  291. {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/licenses/LICENSE +0 -0
  292. {python_openstackclient-8.3.0.dist-info → python_openstackclient-10.0.0.dist-info}/top_level.txt +0 -0
@@ -11,12 +11,8 @@
11
11
  # under the License.
12
12
  #
13
13
 
14
- import pbr.version
14
+ import importlib.metadata
15
15
 
16
16
  __all__ = ['__version__']
17
17
 
18
- version_info = pbr.version.VersionInfo('python-openstackclient')
19
- try:
20
- __version__ = version_info.version_string()
21
- except AttributeError:
22
- __version__ = None
18
+ __version__ = importlib.metadata.version('python-openstackclient')
@@ -13,6 +13,8 @@
13
13
 
14
14
  """Base API Library"""
15
15
 
16
+ from typing import Any
17
+
16
18
  from keystoneauth1 import exceptions as ks_exceptions
17
19
  from keystoneauth1 import session as ks_session
18
20
  from osc_lib import exceptions
@@ -30,7 +32,9 @@ class KeystoneSession:
30
32
 
31
33
  """
32
34
 
33
- def __init__(self, session=None, endpoint=None, **kwargs):
35
+ def __init__(
36
+ self, session: Any = None, endpoint: str | None = None, **kwargs: Any
37
+ ) -> None:
34
38
  """Base object that contains some common API objects and methods
35
39
 
36
40
  :param Session session:
@@ -46,7 +50,9 @@ class KeystoneSession:
46
50
  self.session = session
47
51
  self.endpoint = endpoint
48
52
 
49
- def _request(self, method, url, session=None, **kwargs):
53
+ def _request(
54
+ self, method: str, url: str, session: Any = None, **kwargs: Any
55
+ ) -> Any:
50
56
  """Perform call into session
51
57
 
52
58
  All API calls are funneled through this method to provide a common
@@ -82,8 +88,12 @@ class BaseAPI(KeystoneSession):
82
88
  """Base API"""
83
89
 
84
90
  def __init__(
85
- self, session=None, service_type=None, endpoint=None, **kwargs
86
- ):
91
+ self,
92
+ session: Any = None,
93
+ service_type: str | None = None,
94
+ endpoint: str | None = None,
95
+ **kwargs: Any,
96
+ ) -> None:
87
97
  """Base object that contains some common API objects and methods
88
98
 
89
99
  :param Session session:
@@ -101,7 +111,13 @@ class BaseAPI(KeystoneSession):
101
111
 
102
112
  # The basic action methods all take a Session and return dict/lists
103
113
 
104
- def create(self, url, session=None, method=None, **params):
114
+ def create(
115
+ self,
116
+ url: str,
117
+ session: Any = None,
118
+ method: str | None = None,
119
+ **params: Any,
120
+ ) -> Any:
105
121
  """Create a new resource
106
122
 
107
123
  :param string url:
@@ -121,7 +137,7 @@ class BaseAPI(KeystoneSession):
121
137
  except requests.JSONDecodeError:
122
138
  return ret
123
139
 
124
- def delete(self, url, session=None, **params):
140
+ def delete(self, url: str, session: Any = None, **params: Any) -> Any:
125
141
  """Delete a resource
126
142
 
127
143
  :param string url:
@@ -132,7 +148,14 @@ class BaseAPI(KeystoneSession):
132
148
 
133
149
  return self._request('DELETE', url, **params)
134
150
 
135
- def list(self, path, session=None, body=None, detailed=False, **params):
151
+ def list(
152
+ self,
153
+ path: str,
154
+ session: Any = None,
155
+ body: Any = None,
156
+ detailed: bool = False,
157
+ **params: Any,
158
+ ) -> Any:
136
159
  """Return a list of resources
137
160
 
138
161
  GET ${ENDPOINT}/${PATH}?${PARAMS}
@@ -177,11 +200,11 @@ class BaseAPI(KeystoneSession):
177
200
 
178
201
  def find_attr(
179
202
  self,
180
- path,
181
- value=None,
182
- attr=None,
183
- resource=None,
184
- ):
203
+ path: str,
204
+ value: str | None = None,
205
+ attr: str | None = None,
206
+ resource: str | None = None,
207
+ ) -> Any:
185
208
  """Find a resource via attribute or ID
186
209
 
187
210
  Most APIs return a list wrapped by a dict with the resource
@@ -211,7 +234,7 @@ class BaseAPI(KeystoneSession):
211
234
  if resource is None:
212
235
  resource = path
213
236
 
214
- def getlist(kw):
237
+ def getlist(kw: dict[str, Any]) -> Any:
215
238
  """Do list call, unwrap resource dict if present"""
216
239
  ret = self.list(path, **kw)
217
240
  if isinstance(ret, dict) and resource in ret:
@@ -219,7 +242,7 @@ class BaseAPI(KeystoneSession):
219
242
  return ret
220
243
 
221
244
  # Search by attribute
222
- kwargs = {attr: value}
245
+ kwargs: dict[str, Any] = {attr: value}
223
246
  data = getlist(kwargs)
224
247
  if isinstance(data, dict):
225
248
  return data
@@ -241,7 +264,7 @@ class BaseAPI(KeystoneSession):
241
264
  msg % {'resource': resource, 'attr': attr, 'value': value}
242
265
  )
243
266
 
244
- def find_bulk(self, path, **kwargs):
267
+ def find_bulk(self, path: str, **kwargs: Any) -> Any:
245
268
  """Bulk load and filter locally
246
269
 
247
270
  :param string path:
@@ -254,7 +277,7 @@ class BaseAPI(KeystoneSession):
254
277
  items = self.list(path)
255
278
  if isinstance(items, dict):
256
279
  # strip off the enclosing dict
257
- key = list(items.keys())[0]
280
+ key = next(iter(items.keys()))
258
281
  items = items[key]
259
282
 
260
283
  ret = []
@@ -267,7 +290,7 @@ class BaseAPI(KeystoneSession):
267
290
 
268
291
  return ret
269
292
 
270
- def find_one(self, path, **kwargs):
293
+ def find_one(self, path: str, **kwargs: Any) -> Any:
271
294
  """Find a resource by name or ID
272
295
 
273
296
  :param string path:
@@ -286,12 +309,7 @@ class BaseAPI(KeystoneSession):
286
309
  raise RuntimeError(msg)
287
310
  return bulk_list[0]
288
311
 
289
- def find(
290
- self,
291
- path,
292
- value=None,
293
- attr=None,
294
- ):
312
+ def find(self, path: str, value: str, attr: str) -> Any:
295
313
  """Find a single resource by name or ID
296
314
 
297
315
  :param string path:
@@ -17,6 +17,7 @@ intentionally supported by SDK. Most of these are proxy APIs.
17
17
  """
18
18
 
19
19
  import http
20
+ from typing import Any
20
21
 
21
22
  from openstack import exceptions as sdk_exceptions
22
23
  from osc_lib import exceptions
@@ -25,7 +26,11 @@ from osc_lib import exceptions
25
26
  # security groups
26
27
 
27
28
 
28
- def create_security_group(compute_client, name=None, description=None):
29
+ def create_security_group(
30
+ compute_client: Any,
31
+ name: str | None = None,
32
+ description: str | None = None,
33
+ ) -> Any:
29
34
  """Create a new security group
30
35
 
31
36
  https://docs.openstack.org/api-ref/compute/#create-security-group
@@ -46,7 +51,9 @@ def create_security_group(compute_client, name=None, description=None):
46
51
  return response.json()['security_group']
47
52
 
48
53
 
49
- def list_security_groups(compute_client, all_projects=None):
54
+ def list_security_groups(
55
+ compute_client: Any, all_projects: bool | None = None
56
+ ) -> Any:
50
57
  """Get all security groups
51
58
 
52
59
  https://docs.openstack.org/api-ref/compute/#list-security-groups
@@ -63,7 +70,7 @@ def list_security_groups(compute_client, all_projects=None):
63
70
  return response.json()['security_groups']
64
71
 
65
72
 
66
- def find_security_group(compute_client, name_or_id):
73
+ def find_security_group(compute_client: Any, name_or_id: str) -> Any:
67
74
  """Find the security group for a given name or ID
68
75
 
69
76
  https://docs.openstack.org/api-ref/compute/#show-security-group-details
@@ -101,8 +108,11 @@ def find_security_group(compute_client, name_or_id):
101
108
 
102
109
 
103
110
  def update_security_group(
104
- compute_client, security_group_id, name=None, description=None
105
- ):
111
+ compute_client: Any,
112
+ security_group_id: str,
113
+ name: str | None = None,
114
+ description: str | None = None,
115
+ ) -> Any:
106
116
  """Update an existing security group
107
117
 
108
118
  https://docs.openstack.org/api-ref/compute/#update-security-group
@@ -127,7 +137,9 @@ def update_security_group(
127
137
  return response.json()['security_group']
128
138
 
129
139
 
130
- def delete_security_group(compute_client, security_group_id=None):
140
+ def delete_security_group(
141
+ compute_client: Any, security_group_id: str | None = None
142
+ ) -> None:
131
143
  """Delete a security group
132
144
 
133
145
  https://docs.openstack.org/api-ref/compute/#delete-security-group
@@ -146,14 +158,14 @@ def delete_security_group(compute_client, security_group_id=None):
146
158
 
147
159
 
148
160
  def create_security_group_rule(
149
- compute_client,
150
- security_group_id=None,
151
- ip_protocol=None,
152
- from_port=None,
153
- to_port=None,
154
- remote_ip=None,
155
- remote_group=None,
156
- ):
161
+ compute_client: Any,
162
+ security_group_id: str | None = None,
163
+ ip_protocol: str | None = None,
164
+ from_port: int | None = None,
165
+ to_port: int | None = None,
166
+ remote_ip: str | None = None,
167
+ remote_group: str | None = None,
168
+ ) -> Any:
157
169
  """Create a new security group rule
158
170
 
159
171
  https://docs.openstack.org/api-ref/compute/#create-security-group-rule
@@ -182,7 +194,9 @@ def create_security_group_rule(
182
194
  return response.json()['security_group_rule']
183
195
 
184
196
 
185
- def delete_security_group_rule(compute_client, security_group_rule_id=None):
197
+ def delete_security_group_rule(
198
+ compute_client: Any, security_group_rule_id: str | None = None
199
+ ) -> None:
186
200
  """Delete a security group rule
187
201
 
188
202
  https://docs.openstack.org/api-ref/compute/#delete-security-group-rule
@@ -201,7 +215,12 @@ def delete_security_group_rule(compute_client, security_group_rule_id=None):
201
215
  # networks
202
216
 
203
217
 
204
- def create_network(compute_client, name, subnet, share_subnet=None):
218
+ def create_network(
219
+ compute_client: Any,
220
+ name: str,
221
+ subnet: str,
222
+ share_subnet: bool | None = None,
223
+ ) -> Any:
205
224
  """Create a new network
206
225
 
207
226
  https://docs.openstack.org/api-ref/compute/#create-network
@@ -212,7 +231,7 @@ def create_network(compute_client, name, subnet, share_subnet=None):
212
231
  :param bool share_subnet: Shared subnet between projects
213
232
  :returns: A network object
214
233
  """
215
- data = {
234
+ data: dict[str, Any] = {
216
235
  'label': name,
217
236
  'cidr': subnet,
218
237
  }
@@ -226,7 +245,7 @@ def create_network(compute_client, name, subnet, share_subnet=None):
226
245
  return response.json()['network']
227
246
 
228
247
 
229
- def list_networks(compute_client):
248
+ def list_networks(compute_client: Any) -> Any:
230
249
  """Get all networks
231
250
 
232
251
  https://docs.openstack.org/api-ref/compute/#list-networks
@@ -239,7 +258,7 @@ def list_networks(compute_client):
239
258
  return response.json()['networks']
240
259
 
241
260
 
242
- def find_network(compute_client, name_or_id):
261
+ def find_network(compute_client: Any, name_or_id: str) -> Any:
243
262
  """Find the network for a given name or ID
244
263
 
245
264
  https://docs.openstack.org/api-ref/compute/#show-network-details
@@ -276,7 +295,7 @@ def find_network(compute_client, name_or_id):
276
295
  return found
277
296
 
278
297
 
279
- def delete_network(compute_client, network_id):
298
+ def delete_network(compute_client: Any, network_id: str) -> None:
280
299
  """Delete a network
281
300
 
282
301
  https://docs.openstack.org/api-ref/compute/#delete-network
@@ -294,7 +313,7 @@ def delete_network(compute_client, network_id):
294
313
  # floating ips
295
314
 
296
315
 
297
- def create_floating_ip(compute_client, network):
316
+ def create_floating_ip(compute_client: Any, network: str) -> Any:
298
317
  """Create a new floating ip
299
318
 
300
319
  https://docs.openstack.org/api-ref/compute/#create-allocate-floating-ip-address
@@ -309,7 +328,7 @@ def create_floating_ip(compute_client, network):
309
328
  return response.json()['floating_ip']
310
329
 
311
330
 
312
- def list_floating_ips(compute_client):
331
+ def list_floating_ips(compute_client: Any) -> Any:
313
332
  """Get all floating IPs
314
333
 
315
334
  https://docs.openstack.org/api-ref/compute/#list-floating-ip-addresses
@@ -321,7 +340,7 @@ def list_floating_ips(compute_client):
321
340
  return response.json()['floating_ips']
322
341
 
323
342
 
324
- def get_floating_ip(compute_client, floating_ip_id):
343
+ def get_floating_ip(compute_client: Any, floating_ip_id: str) -> Any:
325
344
  """Get a floating IP
326
345
 
327
346
  https://docs.openstack.org/api-ref/compute/#show-floating-ip-address-details
@@ -336,7 +355,7 @@ def get_floating_ip(compute_client, floating_ip_id):
336
355
  return response.json()['floating_ip']
337
356
 
338
357
 
339
- def delete_floating_ip(compute_client, floating_ip_id):
358
+ def delete_floating_ip(compute_client: Any, floating_ip_id: str) -> None:
340
359
  """Delete a floating IP
341
360
 
342
361
  https://docs.openstack.org/api-ref/compute/#delete-deallocate-floating-ip-address
@@ -353,7 +372,7 @@ def delete_floating_ip(compute_client, floating_ip_id):
353
372
  # floating ip pools
354
373
 
355
374
 
356
- def list_floating_ip_pools(compute_client):
375
+ def list_floating_ip_pools(compute_client: Any) -> Any:
357
376
  """Get all floating IP pools
358
377
 
359
378
  https://docs.openstack.org/api-ref/compute/#list-floating-ip-pools