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
@@ -25,7 +25,7 @@ from openstackclient.identity.v3 import role_assignment
25
25
  from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
26
26
 
27
27
 
28
- class TestRoleAssignmentList(identity_fakes.TestIdentityv3):
28
+ class TestRoleAssignmentList(identity_fakes.TestIdentity):
29
29
  columns = (
30
30
  'Role',
31
31
  'User',
@@ -22,7 +22,7 @@ from openstackclient.identity.v3 import service
22
22
  from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
23
23
 
24
24
 
25
- class TestServiceCreate(identity_fakes.TestIdentityv3):
25
+ class TestServiceCreate(identity_fakes.TestIdentity):
26
26
  columns = (
27
27
  'id',
28
28
  'name',
@@ -163,7 +163,7 @@ class TestServiceCreate(identity_fakes.TestIdentityv3):
163
163
  self.assertEqual(self.datalist, data)
164
164
 
165
165
 
166
- class TestServiceDelete(identity_fakes.TestIdentityv3):
166
+ class TestServiceDelete(identity_fakes.TestIdentity):
167
167
  service = sdk_fakes.generate_fake_resource(_service.Service)
168
168
 
169
169
  def setUp(self):
@@ -195,7 +195,7 @@ class TestServiceDelete(identity_fakes.TestIdentityv3):
195
195
  self.assertIsNone(result)
196
196
 
197
197
 
198
- class TestServiceList(identity_fakes.TestIdentityv3):
198
+ class TestServiceList(identity_fakes.TestIdentity):
199
199
  service = sdk_fakes.generate_fake_resource(_service.Service)
200
200
 
201
201
  def setUp(self):
@@ -259,7 +259,7 @@ class TestServiceList(identity_fakes.TestIdentityv3):
259
259
  self.assertEqual(datalist, tuple(data))
260
260
 
261
261
 
262
- class TestServiceSet(identity_fakes.TestIdentityv3):
262
+ class TestServiceSet(identity_fakes.TestIdentity):
263
263
  service = sdk_fakes.generate_fake_resource(_service.Service)
264
264
 
265
265
  def setUp(self):
@@ -420,7 +420,7 @@ class TestServiceSet(identity_fakes.TestIdentityv3):
420
420
  self.assertIsNone(result)
421
421
 
422
422
 
423
- class TestServiceShow(identity_fakes.TestIdentityv3):
423
+ class TestServiceShow(identity_fakes.TestIdentity):
424
424
  service = sdk_fakes.generate_fake_resource(_service.Service)
425
425
 
426
426
  def setUp(self):
@@ -16,7 +16,7 @@ from openstackclient.identity.v3 import token
16
16
  from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
17
17
 
18
18
 
19
- class TestTokenIssue(identity_fakes.TestIdentityv3):
19
+ class TestTokenIssue(identity_fakes.TestIdentity):
20
20
  def setUp(self):
21
21
  super().setUp()
22
22
 
@@ -99,7 +99,7 @@ class TestTokenIssue(identity_fakes.TestIdentityv3):
99
99
  self.assertEqual(datalist, data)
100
100
 
101
101
 
102
- class TestTokenRevoke(identity_fakes.TestIdentityv3):
102
+ class TestTokenRevoke(identity_fakes.TestIdentity):
103
103
  TOKEN = 'fob'
104
104
 
105
105
  def setUp(self):
@@ -26,7 +26,7 @@ from openstackclient.identity.v3 import trust
26
26
  from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
27
27
 
28
28
 
29
- class TestTrustCreate(identity_fakes.TestIdentityv3):
29
+ class TestTrustCreate(identity_fakes.TestIdentity):
30
30
  def setUp(self):
31
31
  super().setUp()
32
32
 
@@ -109,7 +109,7 @@ class TestTrustCreate(identity_fakes.TestIdentityv3):
109
109
  self.assertEqual(datalist, data)
110
110
 
111
111
 
112
- class TestTrustDelete(identity_fakes.TestIdentityv3):
112
+ class TestTrustDelete(identity_fakes.TestIdentity):
113
113
  def setUp(self):
114
114
  super().setUp()
115
115
 
@@ -166,7 +166,7 @@ class TestTrustDelete(identity_fakes.TestIdentityv3):
166
166
  )
167
167
 
168
168
 
169
- class TestTrustList(identity_fakes.TestIdentityv3):
169
+ class TestTrustList(identity_fakes.TestIdentity):
170
170
  def setUp(self):
171
171
  super().setUp()
172
172
 
@@ -341,7 +341,7 @@ class TestTrustList(identity_fakes.TestIdentityv3):
341
341
  self.assertEqual(datalist, tuple(data))
342
342
 
343
343
 
344
- class TestTrustShow(identity_fakes.TestIdentityv3):
344
+ class TestTrustShow(identity_fakes.TestIdentity):
345
345
  def setUp(self):
346
346
  super().setUp()
347
347
 
@@ -31,7 +31,7 @@ from openstackclient.identity.v3 import user
31
31
  from openstackclient.tests.unit.identity.v3 import fakes as identity_fakes
32
32
 
33
33
 
34
- class TestUserCreate(identity_fakes.TestIdentityv3):
34
+ class TestUserCreate(identity_fakes.TestIdentity):
35
35
  domain = sdk_fakes.generate_fake_resource(_domain.Domain)
36
36
  project = sdk_fakes.generate_fake_resource(_project.Project)
37
37
 
@@ -777,7 +777,7 @@ class TestUserCreate(identity_fakes.TestIdentityv3):
777
777
  self.assertEqual(self.datalist, data)
778
778
 
779
779
 
780
- class TestUserDelete(identity_fakes.TestIdentityv3):
780
+ class TestUserDelete(identity_fakes.TestIdentity):
781
781
  user = sdk_fakes.generate_fake_resource(_user.User)
782
782
 
783
783
  def setUp(self):
@@ -840,7 +840,7 @@ class TestUserDelete(identity_fakes.TestIdentityv3):
840
840
  )
