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
@@ -250,7 +250,7 @@ class TestListNetworkSegment(TestNetworkSegment):
250
250
  'Network Type',
251
251
  'Segment',
252
252
  )
253
- columns_long = columns + ('Physical Network',)
253
+ columns_long = (*columns, 'Physical Network')
254
254
 
255
255
  data = []
256
256
  for _network_segment in _network_segments:
@@ -333,6 +333,30 @@ class TestListNetworkSegment(TestNetworkSegment):
333
333
  self.assertEqual(self.columns, columns)
334
334
  self.assertEqual(self.data, list(data))
335
335
 
336
+ def test_list_pagination(self):
337
+ arglist = [
338
+ '--marker',
339
+ self._network_segments[0].id,
340
+ '--limit',
341
+ '1',
342
+ ]
343
+ verifylist = [
344
+ ('marker', self._network_segments[0].id),
345
+ ('limit', 1),
346
+ ]
347
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
348
+
349
+ columns, data = self.cmd.take_action(parsed_args)
350
+
351
+ self.network_client.segments.assert_called_once_with(
352
+ **{
353
+ 'marker': self._network_segments[0].id,
354
+ 'limit': 1,
355
+ }
356
+ )
357
+ self.assertEqual(self.columns, columns)
358
+ self.assertEqual(self.data, list(data))
359
+
336
360
 
337
361
  class TestSetNetworkSegment(TestNetworkSegment):
338
362
  # The network segment to show.
@@ -333,7 +333,7 @@ class TestCreateNetworkSegmentRange(TestNetworkSegmentRange):
333
333
  'shared': self._network_segment_range.shared,
334
334
  'project_id': mock.ANY,
335
335
  'network_type': self._network_segment_range.network_type,
336
- 'physical_network': self._network_segment_range.physical_network, # noqa: E501
336
+ 'physical_network': self._network_segment_range.physical_network,
337
337
  'minimum': self._network_segment_range.minimum,
338
338
  'maximum': self._network_segment_range.maximum,
339
339
  'name': self._network_segment_range.name,
@@ -450,10 +450,7 @@ class TestListNetworkSegmentRange(TestNetworkSegmentRange):
450
450
  'Minimum ID',
451
451
  'Maximum ID',
452
452
  )
453
- columns_long = columns + (
454
- 'Used',
455
- 'Available',
456
- )
453
+ columns_long = (*columns, 'Used', 'Available')
457
454
 
458
455
  data = []
459
456
  for _network_segment_range in _network_segment_ranges:
@@ -518,6 +515,30 @@ class TestListNetworkSegmentRange(TestNetworkSegmentRange):
518
515
  self.assertEqual(self.columns, columns)
519
516
  self.assertEqual(self.data, list(data))
520
517
 
518
+ def test_list_pagination(self):
519
+ arglist = [
520
+ '--marker',
521
+ self._network_segment_ranges[0].id,
522
+ '--limit',
523
+ '1',
524
+ ]
525
+ verifylist = [
526
+ ('marker', self._network_segment_ranges[0].id),
527
+ ('limit', 1),
528
+ ]
529
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
530
+
531
+ columns, data = self.cmd.take_action(parsed_args)
532
+
533
+ self.network_client.network_segment_ranges.assert_called_once_with(
534
+ **{
535
+ 'marker': self._network_segment_ranges[0].id,
536
+ 'limit': 1,
537
+ }
538
+ )
539
+ self.assertEqual(self.columns, columns)
540
+ self.assertEqual(self.data, list(data))
541
+
521
542
  def test_list_long(self):
