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
@@ -0,0 +1,301 @@
1
+ # Copyright (c) 2016 Juniper networks Inc.
2
+ # All Rights Reserved.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License"); you may
5
+ # not use this file except in compliance with the License. You may obtain
6
+ # a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
+ # License for the specific language governing permissions and limitations
14
+ # under the License.
15
+
16
+ import argparse
17
+ from collections.abc import Iterable, Sequence
18
+ import logging
19
+ from typing import Any
20
+
21
+ from openstack.network.v2 import (
22
+ bgpvpn_router_association as _bgpvpn_router_association,
23
+ )
24
+ from osc_lib.cli import identity as osc_id
25
+ from osc_lib.cli import parseractions
26
+ from osc_lib import exceptions
27
+ from osc_lib import utils as osc_utils
28
+ from osc_lib.utils import columns as column_util
29
+
30
+ from openstackclient import command
31
+ from openstackclient.i18n import _
32
+
33
+
34
+ LOG = logging.getLogger(__name__)
35
+
36
+ _attr_map = (
37
+ ('id', 'ID', column_util.LIST_BOTH),
38
+ ('project_id', 'Project', column_util.LIST_LONG_ONLY),
39
+ ('router_id', 'Router ID', column_util.LIST_BOTH),
40
+ (
41
+ 'advertise_extra_routes',
42
+ 'Advertise extra routes',
43
+ column_util.LIST_LONG_ONLY,
44
+ ),
45
+ )
46
+ _formatters: dict[str, osc_utils.FormatterT] = {}
47
+
48
+
49
+ def _get_columns(
50
+ item: _bgpvpn_router_association.BgpVpnRouterAssociation,
51
+ ) -> tuple[tuple[str, ...], tuple[str, ...]]:
52
+ column_map: dict[str, str] = {}
53
+ hidden_columns = ['location', 'name', 'tenant_id']
54
+ return osc_utils.get_osc_show_columns_for_sdk_resource(
55
+ item, column_map, hidden_columns
56
+ )
57
+
58
+
59
+ def _get_common_parser(parser: argparse.ArgumentParser, action: str) -> None:
60
+ """Adds to parser arguments common to create, set and unset commands.
61
+
62
+ :params ArgumentParser parser: argparse object contains all command's
63
+ arguments
64
+ :params string action: 'create', 'set' or 'unset'
65
+ """
66
+ ADVERTISE_ROUTES = _("Routes will be advertised to the BGP VPN%s") % (
67
+ _(' (default)') if action == 'create' else ""
68
+ )
69
+ NOT_ADVERTISE_ROUTES = _(
70
+ "Routes from the router will not be advertised to the BGP VPN"
71
+ )
72
+
73
+ group_advertise_extra_routes = parser.add_mutually_exclusive_group()
74
+ group_advertise_extra_routes.add_argument(
75
+ '--advertise_extra_routes',
76
+ action='store_true',
77
+ help=NOT_ADVERTISE_ROUTES if action == 'unset' else ADVERTISE_ROUTES,
78
+ )
79
+ group_advertise_extra_routes.add_argument(
80
+ '--no-advertise_extra_routes',
81
+ action='store_true',
82
+ help=ADVERTISE_ROUTES if action == 'unset' else NOT_ADVERTISE_ROUTES,
83
+ )
84
+
85
+
86
+ def _args2body(action: str, args: argparse.Namespace) -> dict[str, Any]:
87
+ attrs = {'advertise_extra_routes': False}
88
+ if args.advertise_extra_routes:
89
+ attrs['advertise_extra_routes'] = action != 'unset'
90
+ elif args.no_advertise_extra_routes:
91
+ attrs['advertise_extra_routes'] = action == 'unset'
92
+ return attrs
93
+
94
+
95
+ class CreateBgpvpnRouterAssoc(command.ShowOne):
96
+ _description = _("Create a BGP VPN router association")
97
+
98
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
99
+ parser = super().get_parser(prog_name)
100
+ osc_id.add_project_owner_option_to_parser(parser)
101
+ parser.add_argument(
102
+ 'bgpvpn',
103
+ metavar="<bgpvpn>",
104
+ help=_("BGP VPN to apply the router association (name or ID)"),
105
+ )
106
+ parser.add_argument(
107
+ 'resource',
108
+ metavar="<router>",
109
+ help=_("Router to associate the BGP VPN (name or ID)"),
110
+ )
111
+ _get_common_parser(parser, 'create')
112
+ return parser
113
+
114
+ def take_action(
115
+ self, parsed_args: argparse.Namespace
116
+ ) -> tuple[Sequence[str], Iterable[Any]]:
117
+ client = self.app.client_manager.network
118
+ bgpvpn = client.find_bgpvpn(parsed_args.bgpvpn, ignore_missing=False)
119
+ router = client.find_router(parsed_args.resource, ignore_missing=False)
120
+ body = {'router_id': router['id']}
121
+ if 'project' in parsed_args and parsed_args.project is not None:
122
+ project_id = osc_id.find_project(
123
+ self.app.client_manager.sdk_connection,
124
+ parsed_args.project,
125
+ parsed_args.project_domain,
126
+ ).id
127
+ body['project_id'] = project_id
128
+
129
+ body.update(_args2body('create', parsed_args))
130
+
131
+ obj = client.create_bgpvpn_router_association(bgpvpn['id'], **body)
132
+ display_columns, columns = _get_columns(obj)
133
+ data = osc_utils.get_dict_properties(
134
+ obj, columns, formatters=_formatters
135
+ )
136
+ return display_columns, data
137
+
138
+
139
+ class SetBgpvpnRouterAssoc(command.Command):
140
+ _description = _("Set BGP VPN router association properties")
141
+ _action = 'set'
142
+
143
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
144
+ parser = super().get_parser(prog_name)
145
+ parser.add_argument(
146
+ 'resource_association_id',
147
+ metavar="<router association ID>",
148
+ help=_("Router association ID to update"),
149
+ )
150
+ parser.add_argument(
151
+ 'bgpvpn',
152
+ metavar="<bgpvpn>",
153
+ help=_("BGP VPN the router association belongs to (name or ID)"),
154
+ )
155
+ _get_common_parser(parser, self._action)
156
+ return parser
157
+
158
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
159
+ client = self.app.client_manager.network
160
+ bgpvpn = client.find_bgpvpn(parsed_args.bgpvpn, ignore_missing=False)
161
+ body = _args2body(self._action, parsed_args)
162
+ client.update_bgpvpn_router_association(
163
+ bgpvpn['id'], parsed_args.resource_association_id, **body
164
+ )
165
+
166
+
167
+ class UnsetBgpvpnRouterAssoc(SetBgpvpnRouterAssoc):
168
+ _description = _("Unset BGP VPN router association properties")
169
+ _action = 'unset'
170
+
171
+
172
+ class DeleteBgpvpnRouterAssoc(command.Command):
173
+ _description = _(
174
+ "Delete a BGP VPN router association(s) for a given BGP VPN"
175
+ )
176
+
177
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
178
+ parser = super().get_parser(prog_name)
179
+ parser.add_argument(
180
+ 'resource_association_ids',
181
+ metavar="<router association ID>",
182
+ nargs="+",
183
+ help=_("Router association ID(s) to remove"),
184
+ )
185
+ parser.add_argument(
186
+ 'bgpvpn',
187
+ metavar="<bgpvpn>",
188
+ help=_("BGP VPN the router association belongs to (name or ID)"),
189
+ )
190
+ return parser
191
+
192
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
193
+ client = self.app.client_manager.network
194
+ bgpvpn = client.find_bgpvpn(parsed_args.bgpvpn, ignore_missing=False)
195
+ fails = 0
196
+ for id in parsed_args.resource_association_ids:
197
+ try:
198
+ client.delete_bgpvpn_router_association(bgpvpn['id'], id)
199
+ LOG.warning(
200
+ "Router association %(id)s deleted",
201
+ {'id': id},
202
+ )
203
+ except Exception as e:
204
+ fails += 1
205
+ LOG.error(
206
+ "Failed to delete router "
207
+ "association with ID '%(id)s': %(e)s",
208
+ {'id': id, 'e': e},
209
+ )
210
+ if fails > 0:
211
+ msg = _(
212
+ "Failed to delete %(fails)s of %(total)s "
213
+ "router BGP VPN association(s)."
214
+ ) % {
215
+ 'fails': fails,
216
+ 'total': len(parsed_args.resource_association_ids),
217
+ }
218
+ raise exceptions.CommandError(msg)
219
+
220
+
221
+ class ListBgpvpnRouterAssoc(command.Lister):
222
+ _description = _("List BGP VPN router associations for a given BGP VPN")
223
+
224
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
225
+ parser = super().get_parser(prog_name)
226
+ parser.add_argument(
227
+ 'bgpvpn',
228
+ metavar="<bgpvpn>",
229
+ help=_("BGP VPN listed associations belong to (name or ID)"),
230
+ )
231
+ parser.add_argument(
232
+ '--long',
233
+ action='store_true',
234
+ help=_("List additional fields in output"),
235
+ )
236
+ parser.add_argument(
237
+ '--property',
238
+ metavar="<key=value>",
239
+ help=_(
240
+ "Filter property to apply on returned BGP VPNs (repeat to "
241
+ "filter on multiple properties)"
242
+ ),
243
+ action=parseractions.KeyValueAction,
244
+ )
245
+ return parser
246
+
247
+ def take_action(
248
+ self, parsed_args: argparse.Namespace
249
+ ) -> tuple[Sequence[str], Iterable[tuple[Any, ...]]]:
250
+ client = self.app.client_manager.network
251
+ bgpvpn = client.find_bgpvpn(parsed_args.bgpvpn, ignore_missing=False)
252
+ params = {}
253
+ if parsed_args.property:
254
+ params.update(parsed_args.property)
255
+ objs = client.bgpvpn_router_associations(
256
+ bgpvpn['id'], retrieve_all=True, **params
257
+ )
258
+ headers, columns = column_util.get_column_definitions(
259
+ list(_attr_map), long_listing=parsed_args.long
260
+ )
261
+ return (
262
+ headers,
263
+ (
264
+ osc_utils.get_dict_properties(
265
+ s, columns, formatters=_formatters
266
+ )
267
+ for s in objs
268
+ ),
269
+ )
270
+
271
+
272
+ class ShowBgpvpnRouterAssoc(command.ShowOne):
273
+ _description = _("Show information of a given BGP VPN router association")
274
+
275
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
276
+ parser = super().get_parser(prog_name)
277
+ parser.add_argument(
278
+ 'resource_association_id',
279
+ metavar="<router association ID>",
280
+ help=_("Router association ID to look up"),
281
+ )
282
+ parser.add_argument(
283
+ 'bgpvpn',
284
+ metavar="<bgpvpn>",
285
+ help=_("BGP VPN the association belongs to (name or ID)"),
286
+ )
287
+ return parser
288
+
289
+ def take_action(
290
+ self, parsed_args: argparse.Namespace
291
+ ) -> tuple[Sequence[str], Iterable[Any]]:
292
+ client = self.app.client_manager.network
293
+ bgpvpn = client.find_bgpvpn(parsed_args.bgpvpn, ignore_missing=False)
294
+ obj = client.get_bgpvpn_router_association(
295
+ bgpvpn['id'], parsed_args.resource_association_id
296
+ )
297
+ display_columns, columns = _get_columns(obj)
298
+ data = osc_utils.get_dict_properties(
299
+ obj, columns, formatters=_formatters
300
+ )
301
+ return display_columns, data
@@ -13,8 +13,14 @@
13
13
 