841
841
 
842
842
 
843
- class TestUserList(identity_fakes.TestIdentityv3):
843
+ class TestUserList(identity_fakes.TestIdentity):
844
844
  domain = sdk_fakes.generate_fake_resource(_domain.Domain)
845
845
  project = sdk_fakes.generate_fake_resource(_project.Project)
846
846
  user = sdk_fakes.generate_fake_resource(
@@ -1034,8 +1034,75 @@ class TestUserList(identity_fakes.TestIdentityv3):
1034
1034
  self.assertEqual(self.columns, columns)
1035
1035
  self.assertEqual(self.datalist, tuple(data))
1036
1036
 
1037
+ def test_user_list_with_pagination(self):
1038
+ arglist = [
1039
+ '--limit',
1040
+ '2',
1041
+ '--marker',
1042
+ 'some-marker',
1043
+ ]
1044
+ verifylist = [
1045
+ ('limit', 2),
1046
+ ('marker', 'some-marker'),
1047
+ ]
1048
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1049
+
1050
+ columns, data = self.cmd.take_action(parsed_args)
1051
+
1052
+ kwargs = {
1053
+ 'domain_id': None,
1054
+ 'limit': 2,
1055
+ 'marker': 'some-marker',
1056
+ }
1057
+ self.identity_sdk_client.users.assert_called_with(**kwargs)
1058
+
1059
+ self.assertEqual(self.columns, columns)
1060
+ self.assertEqual(self.datalist, tuple(data))
1061
+
1062
+ def test_user_list_with_pagination_and_group(self):
1063
+ arglist = [
1064
+ '--group',
1065
+ self.group.name,
1066
+ '--limit',
1067
+ '5',
1068
+ ]
1069
+ verifylist = [
1070
+ ('group', self.group.name),
1071
+ ('limit', 5),
1072
+ ]
1073
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1074
+
1075
+ columns, data = self.cmd.take_action(parsed_args)
1076
+
1077
+ kwargs = {
1078
+ 'domain_id': None,
1079
+ 'group': self.group.id,
1080
+ 'limit': 5,
1081
+ }
1082
+ self.identity_sdk_client.group_users.assert_called_with(**kwargs)
1037
1083
 
1038
- class TestUserSet(identity_fakes.TestIdentityv3):
1084
+ self.assertEqual(self.columns, columns)
1085
+ self.assertEqual(self.datalist, tuple(data))
1086
+
1087
+ def test_user_list_pagination_with_project_fails(self):
1088
+ arglist = [
1089
+ '--project',
1090
+ self.project.name,
1091
+ '--limit',
1092
+ '2',
1093
+ ]
1094
+ verifylist = [
1095
+ ('project', self.project.name),
1096
+ ('limit', 2),
1097
+ ]
1098
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1099
+
1100
+ self.assertRaises(
1101
+ exceptions.CommandError, self.cmd.take_action, parsed_args
1102
+ )
1103
+
1104
+
1105
+ class TestUserSet(identity_fakes.TestIdentity):
1039
1106
  project = sdk_fakes.generate_fake_resource(_project.Project)
1040
1107
  domain = sdk_fakes.generate_fake_resource(_domain.Domain)
1041
1108
  user = sdk_fakes.generate_fake_resource(
@@ -1684,7 +1751,7 @@ class TestUserSet(identity_fakes.TestIdentityv3):
1684
1751
  self.assertIsNone(result)
1685
1752
 
1686
1753
 
1687
- class TestUserSetPassword(identity_fakes.TestIdentityv3):
1754
+ class TestUserSetPassword(identity_fakes.TestIdentity):
1688
1755
  def setUp(self):
1689
1756
  super().setUp()
1690
1757
  self.cmd = user.SetPasswordUser(self.app, None)
@@ -1716,7 +1783,7 @@ class TestUserSetPassword(identity_fakes.TestIdentityv3):
1716
1783
  conn = self.app.client_manager.sdk_connection
1717
1784
  user_id = conn.config.get_auth().get_user_id(conn.identity)
1718
1785
 
1719
- self.identity_sdk_client.update_user.assert_called_with(
1786
+ self.identity_sdk_client.update_password.assert_called_with(
1720
1787
  user=user_id, current_password=current_pass, password=new_pass
1721
1788
  )
1722
1789
 
@@ -1733,7 +1800,7 @@ class TestUserSetPassword(identity_fakes.TestIdentityv3):
1733
1800
  conn = self.app.client_manager.sdk_connection
1734
1801
  user_id = conn.config.get_auth().get_user_id(conn.identity)
1735
1802
 
1736
- self.identity_sdk_client.update_user.assert_called_with(
1803
+ self.identity_sdk_client.update_password.assert_called_with(
1737
1804
  user=user_id, current_password=current_pass, password=new_pass
1738
1805
  )
1739
1806
 
@@ -1758,12 +1825,12 @@ class TestUserSetPassword(identity_fakes.TestIdentityv3):
1758
1825
  conn = self.app.client_manager.sdk_connection
1759
1826
  user_id = conn.config.get_auth().get_user_id(conn.identity)
1760
1827
 
1761
- self.identity_sdk_client.update_user.assert_called_with(
1828
+ self.identity_sdk_client.update_password.assert_called_with(
1762
1829
  user=user_id, current_password=current_pass, password=new_pass
1763
1830
  )
1764
1831
 
1765
1832
 
1766
- class TestUserShow(identity_fakes.TestIdentityv3):
1833
+ class TestUserShow(identity_fakes.TestIdentity):
1767
1834
  user = sdk_fakes.generate_fake_resource(_user.User)
1768
1835
 
1769
1836
  def setUp(self):
@@ -1773,7 +1840,7 @@ class TestUserShow(identity_fakes.TestIdentityv3):
1773
1840
 
1774
1841
  # Get the command object to test
1775
1842
  self.cmd = user.ShowUser(self.app, None)
1776
- self.identity_client.auth.client.get_user_id.return_value = ( # noqa: E501
1843
+ self.identity_client.auth.client.get_user_id.return_value = (
1777
1844
  self.user.id
1778
1845
  )
1779
1846
  self.identity_client.tokens.get_token_data.return_value = {
@@ -305,7 +305,7 @@ class TestImageCreate(TestImage):
305
305
  ]
306
306
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
307
307
 
308
- columns, data = self.cmd.take_action(parsed_args)
308
+ self.cmd.take_action(parsed_args)
309
309
 
310
310
  self.image_client.create_image.assert_called_with(
311
311
  name=self.new_image.name,
@@ -336,7 +336,7 @@ class TestImageCreate(TestImage):
336
336
  ]
337
337
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
338
338
 
339
- columns, data = self.cmd.take_action(parsed_args)
339
+ self.cmd.take_action(parsed_args)
340
340
 
341
341
  self.volume_sdk_client.upload_volume_to_image.assert_called_once_with(
342
342
  volume.id,
@@ -397,7 +397,7 @@ class TestImageCreate(TestImage):
397
397
  ]
398
398
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
399
399
 
400
- columns, data = self.cmd.take_action(parsed_args)
400
+ self.cmd.take_action(parsed_args)
401
401
 
402
402
  self.volume_sdk_client.upload_volume_to_image.assert_called_once_with(
403
403
  volume.id,
@@ -946,7 +946,7 @@ class TestImageList(TestImage):
946
946
  ]
947
947
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
948
948
 
949
- columns, data = self.cmd.take_action(parsed_args)
949
+ self.cmd.take_action(parsed_args)
950
950
  self.image_client.images.assert_called_with(
951
951
  marker=self._image.id,
952
952
  )
@@ -966,7 +966,7 @@ class TestImageList(TestImage):
966
966
  ]
967
967
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
968
968
 
969
- columns, data = self.cmd.take_action(parsed_args)
969
+ self.cmd.take_action(parsed_args)
970
970
  self.image_client.images.assert_called_with(
971
971
  name='abc',
972
972
  # marker=self._image.id
@@ -982,7 +982,7 @@ class TestImageList(TestImage):
982
982
  ]
983
983
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
984
984
 
985
- columns, data = self.cmd.take_action(parsed_args)
985
+ self.cmd.take_action(parsed_args)
986
986
  self.image_client.images.assert_called_with(status='active')
987
987
 
988
988
  def test_image_list_hidden_option(self):
@@ -994,7 +994,7 @@ class TestImageList(TestImage):
994
994
  ]
995
995
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
996
996
 
997
- columns, data = self.cmd.take_action(parsed_args)
997
+ self.cmd.take_action(parsed_args)
998
998
  self.image_client.images.assert_called_with(is_hidden=True)
999
999
 
1000
1000
  def test_image_list_tag_option(self):
@@ -1004,7 +1004,7 @@ class TestImageList(TestImage):
1004
1004
  ]
1005
1005
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1006
1006
 
1007
- columns, data = self.cmd.take_action(parsed_args)
1007
+ self.cmd.take_action(parsed_args)
1008
1008
  self.image_client.images.assert_called_with(tag=['abc', 'cba'])
1009
1009
 
1010
1010
 
@@ -1329,7 +1329,7 @@ class TestImageSet(TestImage):
1329
1329
  self.image_client.update_image.assert_called()
1330
1330
  call_args = self.image_client.update_image.call_args
1331
1331
  if call_args:
1332
- args, kwargs = call_args
1332
+ _args, kwargs = call_args
1333
1333
  self.assertNotIn('owner_id', kwargs)
1334
1334
 
1335
1335
  def test_image_set_membership_reject_with_project_no_owner_change(self):
@@ -1366,7 +1366,7 @@ class TestImageSet(TestImage):
1366
1366
  self.image_client.update_image.assert_called()
1367
1367
  call_args = self.image_client.update_image.call_args
1368
1368
  if call_args:
1369
- args, kwargs = call_args
1369
+ _args, kwargs = call_args
1370
1370
  self.assertNotIn('owner_id', kwargs)
1371
1371
 
1372
1372
  def test_image_set_membership_pending_with_project_no_owner_change(self):
@@ -1403,7 +1403,7 @@ class TestImageSet(TestImage):
1403
1403
  self.image_client.update_image.assert_called()
1404
1404
  call_args = self.image_client.update_image.call_args
1405
1405
  if call_args:
1406
- args, kwargs = call_args
1406
+ _args, kwargs = call_args
1407
1407
  self.assertNotIn('owner_id', kwargs)
1408
1408
 
1409
1409
  def test_image_set_options(self):
@@ -12,6 +12,8 @@
12
12
  # License for the specific language governing permissions and limitations
13
13
  # under the License.
14
14
 
15
+ from unittest import mock
16
+
15
17
  from openstackclient.image.v2 import metadef_namespaces
16
18
  from openstackclient.tests.unit.image.v2 import fakes as image_fakes
17
19
 
@@ -24,6 +26,7 @@ class TestMetadefNamespaceCreate(image_fakes.TestImagev2):
24
26
  'display_name',
25
27
  'namespace',
26
28
  'owner',
29
+ 'tags',
27
30
  'visibility',
28
31
  )
29
32
  expected_data = (
@@ -31,6 +34,7 @@ class TestMetadefNamespaceCreate(image_fakes.TestImagev2):
31
34
  _metadef_namespace.display_name,
32
35
  _metadef_namespace.namespace,
33
36
  _metadef_namespace.owner,
37
+ _metadef_namespace.tags,
34
38
  _metadef_namespace.visibility,
35
39
  )
36
40
 
@@ -114,21 +118,25 @@ class TestMetadefNamespaceList(image_fakes.TestImagev2):
114
118
 
115
119
 
116
120
  class TestMetadefNamespaceSet(image_fakes.TestImagev2):
117
- _metadef_namespace = image_fakes.create_one_metadef_namespace()
118
-
119
121
  def setUp(self):
120
122
  super().setUp()
121
123
 
124
+ self.metadef_namespace = image_fakes.create_one_metadef_namespace()
125
+
126
+ self.image_client.get_metadef_namespace.return_value = (
127
+ self.metadef_namespace
128
+ )
122
129
  self.image_client.update_metadef_namespace.return_value = (
123
- self._metadef_namespace
130
+ self.metadef_namespace
124
131
  )
132
+ self.image_client.add_tag_to_metadef_namespace.return_value = None
133
+
125
134
  self.cmd = metadef_namespaces.SetMetadefNamespace(self.app, None)
126
- self.datalist = self._metadef_namespace
127
135
 
128
136
  def test_namespace_set_no_options(self):
129
- arglist = [self._metadef_namespace.namespace]
137
+ arglist = [self.metadef_namespace.namespace]
130
138
  verifylist = [
131
- ('namespace', self._metadef_namespace.namespace),
139
+ ('namespace', self.metadef_namespace.namespace),
132
140
  ]
133
141
 
134
142
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -137,6 +145,95 @@ class TestMetadefNamespaceSet(image_fakes.TestImagev2):
137
145
 
138
146
  self.assertIsNone(result)
139
147
 
148
+ def test_namespace_set_tag(self):
149
+ arglist = [
150
+ self.metadef_namespace.namespace,
151
+ '--tag',
152
+ 't1',
153
+ '--tag',
154
+ 't2',
155
+ ]
156
+ verifylist = [
157
+ ('namespace', self.metadef_namespace.namespace),
158
+ ('tags', ['t1', 't2']),
159
+ ]
160
+
161
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
162
+
163
+ self.cmd.take_action(parsed_args)
164
+
165
+ self.image_client.add_tag_to_metadef_namespace.assert_has_calls(
166
+ [
167
+ mock.call(self.metadef_namespace.namespace, 't1'),
168
+ mock.call(self.metadef_namespace.namespace, 't2'),
169
+ ]
170
+ )
171
+
172
+
173
+ class TestMetadefNamespaceUnset(image_fakes.TestImagev2):
174
+ def setUp(self):
175
+ super().setUp()
176
+
177
+ self.metadef_namespace = image_fakes.create_one_metadef_namespace(
178
+ attrs={'tags': [{'name': 't1'}]}
179
+ )
180
+
181
+ self.image_client.get_metadef_namespace.return_value = (
182
+ self.metadef_namespace
183
+ )
184
+ self.image_client.update_metadef_namespace.return_value = (
185
+ self.metadef_namespace
186
+ )
187
+ self.image_client.remove_tag_from_metadef_namespace.return_value = None
188
+ self.image_client.remove_tags_from_metadef_namespace.return_value = (
189
+ None
190
+ )
191
+
192
+ self.cmd = metadef_namespaces.UnsetMetadefNamespace(self.app, None)
193
+
194
+ def test_namespace_unset_tag(self):
195
+ arglist = [
196
+ self.metadef_namespace.namespace,
197
+ '--tag',
198
+ 't1',
199
+ '--tag',
200
+ 't2',
201
+ ]
202
+ verifylist = [
203
+ ('namespace', self.metadef_namespace.namespace),
204
+ ('tags', ['t1', 't2']),
205
+ ]
206
+
207
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
208
+
209
+ self.cmd.take_action(parsed_args)
210
+
211
+ self.image_client.remove_tag_from_metadef_namespace.assert_has_calls(
212
+ [
213
+ mock.call(self.metadef_namespace, 't1'),
214
+ mock.call(self.metadef_namespace, 't2'),
215
+ ]
216
+ )
217
+ self.image_client.remove_tags_from_metadef_namespace.assert_not_called()
218
+
219
+ def test_namespace_unset_all_tag(self):
220
+ arglist = [
221
+ self.metadef_namespace.namespace,
222
+ '--all-tags',
223
+ ]
224
+ verifylist = [
225
+ ('namespace', self.metadef_namespace.namespace),
226
+ ]
227
+
228
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
229
+
230
+ self.cmd.take_action(parsed_args)
231
+
232
+ self.image_client.remove_tags_from_metadef_namespace.assert_called_once_with(
233
+ self.metadef_namespace
234
+ )
235
+ self.image_client.remove_tag_from_metadef_namespace.assert_not_called()
236
+
140
237
 
141
238
  class TestMetadefNamespaceShow(image_fakes.TestImagev2):
142
239
  _metadef_namespace = image_fakes.create_one_metadef_namespace()
@@ -146,6 +243,7 @@ class TestMetadefNamespaceShow(image_fakes.TestImagev2):
146
243
  'display_name',
147
244
  'namespace',
148
245
  'owner',
246
+ 'tags',
149
247
  'visibility',
150
248
  )
151
249
  expected_data = (
@@ -153,6 +251,7 @@ class TestMetadefNamespaceShow(image_fakes.TestImagev2):
153
251
  _metadef_namespace.display_name,
154
252
  _metadef_namespace.namespace,
155
253
  _metadef_namespace.owner,
254
+ _metadef_namespace.tags,
156
255
  _metadef_namespace.visibility,
157
256
  )
158
257
 
@@ -13,91 +13,11 @@
13
13
 
14
14
  from unittest import mock
15
15
 
16
- import openstack
17
- from osc_lib import exceptions
18
16
 
19
17
  from openstackclient.network import common
20
18
  from openstackclient.tests.unit import utils
21
19
 
22
20
 
23
- def _add_common_argument(parser):
24
- parser.add_argument(
25
- 'common',
26
- metavar='<common>',
27
- help='Common argument',
28
- )
29
- return parser
30
-
31
-
32
- def _add_network_argument(parser):
33
- parser.add_argument(
34
- 'network',
35
- metavar='<network>',
36
- help='Network argument',
37
- )
38
- return parser
39
-
40
-
41
- def _add_compute_argument(parser):
42
- parser.add_argument(
43
- 'compute',
44
- metavar='<compute>',
45
- help='Compute argument',
46
- )
47
- return parser
48
-
49
-
50
- class FakeNetworkAndComputeCommand(common.NetworkAndComputeCommand):
51
- def update_parser_common(self, parser):
52
- return _add_common_argument(parser)
53
-
54
- def update_parser_network(self, parser):
55
- return _add_network_argument(parser)
56
-
57
- def update_parser_compute(self, parser):
58
- return _add_compute_argument(parser)
59
-
60
- def take_action_network(self, client, parsed_args):
61
- return client.network_action(parsed_args)
62
-
63
- def take_action_compute(self, client, parsed_args):
64
- return client.compute_action(parsed_args)
65
-
66
-
67
- class FakeNetworkAndComputeLister(common.NetworkAndComputeLister):
68
- def update_parser_common(self, parser):
69
- return _add_common_argument(parser)
70
-
71
- def update_parser_network(self, parser):
72
- return _add_network_argument(parser)
73
-
74
- def update_parser_compute(self, parser):
75
- return _add_compute_argument(parser)
76
-
77
- def take_action_network(self, client, parsed_args):
78
- return client.network_action(parsed_args)
79
-
80
- def take_action_compute(self, client, parsed_args):
81
- return client.compute_action(parsed_args)
82
-
83
-
84
- class FakeNetworkAndComputeShowOne(common.NetworkAndComputeShowOne):
85
- def update_parser_common(self, parser):
86
- return _add_common_argument(parser)
87
-
88
- def update_parser_network(self, parser):
89
- return _add_network_argument(parser)
90
-
91
- def update_parser_compute(self, parser):
92
- return _add_compute_argument(parser)
93
-
94
- def take_action_network(self, client, parsed_args):
95
- return client.network_action(parsed_args)
96
-
97
- def take_action_compute(self, client, parsed_args):
98
- return client.compute_action(parsed_args)
99
-
100
-
101
21
  class FakeCreateNeutronCommandWithExtraArgs(
102
22
  common.NeutronCommandWithExtraArgs
103
23
  ):
@@ -119,81 +39,6 @@ class FakeCreateNeutronCommandWithExtraArgs(
119
39
  client.test_create_action(**attrs)
120
40
 
121
41
 
122
- class TestNetworkAndCompute(utils.TestCommand):
123
- def setUp(self):
124
- super().setUp()
125
-
126
- # Create client mocks. Note that we intentionally do not use specced
127
- # mocks since we want to test fake methods.
128
-
129
- self.app.client_manager.network = mock.Mock() # noqa: O401
130
- self.network_client = self.app.client_manager.network # noqa: O401
131
- self.network_client.network_action.return_value = 'take_action_network'
132
-
133
- self.app.client_manager.compute = mock.Mock() # noqa: O401
134
- self.compute_client = self.app.client_manager.compute # noqa: O401
135
- self.compute_client.compute_action.return_value = 'take_action_compute'
136
-
137
- self.cmd = FakeNetworkAndComputeCommand(self.app, None)
138
-
139
- def test_take_action_network(self):
140
- arglist = ['common', 'network']
141
- verifylist = [('common', 'common'), ('network', 'network')]
142
-
143
- parsed_args = self.check_parser(self.cmd, arglist, verifylist)
144
- result = self.cmd.take_action(parsed_args)
145
- self.network_client.network_action.assert_called_with(parsed_args)
146
- self.assertEqual('take_action_network', result)
147
-
148
- def test_take_action_compute(self):
149
- arglist = ['common', 'compute']
150
- verifylist = [('common', 'common'), ('compute', 'compute')]
151
-
152
- self.app.client_manager.network_endpoint_enabled = False
153
- parsed_args = self.check_parser(self.cmd, arglist, verifylist)
154
- result = self.cmd.take_action(parsed_args)
155
- self.compute_client.compute_action.assert_called_with(parsed_args)
156
- self.assertEqual('take_action_compute', result)
157
-
158
-
159
- class TestNetworkAndComputeCommand(TestNetworkAndCompute):
160
- def setUp(self):
161
- super().setUp()
162
- self.cmd = FakeNetworkAndComputeCommand(self.app, None)
163
-
164
-
165
- class TestNetworkAndComputeLister(TestNetworkAndCompute):
166
- def setUp(self):
167
- super().setUp()
168
- self.cmd = FakeNetworkAndComputeLister(self.app, None)
169
-
170
-
171
- class TestNetworkAndComputeShowOne(TestNetworkAndCompute):
172
- def setUp(self):
173
- super().setUp()
174
- self.cmd = FakeNetworkAndComputeShowOne(self.app, None)
175
-
176
- def test_take_action_with_http_exception(self):
177
- with mock.patch.object(self.cmd, 'take_action_network') as m_action:
178
- m_action.side_effect = openstack.exceptions.HttpException("bar")
179
- self.assertRaisesRegex(
180
- exceptions.CommandError,
181
- "bar",
182
- self.cmd.take_action,
183
- mock.Mock(),
184
- )
185
-
186
- self.app.client_manager.network_endpoint_enabled = False
187
- with mock.patch.object(self.cmd, 'take_action_compute') as m_action:
188
- m_action.side_effect = openstack.exceptions.HttpException("bar")
189
- self.assertRaisesRegex(
190
- exceptions.CommandError,
191
- "bar",
192
- self.cmd.take_action,
193
- mock.Mock(),
194
- )
195
-
196
-
197
42
  class TestNeutronCommandWithExtraArgs(utils.TestCommand):
198
43
  def setUp(self):
199
44
  super().setUp()