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
@@ -297,7 +297,8 @@ class TestVolumeSnapshotList(volume_fakes.TestVolume):
297
297
  self.project_mock.get.return_value = self.project
298
298
 
299
299
  self.columns = ("ID", "Name", "Description", "Status", "Size")
300
- self.columns_long = self.columns + (
300
+ self.columns_long = (
301
+ *self.columns,
301
302
  "Created At",
302
303
  "Volume",
303
304
  "Properties",
@@ -342,6 +343,7 @@ class TestVolumeSnapshotList(volume_fakes.TestVolume):
342
343
  self.volume_sdk_client.snapshots.assert_called_once_with(
343
344
  limit=None,
344
345
  marker=None,
346
+ max_items=None,
345
347
  all_projects=False,
346
348
  name=None,
347
349
  status=None,
@@ -375,6 +377,7 @@ class TestVolumeSnapshotList(volume_fakes.TestVolume):
375
377
  self.volume_sdk_client.snapshots.assert_called_once_with(
376
378
  limit=2,
377
379
  marker=self.snapshots[0].id,
380
+ max_items=None,
378
381
  all_projects=True,
379
382
  project_id=self.project.id,
380
383
  name=None,
@@ -396,6 +399,7 @@ class TestVolumeSnapshotList(volume_fakes.TestVolume):
396
399
  self.volume_sdk_client.snapshots.assert_called_once_with(
397
400
  limit=None,
398
401
  marker=None,
402
+ max_items=None,
399
403
  all_projects=True,
400
404
  name=None,
401
405
  status=None,
@@ -422,6 +426,7 @@ class TestVolumeSnapshotList(volume_fakes.TestVolume):
422
426
  self.volume_sdk_client.snapshots.assert_called_once_with(
423
427
  limit=None,
424
428
  marker=None,
429
+ max_items=None,
425
430
  all_projects=False,
426
431
  name=self.snapshots[0].name,
427
432
  status=None,
@@ -448,6 +453,7 @@ class TestVolumeSnapshotList(volume_fakes.TestVolume):
448
453
  self.volume_sdk_client.snapshots.assert_called_once_with(
449
454
  limit=None,
450
455
  marker=None,
456
+ max_items=None,
451
457
  all_projects=False,
452
458
  name=None,
453
459
  status='available',
@@ -474,6 +480,7 @@ class TestVolumeSnapshotList(volume_fakes.TestVolume):
474
480
  self.volume_sdk_client.snapshots.assert_called_once_with(
475
481
  limit=None,
476
482
  marker=None,
483
+ max_items=None,
477
484
  all_projects=False,
478
485
  name=None,
479
486
  status=None,
@@ -332,7 +332,7 @@ class TestTypeList(TestType):
332
332
  "Name",
333
333
  "Is Public",
334
334
  ]
335
- columns_long = columns + ["Description"]
335
+ columns_long = [*columns, "Description"]
336
336
  data_with_default_type = [(volume_types[0].id, volume_types[0].name, True)]
337
337
  data = []
338
338
  for t in volume_types:
@@ -436,9 +436,7 @@ class TestTypeList(TestType):
436
436
  'key_size': None,
437
437
  'control_location': 'front-end',
438
438
  }
439
- encryption_columns = self.columns + [
440
- "Encryption",
441
- ]
439
+ encryption_columns = [*self.columns, "Encryption"]
442
440
  encryption_data = []
443
441
  encryption_data.append(
444
442
  (
@@ -40,12 +40,10 @@ class FakeVolumeClient:
40
40
  self.management_url = kwargs['endpoint']
41
41
  self.api_version = api_versions.APIVersion('3.0')
42
42
 
43
- self.attachments = mock.Mock()
44
- self.attachments.resource_class = fakes.FakeResource(None, {})
45
- self.availability_zones = mock.Mock()
46
- self.availability_zones.resource_class = fakes.FakeResource(None, {})
47
43
  self.backups = mock.Mock()
48
44
  self.backups.resource_class = fakes.FakeResource(None, {})
45
+ self.cgsnapshots = mock.Mock()
46
+ self.cgsnapshots.resource_class = fakes.FakeResource(None, {})
49
47
  self.consistencygroups = mock.Mock()
50
48
  self.consistencygroups.resource_class = fakes.FakeResource(None, {})
51
49
  self.clusters = mock.Mock()
@@ -58,10 +56,10 @@ class FakeVolumeClient:
58
56
  self.group_types.resource_class = fakes.FakeResource(None, {})
59
57
  self.messages = mock.Mock()
60
58
  self.messages.resource_class = fakes.FakeResource(None, {})
61
- self.resource_filters = mock.Mock()
62
- self.resource_filters.resource_class = fakes.FakeResource(None, {})
63
- self.restores = mock.Mock()
64
- self.restores.resource_class = fakes.FakeResource(None, {})
59
+ self.qos_specs = mock.Mock()
60
+ self.qos_specs.resource_class = fakes.FakeResource(None, {})
61
+ self.services = mock.Mock()
62
+ self.services.resource_class = fakes.FakeResource(None, {})
65
63
  self.transfers = mock.Mock()
66
64
  self.transfers.resource_class = fakes.FakeResource(None, {})
67
65
  self.volume_encryption_types = mock.Mock()
@@ -76,8 +74,6 @@ class FakeVolumeClient:
76
74
  self.volume_types.resource_class = fakes.FakeResource(None, {})
77
75
  self.volumes = mock.Mock()
78
76
  self.volumes.resource_class = fakes.FakeResource(None, {})
79
- self.services = mock.Mock()
80
- self.services.resource_class = fakes.FakeResource(None, {})
81
77
  self.workers = mock.Mock()
82
78
  self.workers.resource_class = fakes.FakeResource(None, {})
83
79
 
@@ -96,6 +92,7 @@ class FakeClientMixin:
96
92
  self.app.client_manager.sdk_connection.volume = mock.Mock(
97
93
  spec=_proxy.Proxy,
98
94
  )
95
+ self.app.client_manager.sdk_connection.volume.api_version = '3'
99
96
  self.volume_sdk_client = self.app.client_manager.sdk_connection.volume
100
97
  self.set_volume_api_version() # default to the lowest
101
98
 
@@ -139,6 +136,8 @@ class TestVolume(
139
136
 
140
137
 
141
138
  # TODO(stephenfin): Check if the responses are actually the same
139
+ create_one_capability = volume_v2_fakes.create_one_capability
140
+ create_one_pool = volume_v2_fakes.create_one_pool
142
141
  create_one_snapshot = volume_v2_fakes.create_one_snapshot
143
142
  create_one_service = volume_v2_fakes.create_one_service
144
143
 
@@ -231,6 +230,99 @@ def create_consistency_groups(attrs=None, count=2):
231
230
  return consistency_groups
232
231
 
233
232
 
233
+ def get_consistency_groups(consistency_groups=None, count=2):
234
+ """Note:
235
+
236
+ Get an iterable MagicMock object with a list of faked
237
+ consistency_groups.
238
+
239
+ If consistency_groups list is provided, then initialize
240
+ the Mock object with the list. Otherwise create one.
241
+
242
+ :param List consistency_groups:
243
+ A list of FakeResource objects faking consistency_groups
244
+ :param Integer count:
245
+ The number of consistency_groups to be faked
246
+ :return
247
+ An iterable Mock object with side_effect set to a list of faked
248
+ consistency_groups
249
+ """
250
+ if consistency_groups is None:
251
+ consistency_groups = create_consistency_groups(count)
252
+
253
+ return mock.Mock(side_effect=consistency_groups)
254
+
255
+
256
+ def create_one_consistency_group_snapshot(attrs=None):
257
+ """Create a fake consistency group snapshot.
258
+
259
+ :param dict attrs:
260
+ A dictionary with all attributes
261
+ :return:
262
+ A FakeResource object with id, name, description, etc.
263
+ """
264
+ attrs = attrs or {}
265
+
266
+ # Set default attributes.
267
+ consistency_group_snapshot_info = {
268
+ "id": 'id-' + uuid.uuid4().hex,
269
+ "name": 'backup-name-' + uuid.uuid4().hex,
270
+ "description": 'description-' + uuid.uuid4().hex,
271
+ "status": "error",
272
+ "consistencygroup_id": 'consistency-group-id' + uuid.uuid4().hex,
273
+ "created_at": 'time-' + uuid.uuid4().hex,
274
+ }
275
+
276
+ # Overwrite default attributes.
277
+ consistency_group_snapshot_info.update(attrs)
278
+
279
+ consistency_group_snapshot = fakes.FakeResource(
280
+ info=copy.deepcopy(consistency_group_snapshot_info), loaded=True
281
+ )
282
+ return consistency_group_snapshot
283
+
284
+
285
+ def create_consistency_group_snapshots(attrs=None, count=2):
286
+ """Create multiple fake consistency group snapshots.
287
+
288
+ :param dict attrs:
289
+ A dictionary with all attributes
290
+ :param int count:
291
+ The number of consistency group snapshots to fake
292
+ :return:
293
+ A list of FakeResource objects faking the
294
+ consistency group snapshots
295
+ """
296
+ consistency_group_snapshots = []
297
+ for i in range(0, count):
298
+ consistency_group_snapshot = create_one_consistency_group_snapshot(
299
+ attrs,
300
+ )
301
+ consistency_group_snapshots.append(consistency_group_snapshot)
302
+
303
+ return consistency_group_snapshots
304
+
305
+
306
+ def get_consistency_group_snapshots(snapshots=None, count=2):
307
+ """Get an iterable MagicMock object with a list of faked cgsnapshots.
308
+
309
+ If consistenct group snapshots list is provided, then initialize
310
+ the Mock object with the list. Otherwise create one.
311
+
312
+ :param List snapshots:
313
+ A list of FakeResource objects faking consistency group snapshots
314
+ :param Integer count:
315
+ The number of consistency group snapshots to be faked
316
+ :return
317
+ An iterable Mock object with side_effect set to a list of faked
318
+ consistency groups
319
+ """
320
+ if snapshots is None:
321
+ snapshots = create_consistency_group_snapshots(count)
322
+
323
+ return mock.Mock(side_effect=snapshots)
324
+
325
+
234
326
  def create_one_extension(attrs=None):
235
327
  """Create a fake extension.
236
328
 
@@ -303,42 +395,33 @@ def create_one_backup(attrs=None):
303
395
  return backup
304
396
 
305
397
 
306
- def create_backups(attrs=None, count=2):
307
- """Create multiple fake backups.
398
+ def create_backup_record():
399
+ """Gets a fake backup record for a given backup.
308
400
 
309
- :param dict attrs:
310
- A dictionary with all attributes
311
- :param int count:
312
- The number of backups to fake
313
- :return: A list of fake
314
- openstack.block_storage.v3.backup.Backup objects
401
+ :return: An "exported" backup record.
315
402
  """
316
- backups = []
317
- for i in range(0, count):
318
- backup = create_one_backup(attrs)
319
- backups.append(backup)
320
403
 
321
- return backups
404
+ return {
405
+ 'backup_service': 'cinder.backup.drivers.swift.SwiftBackupDriver',
406
+ 'backup_url': 'eyJzdGF0dXMiOiAiYXZh',
407
+ }
322
408
 
323
409
 
324
- def get_backups(backups=None, count=2):
325
- """Get an iterable MagicMock object with a list of faked backups.
410
+ def import_backup_record():
411
+ """Creates a fake backup record import response from a backup.
326
412
 
327
- If backups list is provided, then initialize the Mock object with the
328
- list. Otherwise create one.
329
-
330
- :param List backups:
331
- A list of FakeResource objects faking backups
332
- :param Integer count:
333
- The number of backups to be faked
334
- :return
335
- An iterable Mock object with side_effect set to a list of faked
336
- backups
413
+ :return: The fake backup object that was encoded.
337
414
  """
338
- if backups is None:
339
- backups = create_backups(count)
340
-
341
- return mock.Mock(side_effect=backups)
415
+ return {
416
+ 'backup': {
417
+ 'id': 'backup.id',
418
+ 'name': 'backup.name',
419
+ 'links': [
420
+ {'href': 'link1', 'rel': 'self'},
421
+ {'href': 'link2', 'rel': 'bookmark'},
422
+ ],
423
+ },
424
+ }
342
425
 
343
426
 
344
427
  def create_one_cluster(attrs=None):
@@ -712,23 +795,6 @@ def create_one_sdk_volume(attrs=None):
712
795
  return _volume.Volume(**volume_info)
713
796
 
714
797
 
715
- def create_sdk_volumes(attrs=None, count=2):
716
- """Create multiple fake volumes.
717
-
718
- :param dict attrs:
719
- A dictionary with all attributes of volume
720
- :param Integer count:
721
- The number of volumes to be faked
722
- :return:
723
- A list of FakeResource objects
724
- """
725
- volumes = []
726
- for n in range(0, count):
727
- volumes.append(create_one_sdk_volume(attrs))
728
-
729
- return volumes
730
-
731
-
732
798
  def create_one_volume_group(attrs=None):
733
799
  """Create a fake group.
734
800
 
@@ -810,20 +876,6 @@ def create_one_volume_group_snapshot(attrs=None, methods=None):
810
876
  return group_snapshot
811
877
 
812
878
 
813
- def create_volume_group_snapshots(attrs=None, count=2):
814
- """Create multiple fake group snapshots.
815
-
816
- :param attrs: A dictionary with all attributes of group snapshot
817
- :param count: The number of group snapshots to be faked
818
- :return: A list of FakeResource objects
819
- """
820
- group_snapshots = []
821
- for n in range(0, count):
822
- group_snapshots.append(create_one_volume_group_snapshot(attrs))
823
-
824
- return group_snapshots
825
-
826
-
827
879
  def create_one_volume_group_type(attrs=None, methods=None):
828
880
  """Create a fake group type.
829
881
 
@@ -993,22 +1045,93 @@ def create_volume_attachments(attrs=None, count=2):
993
1045
  return attachments
994
1046
 
995
1047
 
996
- def get_volume_attachments(attachments=None, count=2):
997
- """Get an iterable MagicMock object with a list of faked volumes.
1048
+ def create_one_qos(attrs=None):
1049
+ """Create a fake Qos specification.
998
1050
 
999
- If attachments list is provided, then initialize the Mock object with
1000
- the list. Otherwise create one.
1051
+ :param dict attrs:
1052
+ A dictionary with all attributes
1053
+ :return:
1054
+ A FakeResource object with id, name, consumer, etc.
1055
+ """
1056
+ attrs = attrs or {}
1001
1057
 
1002
- :param attachments: A list of FakeResource objects faking volume
1003
- attachments
1004
- :param count: The number of volume attachments to be faked
1005
- :return An iterable Mock object with side_effect set to a list of faked
1006
- volume attachments
1058
+ # Set default attributes.
1059
+ qos_info = {
1060
+ "id": 'qos-id-' + uuid.uuid4().hex,
1061
+ "name": 'qos-name-' + uuid.uuid4().hex,
1062
+ "consumer": 'front-end',
1063
+ "specs": {"foo": "bar", "iops": "9001"},
1064
+ }
1065
+
1066
+ # Overwrite default attributes.
1067
+ qos_info.update(attrs)
1068
+
1069
+ qos = fakes.FakeResource(info=copy.deepcopy(qos_info), loaded=True)
1070
+ return qos
1071
+
1072
+
1073
+ def create_one_qos_association(attrs=None):
1074
+ """Create a fake Qos specification association.
1075
+
1076
+ :param dict attrs:
1077
+ A dictionary with all attributes
1078
+ :return:
1079
+ A FakeResource object with id, name, association_type, etc.
1007
1080
  """
1008
- if attachments is None:
1009
- attachments = create_volume_attachments(count)
1081
+ attrs = attrs or {}
1010
1082
 
1011
- return mock.Mock(side_effect=attachments)
1083
+ # Set default attributes.
1084
+ qos_association_info = {
1085
+ "id": 'type-id-' + uuid.uuid4().hex,
1086
+ "name": 'type-name-' + uuid.uuid4().hex,
1087
+ "association_type": 'volume_type',
1088
+ }
1089
+
1090
+ # Overwrite default attributes.
1091
+ qos_association_info.update(attrs)
1092
+
1093
+ qos_association = fakes.FakeResource(
1094
+ info=copy.deepcopy(qos_association_info), loaded=True
1095
+ )
1096
+ return qos_association
1097
+
1098
+
1099
+ def create_qoses(attrs=None, count=2):
1100
+ """Create multiple fake Qos specifications.
1101
+
1102
+ :param dict attrs:
1103
+ A dictionary with all attributes
1104
+ :param int count:
1105
+ The number of Qos specifications to fake
1106
+ :return:
1107
+ A list of FakeResource objects faking the Qos specifications
1108
+ """
1109
+ qoses = []
1110
+ for i in range(0, count):
1111
+ qos = create_one_qos(attrs)
1112
+ qoses.append(qos)
1113
+
1114
+ return qoses
1115
+
1116
+
1117
+ def get_qoses(qoses=None, count=2):
1118
+ """Get an iterable MagicMock object with a list of faked qoses.
1119
+
1120
+ If qoses list is provided, then initialize the Mock object with the
1121
+ list. Otherwise create one.
1122
+
1123
+ :param List qoses:
1124
+ A list of FakeResource objects faking qoses
1125
+ :param Integer count:
1126
+ The number of qoses to be faked
1127
+ :return
1128
+ An iterable Mock object with side_effect set to a list of faked
1129
+ qoses
1130
+ """
1131
+ if qoses is None:
1132
+ qoses = create_qoses(count)
1133
+
1134
+ return mock.Mock(side_effect=qoses)
1012
1135
 
1013
1136
 
1014
1137
  def create_one_volume_type(attrs=None, methods=None):
@@ -1080,24 +1203,6 @@ def get_volume_types(volume_types=None, count=2):
1080
1203
  return mock.Mock(side_effect=volume_types)
1081
1204
 
1082
1205
 
1083
- def create_service_log_level_entry(attrs=None):
1084
- service_log_level_info = {
1085
- 'host': 'host_test',
1086
- 'binary': 'cinder-api',
1087
- 'prefix': 'cinder.api.common',
1088
- 'level': 'DEBUG',
1089
- }
1090
- # Overwrite default attributes if there are some attributes set
1091
- attrs = attrs or {}
1092
-
1093
- service_log_level_info.update(attrs)
1094
-
1095
- service_log_level = fakes.FakeResource(
1096
- None, service_log_level_info, loaded=True
1097
- )
1098
- return service_log_level
1099
-
1100
-
1101
1206
  def create_cleanup_records():
1102
1207
  """Create fake service cleanup records.
1103
1208
 
@@ -0,0 +1,114 @@
1
+ #
2
+ # Licensed under the Apache License, Version 2.0 (the "License"); you may
3
+ # not use this file except in compliance with the License. You may obtain
4
+ # a copy of the License at
5
+ #
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ #
8
+ # Unless required by applicable law or agreed to in writing, software
9
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
10
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
11
+ # License for the specific language governing permissions and limitations
12
+ # under the License.
13
+
14
+ from openstackclient.tests.unit.volume.v3 import fakes as volume_fakes
15
+ from openstackclient.volume.v3 import backup_record
16
+
17
+
18
+ class TestBackupRecord(volume_fakes.TestVolume):
19
+ def setUp(self):
20
+ super().setUp()
21
+
22
+ self.backups_mock = self.volume_client.backups
23
+ self.backups_mock.reset_mock()
24
+
25
+
26
+ class TestBackupRecordExport(TestBackupRecord):
27
+ new_backup = volume_fakes.create_one_backup(
28
+ attrs={'volume_id': 'a54708a2-0388-4476-a909-09579f885c25'},
29
+ )
30
+ new_record = volume_fakes.create_backup_record()
31
+
32
+ def setUp(self):
33
+ super().setUp()
34
+
35
+ self.backups_mock.export_record.return_value = self.new_record
36
+ self.backups_mock.get.return_value = self.new_backup
37
+
38
+ # Get the command object to mock
39
+ self.cmd = backup_record.ExportBackupRecord(self.app, None)
40
+
41
+ def test_backup_export_table(self):
42
+ arglist = [
43
+ self.new_backup.name,
44
+ ]
45
+ verifylist = [
46
+ ("backup", self.new_backup.name),
47
+ ]
48
+
49
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
50
+ parsed_args.formatter = 'table'
51
+ columns, __ = self.cmd.take_action(parsed_args)
52
+
53
+ self.backups_mock.export_record.assert_called_with(
54
+ self.new_backup.id,
55
+ )
56
+
57
+ expected_columns = ('Backup Service', 'Metadata')
58
+ self.assertEqual(columns, expected_columns)
59
+
60
+ def test_backup_export_json(self):
61
+ arglist = [
62
+ self.new_backup.name,
63
+ ]
64
+ verifylist = [
65
+ ("backup", self.new_backup.name),
66
+ ]
67
+
68
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
69
+ parsed_args.formatter = 'json'
70
+ columns, __ = self.cmd.take_action(parsed_args)
71
+
72
+ self.backups_mock.export_record.assert_called_with(
73
+ self.new_backup.id,
74
+ )
75
+
76
+ expected_columns = ('backup_service', 'backup_url')
77
+ self.assertEqual(columns, expected_columns)
78
+
79
+
80
+ class TestBackupRecordImport(TestBackupRecord):
81
+ new_backup = volume_fakes.create_one_backup(
82
+ attrs={'volume_id': 'a54708a2-0388-4476-a909-09579f885c25'},
83
+ )
84
+ new_import = volume_fakes.import_backup_record()
85
+
86
+ def setUp(self):
87
+ super().setUp()
88
+
89
+ self.backups_mock.import_record.return_value = self.new_import
90
+
91
+ # Get the command object to mock
92
+ self.cmd = backup_record.ImportBackupRecord(self.app, None)
93
+
94
+ def test_backup_import(self):
95
+ arglist = [
96
+ "cinder.backup.drivers.swift.SwiftBackupDriver",
97
+ "fake_backup_record_data",
98
+ ]
99
+ verifylist = [
100
+ (
101
+ "backup_service",
102
+ "cinder.backup.drivers.swift.SwiftBackupDriver",
103
+ ),
104
+ ("backup_metadata", "fake_backup_record_data"),
105
+ ]
106
+
107
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
108
+ columns, __ = self.cmd.take_action(parsed_args)
109
+
110
+ self.backups_mock.import_record.assert_called_with(
111
+ "cinder.backup.drivers.swift.SwiftBackupDriver",
112
+ "fake_backup_record_data",
113
+ )
114
+ self.assertEqual(columns, ('backup',))