522
543
  arglist = [
523
544
  '--long',
@@ -544,11 +565,11 @@ class TestSetNetworkSegmentRange(TestNetworkSegmentRange):
544
565
  # The network segment range updated.
545
566
  minimum_updated = _network_segment_range.minimum - 5
546
567
  maximum_updated = _network_segment_range.maximum + 5
547
- available_updated = (
548
- list(range(minimum_updated, 104))
549
- + [105]
550
- + list(range(107, maximum_updated + 1))
551
- )
568
+ available_updated = [
569
+ *list(range(minimum_updated, 104)),
570
+ 105,
571
+ *list(range(107, maximum_updated + 1)),
572
+ ]
552
573
  _network_segment_range_updated = (
553
574
  network_fakes.create_one_network_segment_range(
554
575
  attrs={
@@ -468,7 +468,7 @@ class TestListNetworkTrunk(TestNetworkTrunk):
468
468
  )
469
469
 
470
470
  columns = ('ID', 'Name', 'Parent Port', 'Description')
471
- columns_long = columns + ('Status', 'State', 'Created At', 'Updated At')
471
+ columns_long = (*columns, 'Status', 'State', 'Created At', 'Updated At')
472
472
  data = []
473
473
  for t in new_trunks:
474
474
  data.append((t['id'], t['name'], t['port_id'], t['description']))
@@ -72,6 +72,8 @@ class TestPort(network_fakes.TestNetworkV2):
72
72
  'port_security_enabled',
73
73
  'project_id',
74
74
  'propagate_uplink_status',
75
+ 'pvlan_type',
76
+ 'pvlan_community',
75
77
  'resource_request',
76
78
  'revision_number',
77
79
  'qos_network_policy_id',
@@ -114,6 +116,8 @@ class TestPort(network_fakes.TestNetworkV2):
114
116
  fake_port.is_port_security_enabled,
115
117
  fake_port.project_id,
116
118
  fake_port.propagate_uplink_status,
119
+ fake_port.pvlan_type,
120
+ fake_port.pvlan_community,
117
121
  fake_port.resource_request,
118
122
  fake_port.revision_number,
119
123
  fake_port.qos_network_policy_id,
@@ -207,6 +211,10 @@ class TestCreatePort(TestPort):
207
211
  '--dns-name',
208
212
  '8.8.8.8',
209
213
  'test-port',
214
+ '--pvlan-type',
215
+ network_fakes.PVLAN_TYPE_COMMUNITY,
216
+ '--pvlan-community',
217
+ network_fakes.PVLAN_COMMUNITY_NAME,
210
218
  ]
211
219
  verifylist = [
212
220
  ('mac_address', 'aa:aa:aa:aa:aa:aa'),
@@ -224,6 +232,8 @@ class TestCreatePort(TestPort):
224
232
  ('dns_domain', 'example.org'),
225
233
  ('dns_name', '8.8.8.8'),
226
234
  ('name', 'test-port'),
235
+ ('pvlan_type', network_fakes.PVLAN_TYPE_COMMUNITY),
236
+ ('pvlan_community', network_fakes.PVLAN_COMMUNITY_NAME),
227
237
  ]
228
238
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
229
239
 
@@ -247,6 +257,8 @@ class TestCreatePort(TestPort):
247
257
  'network_id': self._port.network_id,
248
258
  'dns_domain': 'example.org',
249
259
  'dns_name': '8.8.8.8',
260
+ 'pvlan_type': network_fakes.PVLAN_TYPE_COMMUNITY,
261
+ 'pvlan_community': network_fakes.PVLAN_COMMUNITY_NAME,
250
262
  'name': 'test-port',
251
263
  }
252
264
  )
@@ -1156,6 +1168,78 @@ class TestCreatePort(TestPort):
1156
1168
  def test_create_with_trusted_false(self):
1157
1169
  self._test_create_with_trusted_field(False)
1158
1170
 
1171
+ def test_create_pvlan_community_without_name(self):
1172
+ arglist = [
1173
+ '--network',
1174
+ self._port.network_id,
1175
+ '--pvlan-type',
1176
+ 'community',
1177
+ 'test-port',
1178
+ ]
1179
+ verifylist = [
1180
+ ('network', self._port.network_id),
1181
+ ('enable', True),
1182
+ ('pvlan_type', 'community'),
1183
+ ('name', 'test-port'),
1184
+ ]
1185
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1186
+
1187
+ self.assertRaises(
1188
+ exceptions.CommandError,
1189
+ self.cmd.take_action,
1190
+ parsed_args,
1191
+ )
1192
+
1193
+ def test_create_pvlan_with_port_security_disabled(self):
1194
+ arglist = [
1195
+ '--network',
1196
+ self._port.network_id,
1197
+ '--disable-port-security',
1198
+ '--pvlan-type',
1199
+ 'isolated',
1200
+ 'test-port',
1201
+ ]
1202
+ verifylist = [
1203
+ ('network', self._port.network_id),
1204
+ ('enable', True),
1205
+ ('disable_port_security', True),
1206
+ ('pvlan_type', 'isolated'),
1207
+ ('name', 'test-port'),
1208
+ ]
1209
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1210
+
1211
+ self.assertRaises(
1212
+ exceptions.CommandError,
1213
+ self.cmd.take_action,
1214
+ parsed_args,
1215
+ )
1216
+
1217
+ def test_create_pvlan_on_non_pvlan_network(self):
1218
+ fake_net = network_fakes.create_one_network(
1219
+ {'id': self._port.network_id, 'pvlan': False}
1220
+ )
1221
+ self.network_client.find_network.return_value = fake_net
1222
+ arglist = [
1223
+ '--network',
1224
+ self._port.network_id,
1225
+ '--pvlan-type',
1226
+ 'isolated',
1227
+ 'test-port',
1228
+ ]
1229
+ verifylist = [
1230
+ ('network', self._port.network_id),
1231
+ ('enable', True),
1232
+ ('pvlan_type', 'isolated'),
1233
+ ('name', 'test-port'),
1234
+ ]
1235
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1236
+
1237
+ self.assertRaises(
1238
+ exceptions.CommandError,
1239
+ self.cmd.take_action,
1240
+ parsed_args,
1241
+ )
1242
+
1159
1243
 