14
14
  """Default Security Group Rule action implementations"""
15
15
 
16
+ import argparse
16
17
  import logging
18
+ from collections.abc import Iterable, Sequence
19
+ from typing import Any
17
20
 
21
+ from openstack.network.v2 import (
22
+ default_security_group_rule as _default_security_group_rule,
23
+ )
18
24
  from osc_lib.cli import parseractions
19
25
  from osc_lib import exceptions
20
26
  from osc_lib import utils
@@ -27,7 +33,9 @@ from openstackclient.network import utils as network_utils
27
33
  LOG = logging.getLogger(__name__)
28
34
 
29
35
 
30
- def _get_columns(item):
36
+ def _get_columns(
37
+ item: _default_security_group_rule.DefaultSecurityGroupRule,
38
+ ) -> tuple[tuple[str, ...], tuple[str, ...]]:
31
39
  hidden_columns = ['location', 'name', 'revision_number']
32
40
  return utils.get_osc_show_columns_for_sdk_resource(
33
41
  item, {}, hidden_columns
@@ -44,7 +52,7 @@ class CreateDefaultSecurityGroupRule(
44
52
  groups.
45
53
  """
46
54
 
47
- def get_parser(self, prog_name):
55
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
48
56
  parser = super().get_parser(prog_name)
49
57
 
50
58
  parser.add_argument(
@@ -149,7 +157,9 @@ class CreateDefaultSecurityGroupRule(
149
157
  )
150
158
  return parser
151
159
 
152
- def take_action(self, parsed_args):
160
+ def take_action(
161
+ self, parsed_args: argparse.Namespace
162
+ ) -> tuple[Sequence[str], Iterable[Any]]:
153
163
  client = self.app.client_manager.network
154
164
  # Build the create attributes.
155
165
  attrs = {}
@@ -236,7 +246,7 @@ class DeleteDefaultSecurityGroupRule(command.Command):
236
246
  default security groups.
237
247
  """
238
248
 
239
- def get_parser(self, prog_name):
249
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
240
250
  parser = super().get_parser(prog_name)
241
251
  parser.add_argument(
242
252
  'rule',
@@ -246,7 +256,7 @@ class DeleteDefaultSecurityGroupRule(command.Command):
246
256
  )
247
257
  return parser
248
258
 
249
- def take_action(self, parsed_args):
259
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
250
260
  result = 0
251
261
  client = self.app.client_manager.network
252
262
  for r in parsed_args.rule:
@@ -281,18 +291,21 @@ class ListDefaultSecurityGroupRule(command.Lister):
281
291
  security groups.
282
292
  """
283
293
 
284
- def _format_network_security_group_rule(self, rule):
294
+ @staticmethod
295
+ def _format_network_security_group_rule(
296
+ rule: _default_security_group_rule.DefaultSecurityGroupRule,
297
+ ) -> dict[str, object]:
285
298
  """Transform the SDK DefaultSecurityGroupRule object to a dict
286
299
 
287
300
  The SDK object gets in the way of reformatting columns...
288
301
  Create port_range column from port_range_min and port_range_max
289
302
  """
290
- rule = rule.to_dict()
291
- rule['port_range'] = network_utils.format_network_port_range(rule)
292
- rule['remote_ip_prefix'] = network_utils.format_remote_ip_prefix(rule)
293
- return rule
303
+ data = rule.to_dict()
304
+ data['port_range'] = network_utils.format_network_port_range(data)
305
+ data['remote_ip_prefix'] = network_utils.format_remote_ip_prefix(data)
306
+ return data
294
307
 
295
- def get_parser(self, prog_name):
308
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
296
309
  parser = super().get_parser(prog_name)
297
310
 
298
311
  parser.add_argument(
@@ -334,7 +347,9 @@ class ListDefaultSecurityGroupRule(command.Lister):
334
347
  )
335
348
  return parser
336
349
 
337
- def take_action(self, parsed_args):
350
+ def take_action(
351
+ self, parsed_args: argparse.Namespace
352
+ ) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
338
353
  client = self.app.client_manager.network
339
354
  column_headers = (
340
355
  'ID',
@@ -394,7 +409,7 @@ class ShowDefaultSecurityGroupRule(command.ShowOne):
394
409
  created. This rule may not be present on existing default security groups.
395
410
  """
396
411
 
397
- def get_parser(self, prog_name):
412
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
398
413
  parser = super().get_parser(prog_name)
399
414
  parser.add_argument(
400
415
  'rule',
@@ -403,7 +418,9 @@ class ShowDefaultSecurityGroupRule(command.ShowOne):
403
418
  )
404
419
  return parser
405
420
 
406
- def take_action(self, parsed_args):
421
+ def take_action(
422
+ self, parsed_args: argparse.Namespace
423
+ ) -> tuple[Sequence[str], Iterable[Any]]:
407
424
  client = self.app.client_manager.network
408
425
  obj = client.find_default_security_group_rule(
409
426
  parsed_args.rule, ignore_missing=False