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
@@ -11,19 +11,26 @@
11
11
  # under the License.
12
12
  #
13
13
 
14
+ import argparse
14
15
  import logging
16
+ from collections.abc import Iterable, Sequence
17
+ from typing import Any
15
18
 
19
+ from openstack.network.v2 import service_profile as _service_profile
16
20
  from osc_lib import exceptions
17
21
  from osc_lib import utils
18
22
 
19
23
  from openstackclient import command
24
+ from openstackclient.common import pagination
20
25
  from openstackclient.i18n import _
21
26
  from openstackclient.network import common
22
27
 
23
28
  LOG = logging.getLogger(__name__)
24
29
 
25
30
 
26
- def _get_columns(item):
31
+ def _get_columns(
32
+ item: _service_profile.ServiceProfile,
33
+ ) -> tuple[tuple[str, ...], tuple[str, ...]]:
27
34
  column_map = {
28
35
  'is_enabled': 'enabled',
29
36
  }
@@ -34,8 +41,10 @@ def _get_columns(item):
34
41
  )
35
42
 
36
43
 
37
- def _get_attrs(client_manager, parsed_args):
38
- attrs = {}
44
+ def _get_attrs(
45
+ client_manager: Any, parsed_args: argparse.Namespace
46
+ ) -> dict[str, Any]:
47
+ attrs: dict[str, Any] = {}
39
48
  if parsed_args.description is not None:
40
49
  attrs['description'] = parsed_args.description
41
50
  if parsed_args.driver is not None:
@@ -50,14 +59,12 @@ def _get_attrs(client_manager, parsed_args):
50
59
  return attrs
51
60
 
52
61
 
53
- # TODO(ndahiwade): Use the SDK resource mapped attribute names once the
54
- # OSC minimum requirements include SDK 1.0.
55
62
  class CreateNetworkFlavorProfile(
56
63
  command.ShowOne, common.NeutronCommandWithExtraArgs
57
64
  ):
58
65
  _description = _("Create new network flavor profile")
59
66
 
60
- def get_parser(self, prog_name):
67
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
61
68
  parser = super().get_parser(prog_name)