1160
1244
  class TestDeletePort(TestPort):
1161
1245
  # Ports to delete.
@@ -1349,6 +1433,28 @@ class TestListPort(compute_fakes.FakeClientMixin, TestPort):
1349
1433
  self.assertEqual(self.columns, columns)
1350
1434
  self.assertCountEqual(self.data, list(data))
1351
1435
 
1436
+ def test_port_list_pagination(self):
1437
+ arglist = [
1438
+ '--marker',
1439
+ self._ports[0].id,
1440
+ '--limit',
1441
+ '1',
1442
+ ]
1443
+ verifylist = [
1444
+ ('marker', self._ports[0].id),
1445
+ ('limit', 1),
1446
+ ]
1447
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1448
+
1449
+ columns, data = self.cmd.take_action(parsed_args)
1450
+
1451
+ self.network_client.ports.assert_called_once_with(
1452
+ fields=LIST_FIELDS_TO_RETRIEVE,
1453
+ **{'marker': self._ports[0].id, 'limit': 1},
1454
+ )
1455
+ self.assertEqual(self.columns, columns)
1456
+ self.assertEqual(self.data, list(data))
1457
+
1352
1458
  def test_port_list_router_opt(self):
1353
1459
  arglist = [
1354
1460
  '--router',
@@ -2653,6 +2759,66 @@ class TestSetPort(TestPort):
2653
2759
  def test_set_uplink_status_propagation_false(self):
2654
2760
  self._test_set_uplink_status_propagation(False)
2655
2761
 
2762
+ def test_set_pvlan_community_without_name(self):
2763
+ arglist = [
2764
+ '--pvlan-type',
2765
+ 'community',
2766
+ self._port.name,
2767
+ ]
2768
+ verifylist = [
2769
+ ('pvlan_type', 'community'),
2770
+ ('port', self._port.name),
2771
+ ]
2772
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
2773
+
2774
+ self.assertRaises(
2775
+ exceptions.CommandError,
2776
+ self.cmd.take_action,
2777
+ parsed_args,
2778
+ )
2779
+
2780
+ def test_set_pvlan_with_port_security_disabled(self):
2781
+ arglist = [
2782
+ '--disable-port-security',
2783
+ '--pvlan-type',
2784
+ 'isolated',
2785
+ self._port.name,
2786
+ ]
2787
+ verifylist = [
2788
+ ('disable_port_security', True),
2789
+ ('pvlan_type', 'isolated'),
2790
+ ('port', self._port.name),
2791
+ ]
2792
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
2793
+
2794
+ self.assertRaises(
2795
+ exceptions.CommandError,
2796
+ self.cmd.take_action,
2797
+ parsed_args,
2798
+ )
2799
+
2800
+ def test_set_pvlan_on_non_pvlan_network(self):
2801
+ fake_net = network_fakes.create_one_network(
2802
+ {'id': self._port.network_id, 'pvlan': False}
2803
+ )
2804
+ self.network_client.find_network.return_value = fake_net
2805
+ arglist = [
2806
+ '--pvlan-type',
2807
+ 'isolated',
2808
+ self._port.name,
2809
+ ]
2810
+ verifylist = [
2811
+ ('pvlan_type', 'isolated'),
2812
+ ('port', self._port.name),
2813
+ ]
2814
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
2815
+
2816
+ self.assertRaises(
2817
+ exceptions.CommandError,
2818
+ self.cmd.take_action,
2819
+ parsed_args,
2820
+ )
2821
+
2656
2822
 
2657
2823
  class TestShowPort(TestPort):
2658
2824
  # The port to show.
@@ -70,10 +70,7 @@ class TestAddPortToRouter(TestRouter):
70
70
  result = self.cmd.take_action(parsed_args)
71
71
 
72
72
  self.network_client.add_interface_to_router.assert_called_with(
73
- self._router,
74
- **{
75
- 'port_id': self._router.port,
76
- },
73
+ self._router, port=self._router.port
77
74
  )
78
75
  self.assertIsNone(result)
79
76
 
@@ -117,7 +114,7 @@ class TestAddSubnetToRouter(TestRouter):
117
114
 
118
115
  result = self.cmd.take_action(parsed_args)
119
116
  self.network_client.add_interface_to_router.assert_called_with(
120
- self._router, **{'subnet_id': self._router.subnet}
117
+ self._router, subnet=self._router.subnet
121
118
  )
122
119
 
123
120
  self.assertIsNone(result)
@@ -711,17 +708,14 @@ class TestListRouter(TestRouter):
711
708
  'Distributed',
712
709
  'HA',
713
710
  )
714
- columns_long = columns + (
711
+ columns_long = (
712
+ *columns,
715
713
  'Routes',
716
714
  'External gateway info',
717
715
  'Availability zones',
718
716
  'Tags',
719
717
  )
720
- columns_long_no_az = columns + (
721
- 'Routes',
722
- 'External gateway info',
723
- 'Tags',
724
- )
718
+ columns_long_no_az = (*columns, 'Routes', 'External gateway info', 'Tags')
725
719
 
726
720
  data = []
727
721
  for r in routers:
@@ -810,6 +804,30 @@ class TestListRouter(TestRouter):
810
804
  self.assertEqual(self.columns, columns)
811
805
  self.assertCountEqual(self.data, list(data))
812
806
 
807
+ def test_router_list_pagination(self):
808
+ arglist = [
809
+ '--marker',
810
+ self.routers[0].id,
811
+ '--limit',
812
+ '1',
813
+ ]
814
+ verifylist = [
815
+ ('marker', self.routers[0].id),
816
+ ('limit', 1),
817
+ ]
818
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
819
+
820
+ columns, data = self.cmd.take_action(parsed_args)
821
+
822
+ self.network_client.routers.assert_called_once_with(
823
+ **{
824
+ 'marker': self.routers[0].id,
825
+ 'limit': 1,
826
+ }
827
+ )
828
+ self.assertEqual(self.columns, columns)
829
+ self.assertEqual(self.data, list(data))
830
+
813
831
  def test_router_list_no_ha_no_distributed(self):
814
832
  _routers = network_fakes.create_routers(
815
833
  {'ha': None, 'distributed': None}, count=3
@@ -824,7 +842,7 @@ class TestListRouter(TestRouter):
824
842
  with mock.patch.object(
825
843
  self.network_client, "routers", return_value=_routers
826
844
  ):
827
- columns, data = self.cmd.take_action(parsed_args)
845
+ columns, _data = self.cmd.take_action(parsed_args)
828
846
 
829
847
  self.assertNotIn("is_distributed", columns)
830
848
  self.assertNotIn("is_ha", columns)
@@ -1067,7 +1085,7 @@ class TestRemovePortFromRouter(TestRouter):
1067
1085
  result = self.cmd.take_action(parsed_args)
1068
1086
 
1069
1087
  self.network_client.remove_interface_from_router.assert_called_with(
1070
- self._router, **{'port_id': self._router.port}
1088
+ self._router, port=self._router.port
1071
1089
  )
1072
1090
  self.assertIsNone(result)
1073
1091
 
@@ -1111,7 +1129,7 @@ class TestRemoveSubnetFromRouter(TestRouter):
1111
1129
 
1112
1130
  result = self.cmd.take_action(parsed_args)
1113
1131
  self.network_client.remove_interface_from_router.assert_called_with(
1114
- self._router, **{'subnet_id': self._router.subnet}
1132
+ self._router, subnet=self._router.subnet
1115
1133
  )
1116
1134
  self.assertIsNone(result)
1117
1135
 
@@ -1900,7 +1918,7 @@ class TestShowRouter(TestRouter):
1900
1918
  with mock.patch.object(
1901
1919
  self.network_client, "find_router", return_value=_router
1902
1920
  ):
1903
- columns, data = self.cmd.take_action(parsed_args)
1921
+ columns, _data = self.cmd.take_action(parsed_args)
1904
1922
 
1905
1923
  self.assertNotIn("is_distributed", columns)
1906
1924
  self.assertNotIn("is_ha", columns)
@@ -1922,7 +1940,9 @@ class TestShowRouter(TestRouter):
1922
1940
  columns, data = self.cmd.take_action(parsed_args)
1923
1941
 
1924
1942
  self.assertIn("routes", columns)
1925
- self.assertIsNone(list(data)[columns.index('routes')].human_readable())
1943
+ self.assertEqual(
1944
+ list(data)[columns.index('routes')].human_readable(), ''
1945
+ )
1926
1946
 
1927
1947
 
1928
1948
  class TestUnsetRouter(TestRouter):
@@ -299,9 +299,7 @@ class TestListSecurityGroupNetwork(TestSecurityGroupNetwork):
299
299
 
300
300
  def test_security_group_list_no_options(self):
301
301
  arglist = []
302
- verifylist = [
303
- ('all_projects', False),
304
- ]
302
+ verifylist = []
305
303
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
306
304
 
307
305
  columns, data = self.cmd.take_action(parsed_args)
@@ -312,22 +310,27 @@ class TestListSecurityGroupNetwork(TestSecurityGroupNetwork):
312
310
  self.assertEqual(self.columns, columns)
313
311
  self.assertCountEqual(self.data, list(data))
314
312
 
315
- def test_security_group_list_all_projects(self):
313
+ def test_security_groups_list_pagination(self):
316
314
  arglist = [
317
- '--all-projects',
315
+ '--marker',
316
+ self._security_groups[0].id,
317
+ '--limit',
318
+ '1',
318
319
  ]
319
320
  verifylist = [
320
- ('all_projects', True),
321
+ ('marker', self._security_groups[0].id),
322
+ ('limit', 1),
321
323
  ]
322
324
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
323
325
 
324
326
  columns, data = self.cmd.take_action(parsed_args)
325
327
 
326
328
  self.network_client.security_groups.assert_called_once_with(
327
- fields=security_group.ListSecurityGroup.FIELDS_TO_RETRIEVE
329
+ fields=security_group.ListSecurityGroup.FIELDS_TO_RETRIEVE,
330
+ **{'marker': self._security_groups[0].id, 'limit': 1},
328
331
  )
329
332
  self.assertEqual(self.columns, columns)
330
- self.assertCountEqual(self.data, list(data))
333
+ self.assertEqual(self.data, list(data))
331
334
 
332
335
  def test_security_group_list_project(self):
333
336
  project = identity_fakes.FakeProject.create_one_project()
@@ -171,22 +171,6 @@ class TestCreateSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
171
171
  parsed_args = self.check_parser(self.cmd, arglist, [])
172
172
  self.assertEqual('IPv6', parsed_args.ethertype)
173
173
 
174
- def test_create_all_protocol_options(self):
175
- arglist = [
176
- '--protocol',
177
- 'tcp',
178
- '--proto',
179
- 'tcp',
180
- self._security_group.id,
181
- ]
182
- self.assertRaises(
183
- tests_utils.ParserException,
184
- self.check_parser,
185
- self.cmd,
186
- arglist,
187
- [],
188
- )
189
-
190
174
  def test_create_all_port_range_options(self):
191
175
  arglist = [
192
176
  '--dst-port',
@@ -251,7 +235,7 @@ class TestCreateSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
251
235
  self.assertEqual(self.expected_columns, columns)
252
236
  self.assertEqual(self.expected_data, data)
253
237
 
254
- def test_create_proto_option(self):
238
+ def test_create_protocol_option(self):
255
239
  self._setup_security_group_rule(
256
240
  {
257
241
  'protocol': 'icmp',
@@ -259,15 +243,14 @@ class TestCreateSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
259
243
  }
260
244
  )
261
245
  arglist = [
262
- '--proto',
246
+ '--protocol',
263
247
  self._security_group_rule.protocol,
264
248
  '--remote-ip',
265
249
  self._security_group_rule.remote_ip_prefix,
266
250
  self._security_group.id,
267
251
  ]
268
252
  verifylist = [
269
- ('proto', self._security_group_rule.protocol),
270
- ('protocol', None),
253
+ ('protocol', self._security_group_rule.protocol),
271
254
  ('remote_ip', self._security_group_rule.remote_ip_prefix),
272
255
  ('group', self._security_group.id),
273
256
  ]
@@ -295,15 +278,14 @@ class TestCreateSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
295
278
  }
296
279
  )
297
280
  arglist = [
298
- '--proto',
281
+ '--protocol',
299
282
  'any',
300
283
  '--remote-ip',
301
284
  self._security_group_rule.remote_ip_prefix,
302
285
  self._security_group.id,
303
286
  ]
304
287
  verifylist = [
305
- ('proto', 'any'),
306
- ('protocol', None),
288
+ ('protocol', 'any'),
307
289
  ('remote_ip', self._security_group_rule.remote_ip_prefix),
308
290
  ('group', self._security_group.id),
309
291
  ]
@@ -1153,13 +1135,17 @@ class TestListSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
1153
1135
  self.assertEqual(self.expected_columns_no_group, columns)
1154
1136
  self.assertEqual(self.expected_data_no_group, list(data))
1155
1137
 
1156
- def test_list_with_group(self):
1138
+ def test_list_with_pagination(self):
1157
1139
  self._security_group_rule_tcp.port_range_min = 80
1158
1140
  arglist = [
1159
- self._security_group.id,
1141
+ '--marker',
1142
+ self._security_group_rules[0].id,
1143
+ '--limit',
1144
+ '1',
1160
1145
  ]
1161
1146
  verifylist = [
1162
- ('group', self._security_group.id),
1147
+ ('marker', self._security_group_rules[0].id),
1148
+ ('limit', 1),
1163
1149
  ]
1164
1150
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1165
1151
 
@@ -1167,27 +1153,32 @@ class TestListSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
1167
1153
 
1168
1154
  self.network_client.security_group_rules.assert_called_once_with(
1169
1155
  **{
1170
- 'security_group_id': self._security_group.id,
1156
+ 'marker': self._security_group_rules[0].id,
1157
+ 'limit': 1,
1171
1158
  }
1172
1159
  )
1173
- self.assertEqual(self.expected_columns_with_group, columns)
1174
- self.assertEqual(self.expected_data_with_group, list(data))
1160
+ self.assertEqual(self.expected_columns_no_group, columns)
1161
+ self.assertEqual(self.expected_data_no_group, list(data))
1175
1162
 
1176
- def test_list_with_ignored_options(self):
1163
+ def test_list_with_group(self):
1177
1164
  self._security_group_rule_tcp.port_range_min = 80
1178
1165
  arglist = [
1179
- '--all-projects',
1166
+ self._security_group.id,
1180
1167
  ]
1181
1168
  verifylist = [
1182
- ('all_projects', True),
1169
+ ('group', self._security_group.id),
1183
1170
  ]
1184
1171
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1185
1172
 
1186
1173
  columns, data = self.cmd.take_action(parsed_args)
1187
1174
 
1188
- self.network_client.security_group_rules.assert_called_once_with(**{})
1189
- self.assertEqual(self.expected_columns_no_group, columns)
1190
- self.assertEqual(self.expected_data_no_group, list(data))
1175
+ self.network_client.security_group_rules.assert_called_once_with(
1176
+ **{
1177
+ 'security_group_id': self._security_group.id,
1178
+ }
1179
+ )
1180
+ self.assertEqual(self.expected_columns_with_group, columns)
1181
+ self.assertEqual(self.expected_data_with_group, list(data))
1191
1182
 
1192
1183
  def test_list_with_protocol(self):
1193
1184
  self._security_group_rule_tcp.port_range_min = 80
@@ -1265,7 +1256,7 @@ class TestListSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
1265
1256
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1266
1257
 
1267
1258
  columns, data = self.cmd.take_action(parsed_args)
1268
- filters = {'tenant_id': project.id, 'project_id': project.id}
1259
+ filters = {'project_id': project.id}
1269
1260
 
1270
1261
  self.network_client.security_group_rules.assert_called_once_with(
1271
1262
  **filters
@@ -1291,7 +1282,7 @@ class TestListSecurityGroupRuleNetwork(TestSecurityGroupRuleNetwork):
1291
1282
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1292
1283
 
1293
1284
  columns, data = self.cmd.take_action(parsed_args)
1294
- filters = {'tenant_id': project.id, 'project_id': project.id}
1285
+ filters = {'project_id': project.id}
1295
1286
 
1296
1287
  self.network_client.security_group_rules.assert_called_once_with(
1297
1288
  **filters