62
69
  parser.add_argument(
63
70
  '--description',
@@ -92,7 +99,9 @@ class CreateNetworkFlavorProfile(
92
99
 
93
100
  return parser
94
101
 
95
- def take_action(self, parsed_args):
102
+ def take_action(
103
+ self, parsed_args: argparse.Namespace
104
+ ) -> tuple[Sequence[str], Iterable[Any]]:
96
105
  client = self.app.client_manager.network
97
106
  attrs = _get_attrs(self.app.client_manager, parsed_args)
98
107
  attrs.update(
@@ -113,7 +122,7 @@ class CreateNetworkFlavorProfile(
113
122
  class DeleteNetworkFlavorProfile(command.Command):
114
123
  _description = _("Delete network flavor profile")
115
124
 
116
- def get_parser(self, prog_name):
125
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
117
126
  parser = super().get_parser(prog_name)
118
127
 
119
128
  parser.add_argument(
@@ -124,7 +133,7 @@ class DeleteNetworkFlavorProfile(command.Command):
124
133
  )
125
134
  return parser
126
135
 
127
- def take_action(self, parsed_args):
136
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
128
137
  client = self.app.client_manager.network
129
138
  result = 0
130
139
 
@@ -154,7 +163,14 @@ class DeleteNetworkFlavorProfile(command.Command):
154
163
  class ListNetworkFlavorProfile(command.Lister):
155
164
  _description = _("List network flavor profile(s)")
156
165
 
157
- def take_action(self, parsed_args):
166
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
167
+ parser = super().get_parser(prog_name)
168
+ pagination.add_marker_pagination_option_to_parser(parser)
169
+ return parser
170
+
171
+ def take_action(
172
+ self, parsed_args: argparse.Namespace
173
+ ) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
158
174
  client = self.app.client_manager.network
159
175
 
160
176
  columns = (
@@ -172,7 +188,16 @@ class ListNetworkFlavorProfile(command.Lister):
172
188
  'Description',
173
189
  )
174
190
 
175
- data = client.service_profiles()
191
+ filters = {}
192
+ if parsed_args.marker is not None:
193
+ filters['marker'] = parsed_args.marker
194
+ if parsed_args.limit is not None:
195
+ filters['limit'] = parsed_args.limit
196
+ if parsed_args.max_items is not None:
197
+ filters['max_items'] = parsed_args.max_items
198
+
199
+ data = client.service_profiles(**filters)
200
+
176
201
  return (
177
202
  column_headers,
178
203
  (
@@ -185,12 +210,10 @@ class ListNetworkFlavorProfile(command.Lister):
185
210
  )
186
211
 
187
212
 
188
- # TODO(ndahiwade): Use the SDK resource mapped attribute names once the
189
- # OSC minimum requirements include SDK 1.0.
190
213
  class SetNetworkFlavorProfile(common.NeutronCommandWithExtraArgs):
191
214
  _description = _("Set network flavor profile properties")
192
215
 
193
- def get_parser(self, prog_name):
216
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
194
217
  parser = super().get_parser(prog_name)
195
218
  parser.add_argument(
196
219
  'flavor_profile',
@@ -230,7 +253,7 @@ class SetNetworkFlavorProfile(common.NeutronCommandWithExtraArgs):
230
253
 
231
254
  return parser
232
255
 
233
- def take_action(self, parsed_args):
256
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
234
257
  client = self.app.client_manager.network
235
258
  obj = client.find_service_profile(
236
259
  parsed_args.flavor_profile, ignore_missing=False
@@ -246,7 +269,7 @@ class SetNetworkFlavorProfile(common.NeutronCommandWithExtraArgs):
246
269
  class ShowNetworkFlavorProfile(command.ShowOne):
247
270
  _description = _("Display network flavor profile details")
248
271
 
249
- def get_parser(self, prog_name):
272
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
250
273
  parser = super().get_parser(prog_name)
251
274
  parser.add_argument(
252
275
  'flavor_profile',
@@ -255,7 +278,9 @@ class ShowNetworkFlavorProfile(command.ShowOne):
255
278
  )
256
279
  return parser
257
280
 
258
- def take_action(self, parsed_args):
281
+ def take_action(
282
+ self, parsed_args: argparse.Namespace
283
+ ) -> tuple[Sequence[str], Iterable[Any]]:
259
284
  client = self.app.client_manager.network
260
285
  obj = client.find_service_profile(
261
286
  parsed_args.flavor_profile, ignore_missing=False
@@ -13,12 +13,17 @@
13
13
 
14
14
  """Metering Label Implementations"""
15
15
 
16
+ import argparse
16
17
  import logging
18
+ from collections.abc import Iterable, Sequence
19
+ from typing import Any
17
20
 
21
+ from openstack.network.v2 import metering_label as _metering_label
18
22
  from osc_lib import exceptions
19
23
  from osc_lib import utils
20
24
 
21
25
  from openstackclient import command
26
+ from openstackclient.common import pagination
22
27
  from openstackclient.i18n import _
23
28
  from openstackclient.identity import common as identity_common
24
29
  from openstackclient.network import common
@@ -26,7 +31,9 @@ from openstackclient.network import common
26
31
  LOG = logging.getLogger(__name__)
27
32
 
28
33
 
29
- def _get_columns(item):
34
+ def _get_columns(
35
+ item: _metering_label.MeteringLabel,
36
+ ) -> tuple[tuple[str, ...], tuple[str, ...]]:
30
37
  column_map = {
31
38
  'is_shared': 'shared',
32
39
  }
@@ -36,8 +43,10 @@ def _get_columns(item):
36
43
  )
37
44
 
38
45
 
39
- def _get_attrs(client_manager, parsed_args):
40
- attrs = {}
46
+ def _get_attrs(
47
+ client_manager: Any, parsed_args: argparse.Namespace
48
+ ) -> dict[str, Any]:
49
+ attrs: dict[str, Any] = {}
41
50
 
42
51
  if parsed_args.description is not None:
43
52
  attrs['description'] = parsed_args.description
@@ -59,12 +68,10 @@ def _get_attrs(client_manager, parsed_args):
59
68
  return attrs
60
69
 
61
70
 
62
- # TODO(ankur-gupta-f): Use the SDK resource mapped attribute names once the
63
- # OSC minimum requirements include SDK 1.0.
64
71
  class CreateMeter(command.ShowOne, common.NeutronCommandWithExtraArgs):
65
72
  _description = _("Create network meter")
66
73
 
67
- def get_parser(self, prog_name):
74
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
68
75
  parser = super().get_parser(prog_name)
69
76
 
70
77
  parser.add_argument(
@@ -99,7 +106,9 @@ class CreateMeter(command.ShowOne, common.NeutronCommandWithExtraArgs):
99
106
 
100
107
  return parser
101
108
 
102
- def take_action(self, parsed_args):
109
+ def take_action(
110
+ self, parsed_args: argparse.Namespace
111
+ ) -> tuple[Sequence[str], Iterable[Any]]:
103
112
  client = self.app.client_manager.network
104
113
  attrs = _get_attrs(self.app.client_manager, parsed_args)
105
114
  attrs.update(
@@ -112,12 +121,10 @@ class CreateMeter(command.ShowOne, common.NeutronCommandWithExtraArgs):
112
121
  return (display_columns, data)
113
122
 
114
123
 
115
- # TODO(ankur-gupta-f): Use the SDK resource mapped attribute names once the
116
- # OSC minimum requirements include SDK 1.0.
117
124
  class DeleteMeter(command.Command):
118
125
  _description = _("Delete network meter")
119
126
 
120
- def get_parser(self, prog_name):
127
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
121
128
  parser = super().get_parser(prog_name)
122
129
 
123
130
  parser.add_argument(
@@ -128,7 +135,7 @@ class DeleteMeter(command.Command):
128
135
  )
129
136
  return parser
130
137
 
131
- def take_action(self, parsed_args):
138
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
132
139
  client = self.app.client_manager.network
133
140
  result = 0
134
141
 
@@ -154,7 +161,14 @@ class DeleteMeter(command.Command):
154
161
  class ListMeter(command.Lister):
155
162
  _description = _("List network meters")
156
163
 
157
- def take_action(self, parsed_args):
164
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
165
+ parser = super().get_parser(prog_name)
166
+ pagination.add_marker_pagination_option_to_parser(parser)
167
+ return parser
168
+
169
+ def take_action(
170
+ self, parsed_args: argparse.Namespace
171
+ ) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
158
172
  client = self.app.client_manager.network
159
173
 
160
174
  columns = (
@@ -170,7 +184,15 @@ class ListMeter(command.Lister):
170
184
  'Shared',
171
185
  )
172
186
 
173
- data = client.metering_labels()
187
+ filters = {}
188
+ if parsed_args.marker is not None:
189
+ filters['marker'] = parsed_args.marker
190
+ if parsed_args.limit is not None:
191
+ filters['limit'] = parsed_args.limit
192
+ if parsed_args.max_items is not None:
193
+ filters['max_items'] = parsed_args.max_items
194
+
195
+ data = client.metering_labels(**filters)
174
196
  return (
175
197
  column_headers,
176
198
  (
@@ -186,14 +208,16 @@ class ListMeter(command.Lister):
186
208
  class ShowMeter(command.ShowOne):
187
209
  _description = _("Show network meter")
188
210
 
189
- def get_parser(self, prog_name):
211
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
190
212
  parser = super().get_parser(prog_name)
191
213
  parser.add_argument(
192
214
  'meter', metavar='<meter>', help=_('Meter to display (name or ID)')
193
215
  )
194
216
  return parser
195
217
 
196
- def take_action(self, parsed_args):
218
+ def take_action(
219
+ self, parsed_args: argparse.Namespace
220
+ ) -> tuple[Sequence[str], Iterable[Any]]:
197
221
  client = self.app.client_manager.network
198
222
  obj = client.find_metering_label(
199
223
  parsed_args.meter, ignore_missing=False
@@ -13,13 +13,17 @@
13
13
 
14
14
  """Meter Rule Implementations"""
15
15
 
16
+ import argparse
16
17
  import logging
17
- import typing as ty
18
+ from collections.abc import Iterable, Sequence
19
+ from typing import Any
18
20
 
21
+ from openstack.network.v2 import metering_label_rule as _metering_label_rule
19
22
  from osc_lib import exceptions
20
23
  from osc_lib import utils
21
24
 
22
25
  from openstackclient import command
26
+ from openstackclient.common import pagination
23
27
  from openstackclient.i18n import _
24
28
  from openstackclient.identity import common as identity_common
25
29
  from openstackclient.network import common
@@ -27,15 +31,19 @@ from openstackclient.network import common
27
31
  LOG = logging.getLogger(__name__)
28
32
 
29
33
 
30
- def _get_columns(item):
34
+ def _get_columns(
35
+ item: _metering_label_rule.MeteringLabelRule,
36
+ ) -> tuple[tuple[str, ...], tuple[str, ...]]:
31
37
  hidden_columns = ['location', 'tenant_id']
32
38
  return utils.get_osc_show_columns_for_sdk_resource(
33
39
  item, {}, hidden_columns
34
40
  )
35
41
 
36
42
 
37
- def _get_attrs(client_manager, parsed_args):
38
- attrs: dict[str, ty.Any] = {}
43
+ def _get_attrs(
44
+ client_manager: Any, parsed_args: argparse.Namespace
45
+ ) -> dict[str, Any]:
46
+ attrs: dict[str, Any] = {}
39
47
 
40
48
  if parsed_args.exclude:
41
49
  attrs['excluded'] = True
@@ -68,7 +76,7 @@ def _get_attrs(client_manager, parsed_args):
68
76
  class CreateMeterRule(command.ShowOne, common.NeutronCommandWithExtraArgs):
69
77
  _description = _("Create a new meter rule")
70
78
 
71
- def get_parser(self, prog_name):
79
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
72
80
  parser = super().get_parser(prog_name)
73
81
 
74
82
  parser.add_argument(
@@ -125,7 +133,9 @@ class CreateMeterRule(command.ShowOne, common.NeutronCommandWithExtraArgs):
125
133
 
126
134
  return parser
127
135
 
128
- def take_action(self, parsed_args):
136
+ def take_action(
137
+ self, parsed_args: argparse.Namespace
138
+ ) -> tuple[Sequence[str], Iterable[Any]]:
129
139
  client = self.app.client_manager.network
130
140
  _meter = client.find_metering_label(
131
141
  parsed_args.meter, ignore_missing=False
@@ -145,7 +155,7 @@ class CreateMeterRule(command.ShowOne, common.NeutronCommandWithExtraArgs):
145
155
  class DeleteMeterRule(command.Command):
146
156
  _description = _("Delete meter rule(s)")
147
157
 
148
- def get_parser(self, prog_name):
158
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
149
159
  parser = super().get_parser(prog_name)
150
160
 
151
161
  parser.add_argument(
@@ -157,7 +167,7 @@ class DeleteMeterRule(command.Command):
157
167
 
158
168
  return parser
159
169
 
160
- def take_action(self, parsed_args):
170
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
161
171
  client = self.app.client_manager.network
162
172
  result = 0
163
173
 
@@ -183,7 +193,14 @@ class DeleteMeterRule(command.Command):
183
193
  class ListMeterRule(command.Lister):
184
194
  _description = _("List meter rules")
185
195
 
186
- def take_action(self, parsed_args):
196
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
197
+ parser = super().get_parser(prog_name)
198
+ pagination.add_marker_pagination_option_to_parser(parser)
199
+ return parser
200
+
201
+ def take_action(
202
+ self, parsed_args: argparse.Namespace
203
+ ) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
187
204
  client = self.app.client_manager.network
188
205
 
189
206
  columns = (
@@ -202,7 +219,16 @@ class ListMeterRule(command.Lister):
202
219
  'Source IP Prefix',
203
220
  'Destination IP Prefix',
204
221
  )
205
- data = client.metering_label_rules()
222
+
223
+ filters = {}
224
+ if parsed_args.marker is not None:
225
+ filters['marker'] = parsed_args.marker
226
+ if parsed_args.limit is not None:
227
+ filters['limit'] = parsed_args.limit
228
+ if parsed_args.max_items is not None:
229
+ filters['max_items'] = parsed_args.max_items
230
+
231
+ data = client.metering_label_rules(**filters)
206
232
  return (
207
233
  column_headers,
208
234
  (
@@ -218,7 +244,7 @@ class ListMeterRule(command.Lister):
218
244
  class ShowMeterRule(command.ShowOne):
219
245
  _description = _("Display meter rules details")
220
246
 
221
- def get_parser(self, prog_name):
247
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
222
248
  parser = super().get_parser(prog_name)
223
249
  parser.add_argument(
224
250
  'meter_rule_id',
@@ -227,7 +253,9 @@ class ShowMeterRule(command.ShowOne):
227
253
  )
228
254
  return parser
229
255
 
230
- def take_action(self, parsed_args):
256
+ def take_action(
257
+ self, parsed_args: argparse.Namespace
258
+ ) -> tuple[Sequence[str], Iterable[Any]]:
231
259
  client = self.app.client_manager.network
232
260
  obj = client.find_metering_label_rule(
233
261
  parsed_args.meter_rule_id, ignore_missing=False
@@ -13,14 +13,18 @@
13
13
  # License for the specific language governing permissions and limitations
14
14
  # under the License.
15
15
 
16
+ import argparse
17
+ from collections.abc import Iterable, Sequence
16
18
  import logging
17
- import typing as ty
19
+ from typing import Any
18
20
 
19
21
  from cliff import columns as cliff_columns
22
+ from openstack.network.v2 import qos_policy as _qos_policy
20
23
  from osc_lib import exceptions
21
24
  from osc_lib import utils
22
25
 
23
26
  from openstackclient import command
27
+ from openstackclient.common import pagination
24
28
  from openstackclient.i18n import _
25
29
  from openstackclient.identity import common as identity_common
26
30
  from openstackclient.network import common
@@ -28,8 +32,8 @@ from openstackclient.network import common
28
32
  LOG = logging.getLogger(__name__)
29
33
 
30
34
 
31
- class RulesColumn(cliff_columns.FormattableColumn[ty.Any]):
32
- def human_readable(self):
35
+ class RulesColumn(cliff_columns.FormattableColumn[Any]):
36
+ def human_readable(self) -> str:
33
37
  return '\n'.join(str(v) for v in self._value)
34
38
 
35
39
 
@@ -38,7 +42,9 @@ _formatters = {
38
42
  }
39
43
 
40
44
 
41
- def _get_columns(item):
45
+ def _get_columns(
46
+ item: _qos_policy.QoSPolicy,
47
+ ) -> tuple[tuple[str, ...], tuple[str, ...]]:
42
48
  column_map = {
43
49
  'is_shared': 'shared',
44
50
  }
@@ -48,7 +54,9 @@ def _get_columns(item):
48
54
  )
49
55
 
50
56
 
51
- def _get_attrs(client_manager, parsed_args):
57
+ def _get_attrs(
58
+ client_manager: Any, parsed_args: argparse.Namespace
59
+ ) -> dict[str, Any]:
52
60
  attrs = {}
53
61
  if 'name' in parsed_args and parsed_args.name is not None:
54
62
  attrs['name'] = parsed_args.name
@@ -78,14 +86,12 @@ def _get_attrs(client_manager, parsed_args):
78
86
  return attrs
79
87
 
80
88
 
81
- # TODO(abhiraut): Use the SDK resource mapped attribute names once the
82
- # OSC minimum requirements include SDK 1.0.
83
89
  class CreateNetworkQosPolicy(
84
90
  command.ShowOne, common.NeutronCommandWithExtraArgs
85
91
  ):
86
92
  _description = _("Create a QoS policy")
87
93
 
88
- def get_parser(self, prog_name):
94
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
89
95
  parser = super().get_parser(prog_name)
90
96
  parser.add_argument(
91
97
  'name', metavar='<name>', help=_("Name of QoS policy to create")
@@ -129,7 +135,9 @@ class CreateNetworkQosPolicy(
129
135
  )
130
136
  return parser
131
137
 
132
- def take_action(self, parsed_args):
138
+ def take_action(
139
+ self, parsed_args: argparse.Namespace
140
+ ) -> tuple[Sequence[str], Iterable[Any]]:
133
141
  client = self.app.client_manager.network
134
142
  attrs = _get_attrs(self.app.client_manager, parsed_args)
135
143
  attrs.update(
@@ -144,7 +152,7 @@ class CreateNetworkQosPolicy(
144
152
  class DeleteNetworkQosPolicy(command.Command):
145
153
  _description = _("Delete Qos Policy(s)")
146
154
 
147
- def get_parser(self, prog_name):
155
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
148
156
  parser = super().get_parser(prog_name)
149
157
  parser.add_argument(
150
158
  'policy',
@@ -154,7 +162,7 @@ class DeleteNetworkQosPolicy(command.Command):
154
162
  )
155
163
  return parser
156
164
 
157
- def take_action(self, parsed_args):
165
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
158
166
  client = self.app.client_manager.network
159
167
  result = 0
160
168
 
@@ -180,12 +188,10 @@ class DeleteNetworkQosPolicy(command.Command):
180
188
  raise exceptions.CommandError(msg)
181
189
 
182
190
 
183
- # TODO(abhiraut): Use only the SDK resource mapped attribute names once the
184
- # OSC minimum requirements include SDK 1.0.
185
191
  class ListNetworkQosPolicy(command.Lister):
186
192
  _description = _("List QoS policies")
187
193
 
188
- def get_parser(self, prog_name):
194
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
189
195
  parser = super().get_parser(prog_name)
190
196
  parser.add_argument(
191
197
  '--project',
@@ -207,9 +213,12 @@ class ListNetworkQosPolicy(command.Lister):
207
213
  action='store_true',
208
214
  help=_("List only QoS policies not shared between projects"),
209
215
  )
216
+ pagination.add_marker_pagination_option_to_parser(parser)
210
217
  return parser
211
218
 
212
- def take_action(self, parsed_args):
219
+ def take_action(
220
+ self, parsed_args: argparse.Namespace
221
+ ) -> tuple[tuple[str, ...], Iterable[tuple[Any, ...]]]:
213
222
  client = self.app.client_manager.network
214
223
  columns = (
215
224
  'id',
@@ -225,7 +234,16 @@ class ListNetworkQosPolicy(command.Lister):
225
234
  'Default',
226
235
  'Project',
227
236
  )
237
+
228
238
  attrs = _get_attrs(self.app.client_manager, parsed_args)
239
+
240
+ if parsed_args.marker is not None:
241
+ attrs['marker'] = parsed_args.marker
242
+ if parsed_args.limit is not None:
243
+ attrs['limit'] = parsed_args.limit
244
+ if parsed_args.max_items is not None:
245
+ attrs['max_items'] = parsed_args.max_items
246
+
229
247
  data = client.qos_policies(**attrs)
230
248
  return (
231
249
  column_headers,
@@ -240,12 +258,10 @@ class ListNetworkQosPolicy(command.Lister):
240
258
  )
241
259
 
242
260
 
243
- # TODO(abhiraut): Use the SDK resource mapped attribute names once the
244
- # OSC minimum requirements include SDK 1.0.
245
261
  class SetNetworkQosPolicy(common.NeutronCommandWithExtraArgs):
246
262
  _description = _("Set QoS policy properties")
247
263
 
248
- def get_parser(self, prog_name):
264
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
249
265
  parser = super().get_parser(prog_name)
250
266
  parser.add_argument(
251
267
  'policy',
@@ -284,7 +300,7 @@ class SetNetworkQosPolicy(common.NeutronCommandWithExtraArgs):
284
300
  )
285
301
  return parser
286
302
 
287
- def take_action(self, parsed_args):
303
+ def take_action(self, parsed_args: argparse.Namespace) -> None:
288
304
  client = self.app.client_manager.network
289
305
  obj = client.find_qos_policy(parsed_args.policy, ignore_missing=False)
290
306
  attrs = _get_attrs(self.app.client_manager, parsed_args)
@@ -297,7 +313,7 @@ class SetNetworkQosPolicy(common.NeutronCommandWithExtraArgs):
297
313
  class ShowNetworkQosPolicy(command.ShowOne):
298
314
  _description = _("Display QoS policy details")
299
315
 
300
- def get_parser(self, prog_name):
316
+ def get_parser(self, prog_name: str) -> argparse.ArgumentParser:
301
317
  parser = super().get_parser(prog_name)
302
318
  parser.add_argument(
303
319
  'policy',
@@ -306,7 +322,9 @@ class ShowNetworkQosPolicy(command.ShowOne):
306
322
  )
307
323
  return parser
308
324
 
309
- def take_action(self, parsed_args):
325
+ def take_action(
326
+ self, parsed_args: argparse.Namespace
327
+ ) -> tuple[Sequence[str], Iterable[Any]]:
310
328
  client = self.app.client_manager.network
311
329
  obj = client.find_qos_policy(parsed_args.policy, ignore_missing=False)
312
330
  display_columns, columns = _get_columns(obj)