python-openstackclient 6.6.1__py3-none-any.whl → 7.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 (336) hide show
  1. openstackclient/api/api.py +4 -4
  2. openstackclient/api/compute_v2.py +352 -638
  3. openstackclient/api/image_v1.py +1 -1
  4. openstackclient/api/object_store_v1.py +3 -4
  5. openstackclient/common/availability_zone.py +1 -1
  6. openstackclient/common/clientmanager.py +24 -20
  7. openstackclient/common/configuration.py +1 -1
  8. openstackclient/common/extension.py +1 -1
  9. openstackclient/common/limits.py +67 -34
  10. openstackclient/common/module.py +3 -3
  11. openstackclient/common/progressbar.py +2 -2
  12. openstackclient/common/project_cleanup.py +5 -2
  13. openstackclient/common/quota.py +299 -423
  14. openstackclient/common/versions.py +1 -1
  15. openstackclient/compute/client.py +7 -116
  16. openstackclient/compute/v2/agent.py +75 -49
  17. openstackclient/compute/v2/aggregate.py +38 -32
  18. openstackclient/compute/v2/console.py +2 -2
  19. openstackclient/compute/v2/flavor.py +6 -6
  20. openstackclient/compute/v2/host.py +38 -33
  21. openstackclient/compute/v2/hypervisor.py +9 -6
  22. openstackclient/compute/v2/keypair.py +7 -8
  23. openstackclient/compute/v2/server.py +479 -396
  24. openstackclient/compute/v2/server_backup.py +1 -1
  25. openstackclient/compute/v2/server_group.py +4 -4
  26. openstackclient/compute/v2/server_image.py +1 -1
  27. openstackclient/compute/v2/server_migration.py +3 -4
  28. openstackclient/compute/v2/service.py +4 -4
  29. openstackclient/compute/v2/usage.py +3 -3
  30. openstackclient/identity/common.py +34 -0
  31. openstackclient/identity/v2_0/catalog.py +2 -2
  32. openstackclient/identity/v2_0/ec2creds.py +4 -4
  33. openstackclient/identity/v2_0/endpoint.py +4 -4
  34. openstackclient/identity/v2_0/project.py +6 -6
  35. openstackclient/identity/v2_0/role.py +5 -5
  36. openstackclient/identity/v2_0/role_assignment.py +1 -1
  37. openstackclient/identity/v2_0/service.py +4 -4
  38. openstackclient/identity/v2_0/token.py +2 -2
  39. openstackclient/identity/v2_0/user.py +7 -7
  40. openstackclient/identity/v3/access_rule.py +3 -3
  41. openstackclient/identity/v3/application_credential.py +125 -43
  42. openstackclient/identity/v3/catalog.py +2 -2
  43. openstackclient/identity/v3/consumer.py +4 -4
  44. openstackclient/identity/v3/credential.py +5 -5
  45. openstackclient/identity/v3/domain.py +5 -5
  46. openstackclient/identity/v3/ec2creds.py +4 -4
  47. openstackclient/identity/v3/endpoint.py +7 -7
  48. openstackclient/identity/v3/endpoint_group.py +8 -10
  49. openstackclient/identity/v3/federation_protocol.py +5 -5
  50. openstackclient/identity/v3/group.py +8 -8
  51. openstackclient/identity/v3/identity_provider.py +5 -5
  52. openstackclient/identity/v3/implied_role.py +3 -3
  53. openstackclient/identity/v3/limit.py +5 -5
  54. openstackclient/identity/v3/mapping.py +5 -5
  55. openstackclient/identity/v3/policy.py +5 -5
  56. openstackclient/identity/v3/project.py +5 -5
  57. openstackclient/identity/v3/region.py +5 -5
  58. openstackclient/identity/v3/registered_limit.py +5 -5
  59. openstackclient/identity/v3/role.py +7 -7
  60. openstackclient/identity/v3/role_assignment.py +92 -140
  61. openstackclient/identity/v3/service.py +64 -34
  62. openstackclient/identity/v3/service_provider.py +4 -4
  63. openstackclient/identity/v3/tag.py +2 -2
  64. openstackclient/identity/v3/token.py +5 -5
  65. openstackclient/identity/v3/trust.py +3 -3
  66. openstackclient/identity/v3/user.py +144 -80
  67. openstackclient/image/client.py +4 -4
  68. openstackclient/image/v1/image.py +8 -9
  69. openstackclient/image/v2/cache.py +12 -10
  70. openstackclient/image/v2/metadef_objects.py +44 -0
  71. openstackclient/image/v2/metadef_resource_type_association.py +189 -0
  72. openstackclient/image/v2/task.py +1 -1
  73. openstackclient/network/common.py +6 -5
  74. openstackclient/network/utils.py +2 -2
  75. openstackclient/network/v2/address_group.py +6 -6
  76. openstackclient/network/v2/address_scope.py +5 -5
  77. openstackclient/network/v2/default_security_group_rule.py +1 -1
  78. openstackclient/network/v2/floating_ip.py +8 -10
  79. openstackclient/network/v2/floating_ip_pool.py +6 -15
  80. openstackclient/network/v2/floating_ip_port_forwarding.py +5 -13
  81. openstackclient/network/v2/ip_availability.py +2 -2
  82. openstackclient/network/v2/l3_conntrack_helper.py +5 -5
  83. openstackclient/network/v2/network.py +8 -8
  84. openstackclient/network/v2/network_agent.py +8 -8
  85. openstackclient/network/v2/network_auto_allocated_topology.py +2 -2
  86. openstackclient/network/v2/network_flavor.py +6 -8
  87. openstackclient/network/v2/network_flavor_profile.py +4 -4
  88. openstackclient/network/v2/network_meter.py +3 -3
  89. openstackclient/network/v2/network_meter_rule.py +3 -3
  90. openstackclient/network/v2/network_qos_policy.py +5 -5
  91. openstackclient/network/v2/network_qos_rule.py +9 -9
  92. openstackclient/network/v2/network_qos_rule_type.py +1 -1
  93. openstackclient/network/v2/network_rbac.py +5 -5
  94. openstackclient/network/v2/network_segment.py +5 -5
  95. openstackclient/network/v2/network_segment_range.py +7 -7
  96. openstackclient/network/v2/network_trunk.py +7 -7
  97. openstackclient/network/v2/port.py +26 -12
  98. openstackclient/network/v2/router.py +403 -54
  99. openstackclient/network/v2/security_group.py +18 -14
  100. openstackclient/network/v2/security_group_rule.py +18 -15
  101. openstackclient/network/v2/subnet.py +15 -8
  102. openstackclient/network/v2/subnet_pool.py +6 -6
  103. openstackclient/object/v1/account.py +2 -2
  104. openstackclient/object/v1/container.py +7 -7
  105. openstackclient/object/v1/object.py +7 -7
  106. openstackclient/releasenotes/notes/volume-backup-created-at-list-b49ec893ae1f6b0d.yaml +4 -0
  107. openstackclient/shell.py +4 -6
  108. openstackclient/tests/functional/base.py +1 -1
  109. openstackclient/tests/functional/common/test_extension.py +1 -1
  110. openstackclient/tests/functional/common/test_help.py +2 -2
  111. openstackclient/tests/functional/common/test_module.py +1 -1
  112. openstackclient/tests/functional/common/test_quota.py +43 -61
  113. openstackclient/tests/functional/compute/v2/common.py +2 -2
  114. openstackclient/tests/functional/compute/v2/test_flavor.py +2 -2
  115. openstackclient/tests/functional/compute/v2/test_keypair.py +1 -1
  116. openstackclient/tests/functional/compute/v2/test_server.py +5 -5
  117. openstackclient/tests/functional/compute/v2/test_server_event.py +1 -1
  118. openstackclient/tests/functional/identity/v2/common.py +3 -3
  119. openstackclient/tests/functional/identity/v3/common.py +12 -4
  120. openstackclient/tests/functional/identity/v3/test_application_credential.py +6 -12
  121. openstackclient/tests/functional/identity/v3/test_domain.py +1 -3
  122. openstackclient/tests/functional/identity/v3/test_endpoint.py +1 -1
  123. openstackclient/tests/functional/identity/v3/test_idp.py +1 -1
  124. openstackclient/tests/functional/identity/v3/test_region.py +1 -3
  125. openstackclient/tests/functional/identity/v3/test_role.py +2 -2
  126. openstackclient/tests/functional/identity/v3/test_role_assignment.py +210 -0
  127. openstackclient/tests/functional/identity/v3/test_service.py +1 -3
  128. openstackclient/tests/functional/identity/v3/test_service_provider.py +1 -3
  129. openstackclient/tests/functional/image/base.py +1 -1
  130. openstackclient/tests/functional/image/v2/test_image.py +1 -1
  131. openstackclient/tests/functional/image/v2/test_info.py +1 -1
  132. openstackclient/tests/functional/network/v2/common.py +4 -6
  133. openstackclient/tests/functional/network/v2/test_network.py +5 -3
  134. openstackclient/tests/functional/network/v2/test_network_agent.py +7 -5
  135. openstackclient/tests/functional/network/v2/test_network_qos_rule.py +4 -4
  136. openstackclient/tests/functional/network/v2/test_port.py +11 -7
  137. openstackclient/tests/functional/network/v2/test_router.py +2 -2
  138. openstackclient/tests/functional/object/v1/common.py +1 -1
  139. openstackclient/tests/functional/object/v1/test_container.py +3 -3
  140. openstackclient/tests/functional/object/v1/test_object.py +9 -13
  141. openstackclient/tests/functional/volume/base.py +1 -1
  142. openstackclient/tests/functional/volume/v1/test_service.py +1 -1
  143. openstackclient/tests/functional/volume/v1/test_snapshot.py +2 -2
  144. openstackclient/tests/functional/volume/v1/test_transfer_request.py +2 -2
  145. openstackclient/tests/functional/volume/v1/test_volume_type.py +1 -1
  146. openstackclient/tests/functional/volume/v2/test_service.py +2 -2
  147. openstackclient/tests/functional/volume/v2/test_volume_backup.py +2 -2
  148. openstackclient/tests/functional/volume/v2/test_volume_snapshot.py +2 -2
  149. openstackclient/tests/functional/volume/v2/test_volume_type.py +1 -1
  150. openstackclient/tests/functional/volume/v3/test_volume_snapshot.py +2 -2
  151. openstackclient/tests/functional/volume/v3/test_volume_type.py +1 -1
  152. openstackclient/tests/unit/api/fakes.py +1 -1
  153. openstackclient/tests/unit/api/test_api.py +2 -2
  154. openstackclient/tests/unit/api/test_compute_v2.py +522 -707
  155. openstackclient/tests/unit/api/test_image_v1.py +1 -1
  156. openstackclient/tests/unit/api/test_image_v2.py +1 -1
  157. openstackclient/tests/unit/api/test_object_store_v1.py +4 -4
  158. openstackclient/tests/unit/common/test_limits.py +73 -35
  159. openstackclient/tests/unit/common/test_logs.py +2 -2
  160. openstackclient/tests/unit/common/test_module.py +4 -2
  161. openstackclient/tests/unit/common/test_project_cleanup.py +31 -6
  162. openstackclient/tests/unit/common/test_quota.py +490 -630
  163. openstackclient/tests/unit/compute/v2/fakes.py +37 -286
  164. openstackclient/tests/unit/compute/v2/test_agent.py +189 -147
  165. openstackclient/tests/unit/compute/v2/test_aggregate.py +87 -57
  166. openstackclient/tests/unit/compute/v2/test_console.py +4 -5
  167. openstackclient/tests/unit/compute/v2/test_flavor.py +59 -68
  168. openstackclient/tests/unit/compute/v2/test_host.py +83 -54
  169. openstackclient/tests/unit/compute/v2/test_hypervisor.py +57 -34
  170. openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py +2 -2
  171. openstackclient/tests/unit/compute/v2/test_keypair.py +65 -50
  172. openstackclient/tests/unit/compute/v2/test_server.py +2850 -2453
  173. openstackclient/tests/unit/compute/v2/test_server_backup.py +1 -1
  174. openstackclient/tests/unit/compute/v2/test_server_event.py +14 -39
  175. openstackclient/tests/unit/compute/v2/test_server_group.py +28 -29
  176. openstackclient/tests/unit/compute/v2/test_server_migration.py +43 -68
  177. openstackclient/tests/unit/compute/v2/test_server_volume.py +17 -34
  178. openstackclient/tests/unit/compute/v2/test_service.py +34 -52
  179. openstackclient/tests/unit/compute/v2/test_usage.py +4 -4
  180. openstackclient/tests/unit/fakes.py +12 -12
  181. openstackclient/tests/unit/identity/v2_0/fakes.py +27 -10
  182. openstackclient/tests/unit/identity/v2_0/test_catalog.py +3 -3
  183. openstackclient/tests/unit/identity/v2_0/test_endpoint.py +7 -7
  184. openstackclient/tests/unit/identity/v2_0/test_project.py +8 -8
  185. openstackclient/tests/unit/identity/v2_0/test_role.py +10 -10
  186. openstackclient/tests/unit/identity/v2_0/test_role_assignment.py +4 -4
  187. openstackclient/tests/unit/identity/v2_0/test_service.py +6 -6
  188. openstackclient/tests/unit/identity/v2_0/test_token.py +4 -4
  189. openstackclient/tests/unit/identity/v2_0/test_user.py +8 -8
  190. openstackclient/tests/unit/identity/v3/fakes.py +59 -20
  191. openstackclient/tests/unit/identity/v3/test_access_rule.py +5 -5
  192. openstackclient/tests/unit/identity/v3/test_application_credential.py +207 -230
  193. openstackclient/tests/unit/identity/v3/test_catalog.py +3 -3
  194. openstackclient/tests/unit/identity/v3/test_consumer.py +7 -8
  195. openstackclient/tests/unit/identity/v3/test_credential.py +9 -9
  196. openstackclient/tests/unit/identity/v3/test_domain.py +8 -8
  197. openstackclient/tests/unit/identity/v3/test_endpoint.py +13 -13
  198. openstackclient/tests/unit/identity/v3/test_endpoint_group.py +12 -14
  199. openstackclient/tests/unit/identity/v3/test_group.py +12 -12
  200. openstackclient/tests/unit/identity/v3/test_identity_provider.py +8 -8
  201. openstackclient/tests/unit/identity/v3/test_implied_role.py +5 -5
  202. openstackclient/tests/unit/identity/v3/test_limit.py +7 -7
  203. openstackclient/tests/unit/identity/v3/test_mappings.py +7 -7
  204. openstackclient/tests/unit/identity/v3/test_oauth.py +5 -5
  205. openstackclient/tests/unit/identity/v3/test_project.py +16 -16
  206. openstackclient/tests/unit/identity/v3/test_protocol.py +7 -7
  207. openstackclient/tests/unit/identity/v3/test_region.py +7 -7
  208. openstackclient/tests/unit/identity/v3/test_registered_limit.py +12 -13
  209. openstackclient/tests/unit/identity/v3/test_role.py +13 -13
  210. openstackclient/tests/unit/identity/v3/test_role_assignment.py +410 -331
  211. openstackclient/tests/unit/identity/v3/test_service.py +90 -94
  212. openstackclient/tests/unit/identity/v3/test_service_provider.py +7 -7
  213. openstackclient/tests/unit/identity/v3/test_token.py +4 -4
  214. openstackclient/tests/unit/identity/v3/test_trust.py +9 -9
  215. openstackclient/tests/unit/identity/v3/test_unscoped_saml.py +4 -4
  216. openstackclient/tests/unit/identity/v3/test_user.py +299 -327
  217. openstackclient/tests/unit/image/v1/test_image.py +6 -6
  218. openstackclient/tests/unit/image/v2/fakes.py +46 -9
  219. openstackclient/tests/unit/image/v2/test_cache.py +2 -2
  220. openstackclient/tests/unit/image/v2/test_image.py +3 -3
  221. openstackclient/tests/unit/image/v2/test_metadef_objects.py +62 -0
  222. openstackclient/tests/unit/image/v2/test_metadef_resource_type_association.py +131 -0
  223. openstackclient/tests/unit/integ/base.py +1 -1
  224. openstackclient/tests/unit/integ/cli/test_project.py +4 -4
  225. openstackclient/tests/unit/integ/cli/test_shell.py +7 -7
  226. openstackclient/tests/unit/network/test_common.py +12 -21
  227. openstackclient/tests/unit/network/v2/fakes.py +64 -130
  228. openstackclient/tests/unit/network/v2/test_address_group.py +15 -15
  229. openstackclient/tests/unit/network/v2/test_address_scope.py +13 -13
  230. openstackclient/tests/unit/network/v2/test_default_security_group_rule.py +49 -27
  231. openstackclient/tests/unit/network/v2/test_floating_ip_compute.py +40 -38
  232. openstackclient/tests/unit/network/v2/test_floating_ip_network.py +15 -15
  233. openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py +4 -7
  234. openstackclient/tests/unit/network/v2/test_floating_ip_pool_network.py +3 -5
  235. openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +11 -11
  236. openstackclient/tests/unit/network/v2/test_ip_availability.py +6 -6
  237. openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py +11 -21
  238. openstackclient/tests/unit/network/v2/test_local_ip.py +7 -7
  239. openstackclient/tests/unit/network/v2/test_local_ip_association.py +3 -5
  240. openstackclient/tests/unit/network/v2/test_ndp_proxy.py +13 -13
  241. openstackclient/tests/unit/network/v2/test_network.py +23 -28
  242. openstackclient/tests/unit/network/v2/test_network_agent.py +17 -21
  243. openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py +8 -8
  244. openstackclient/tests/unit/network/v2/test_network_compute.py +66 -65
  245. openstackclient/tests/unit/network/v2/test_network_flavor.py +17 -19
  246. openstackclient/tests/unit/network/v2/test_network_flavor_profile.py +13 -13
  247. openstackclient/tests/unit/network/v2/test_network_meter.py +11 -11
  248. openstackclient/tests/unit/network/v2/test_network_meter_rule.py +11 -11
  249. openstackclient/tests/unit/network/v2/test_network_qos_policy.py +11 -21
  250. openstackclient/tests/unit/network/v2/test_network_qos_rule.py +51 -77
  251. openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py +5 -9
  252. openstackclient/tests/unit/network/v2/test_network_rbac.py +12 -12
  253. openstackclient/tests/unit/network/v2/test_network_segment.py +11 -15
  254. openstackclient/tests/unit/network/v2/test_network_segment_range.py +11 -13
  255. openstackclient/tests/unit/network/v2/test_network_service_provider.py +3 -5
  256. openstackclient/tests/unit/network/v2/test_network_trunk.py +11 -11
  257. openstackclient/tests/unit/network/v2/test_port.py +22 -25
  258. openstackclient/tests/unit/network/v2/test_router.py +721 -51
  259. openstackclient/tests/unit/network/v2/test_security_group_compute.py +65 -49
  260. openstackclient/tests/unit/network/v2/test_security_group_network.py +15 -15
  261. openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py +57 -45
  262. openstackclient/tests/unit/network/v2/test_security_group_rule_network.py +11 -19
  263. openstackclient/tests/unit/network/v2/test_subnet.py +29 -25
  264. openstackclient/tests/unit/network/v2/test_subnet_pool.py +15 -15
  265. openstackclient/tests/unit/object/v1/fakes.py +1 -1
  266. openstackclient/tests/unit/object/v1/test_container.py +5 -5
  267. openstackclient/tests/unit/object/v1/test_container_all.py +6 -6
  268. openstackclient/tests/unit/object/v1/test_object.py +3 -3
  269. openstackclient/tests/unit/object/v1/test_object_all.py +5 -5
  270. openstackclient/tests/unit/test_shell.py +5 -5
  271. openstackclient/tests/unit/utils.py +4 -1
  272. openstackclient/tests/unit/volume/test_find_resource.py +2 -2
  273. openstackclient/tests/unit/volume/v1/fakes.py +5 -6
  274. openstackclient/tests/unit/volume/v1/test_volume.py +5 -4
  275. openstackclient/tests/unit/volume/v2/fakes.py +39 -259
  276. openstackclient/tests/unit/volume/v2/test_consistency_group_snapshot.py +5 -5
  277. openstackclient/tests/unit/volume/v2/test_qos_specs.py +9 -9
  278. openstackclient/tests/unit/volume/v2/test_volume.py +21 -87
  279. openstackclient/tests/unit/volume/v2/test_volume_backup.py +10 -368
  280. openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +1 -1
  281. openstackclient/tests/unit/volume/v2/test_volume_transfer_request.py +0 -44
  282. openstackclient/tests/unit/volume/v2/test_volume_type.py +6 -87
  283. openstackclient/tests/unit/volume/v3/fakes.py +505 -22
  284. openstackclient/tests/unit/volume/v3/test_block_storage_cleanup.py +2 -3
  285. openstackclient/tests/unit/volume/v3/test_block_storage_cluster.py +10 -11
  286. openstackclient/tests/unit/volume/v3/test_block_storage_log_level.py +10 -6
  287. openstackclient/tests/unit/volume/v3/test_block_storage_manage.py +25 -17
  288. openstackclient/tests/unit/volume/v3/test_block_storage_resource_filter.py +6 -32
  289. openstackclient/tests/unit/volume/v3/test_service.py +271 -0
  290. openstackclient/tests/unit/volume/v3/test_volume.py +2177 -33
  291. openstackclient/tests/unit/volume/v3/test_volume_attachment.py +48 -52
  292. openstackclient/tests/unit/volume/v3/test_volume_backup.py +892 -0
  293. openstackclient/tests/unit/volume/v3/test_volume_group.py +19 -20
  294. openstackclient/tests/unit/volume/v3/test_volume_group_snapshot.py +14 -34
  295. openstackclient/tests/unit/volume/v3/test_volume_group_type.py +13 -16
  296. openstackclient/tests/unit/volume/v3/test_volume_message.py +10 -11
  297. openstackclient/tests/unit/volume/v3/test_volume_snapshot.py +161 -0
  298. openstackclient/tests/unit/volume/v3/test_volume_transfer_request.py +425 -0
  299. openstackclient/tests/unit/volume/v3/test_volume_type.py +1109 -0
  300. openstackclient/volume/v1/qos_specs.py +7 -7
  301. openstackclient/volume/v1/service.py +2 -2
  302. openstackclient/volume/v1/volume.py +12 -12
  303. openstackclient/volume/v1/volume_backup.py +7 -7
  304. openstackclient/volume/v1/volume_snapshot.py +8 -8
  305. openstackclient/volume/v1/volume_transfer_request.py +5 -5
  306. openstackclient/volume/v1/volume_type.py +7 -7
  307. openstackclient/volume/v2/backup_record.py +2 -2
  308. openstackclient/volume/v2/consistency_group.py +7 -9
  309. openstackclient/volume/v2/consistency_group_snapshot.py +4 -12
  310. openstackclient/volume/v2/qos_specs.py +7 -7
  311. openstackclient/volume/v2/service.py +2 -2
  312. openstackclient/volume/v2/volume.py +80 -80
  313. openstackclient/volume/v2/volume_backend.py +2 -2
  314. openstackclient/volume/v2/volume_backup.py +9 -217
  315. openstackclient/volume/v2/volume_host.py +2 -2
  316. openstackclient/volume/v2/volume_snapshot.py +8 -8
  317. openstackclient/volume/v2/volume_transfer_request.py +5 -37
  318. openstackclient/volume/v2/volume_type.py +7 -89
  319. openstackclient/volume/v3/service.py +56 -0
  320. openstackclient/volume/v3/volume.py +971 -0
  321. openstackclient/volume/v3/volume_attachment.py +31 -29
  322. openstackclient/volume/v3/volume_backup.py +670 -0
  323. openstackclient/volume/v3/volume_message.py +1 -1
  324. openstackclient/volume/v3/volume_snapshot.py +97 -0
  325. openstackclient/volume/v3/volume_transfer_request.py +233 -0
  326. openstackclient/volume/v3/volume_type.py +967 -0
  327. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/AUTHORS +6 -0
  328. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/METADATA +4 -4
  329. python_openstackclient-7.1.0.dist-info/RECORD +503 -0
  330. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/entry_points.txt +33 -27
  331. python_openstackclient-7.1.0.dist-info/pbr.json +1 -0
  332. python_openstackclient-6.6.1.dist-info/RECORD +0 -489
  333. python_openstackclient-6.6.1.dist-info/pbr.json +0 -1
  334. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/LICENSE +0 -0
  335. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/WHEEL +0 -0
  336. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.1.0.dist-info}/top_level.txt +0 -0
@@ -33,7 +33,7 @@ class CreateServerBackup(command.ShowOne):
33
33
  }
34
34
 
35
35
  def get_parser(self, prog_name):
36
- parser = super(CreateServerBackup, self).get_parser(prog_name)
36
+ parser = super().get_parser(prog_name)
37
37
  parser.add_argument(
38
38
  'server',
39
39
  metavar='<server>',
@@ -56,7 +56,7 @@ class CreateServerGroup(command.ShowOne):
56
56
  _description = _("Create a new server group.")
57
57
 
58
58
  def get_parser(self, prog_name):
59
- parser = super(CreateServerGroup, self).get_parser(prog_name)
59
+ parser = super().get_parser(prog_name)
60
60
  parser.add_argument(
61
61
  'name',
62
62
  metavar='<name>',
@@ -143,7 +143,7 @@ class DeleteServerGroup(command.Command):
143
143
  _description = _("Delete existing server group(s).")
144
144
 
145
145
  def get_parser(self, prog_name):
146
- parser = super(DeleteServerGroup, self).get_parser(prog_name)
146
+ parser = super().get_parser(prog_name)
147
147
  parser.add_argument(
148
148
  'server_group',
149
149
  metavar='<server-group>',
@@ -178,7 +178,7 @@ class ListServerGroup(command.Lister):
178
178
  _description = _("List all server groups.")
179
179
 
180
180
  def get_parser(self, prog_name):
181
- parser = super(ListServerGroup, self).get_parser(prog_name)
181
+ parser = super().get_parser(prog_name)
182
182
  parser.add_argument(
183
183
  '--all-projects',
184
184
  action='store_true',
@@ -255,7 +255,7 @@ class ShowServerGroup(command.ShowOne):
255
255
  _description = _("Display server group details.")
256
256
 
257
257
  def get_parser(self, prog_name):
258
- parser = super(ShowServerGroup, self).get_parser(prog_name)
258
+ parser = super().get_parser(prog_name)
259
259
  parser.add_argument(
260
260
  'server_group',
261
261
  metavar='<server-group>',
@@ -38,7 +38,7 @@ class CreateServerImage(command.ShowOne):
38
38
  }
39
39
 
40
40
  def get_parser(self, prog_name):
41
- parser = super(CreateServerImage, self).get_parser(prog_name)
41
+ parser = super().get_parser(prog_name)
42
42
  parser.add_argument(
43
43
  'server',
44
44
  metavar='<server>',
@@ -28,7 +28,7 @@ class ListMigration(command.Lister):
28
28
  _description = _("""List server migrations""")
29
29
 
30
30
  def get_parser(self, prog_name):
31
- parser = super(ListMigration, self).get_parser(prog_name)
31
+ parser = super().get_parser(prog_name)
32
32
  parser.add_argument(
33
33
  '--server',
34
34
  metavar='<server>',
@@ -252,7 +252,6 @@ def _get_migration_by_uuid(compute_client, server_id, migration_uuid):
252
252
  for migration in compute_client.server_migrations(server_id):
253
253
  if migration.uuid == migration_uuid:
254
254
  return migration
255
- break
256
255
  else:
257
256
  msg = _('In-progress live migration %s is not found for server %s.')
258
257
  raise exceptions.CommandError(msg % (migration_uuid, server_id))
@@ -382,7 +381,7 @@ class AbortMigration(command.Command):
382
381
  """
383
382
 
384
383
  def get_parser(self, prog_name):
385
- parser = super(AbortMigration, self).get_parser(prog_name)
384
+ parser = super().get_parser(prog_name)
386
385
  parser.add_argument(
387
386
  'server',
388
387
  metavar='<server>',
@@ -449,7 +448,7 @@ class ForceCompleteMigration(command.Command):
449
448
  """
450
449
 
451
450
  def get_parser(self, prog_name):
452
- parser = super(ForceCompleteMigration, self).get_parser(prog_name)
451
+ parser = super().get_parser(prog_name)
453
452
  parser.add_argument(
454
453
  'server',
455
454
  metavar='<server>',
@@ -32,7 +32,7 @@ class DeleteService(command.Command):
32
32
  _description = _("Delete compute service(s)")
33
33
 
34
34
  def get_parser(self, prog_name):
35
- parser = super(DeleteService, self).get_parser(prog_name)
35
+ parser = super().get_parser(prog_name)
36
36
  parser.add_argument(
37
37
  "service",
38
38
  metavar="<service>",
@@ -85,7 +85,7 @@ deployment."""
85
85
  )
86
86
 
87
87
  def get_parser(self, prog_name):
88
- parser = super(ListService, self).get_parser(prog_name)
88
+ parser = super().get_parser(prog_name)
89
89
  parser.add_argument(
90
90
  "--host",
91
91
  metavar="<host>",
@@ -147,7 +147,7 @@ class SetService(command.Command):
147
147
  _description = _("Set compute service properties")
148
148
 
149
149
  def get_parser(self, prog_name):
150
- parser = super(SetService, self).get_parser(prog_name)
150
+ parser = super().get_parser(prog_name)
151
151
  parser.add_argument("host", metavar="<host>", help=_("Name of host"))
152
152
  parser.add_argument(
153
153
  "service",
@@ -198,7 +198,7 @@ class SetService(command.Command):
198
198
 
199
199
  :param host: the name of the compute service host
200
200
  :param binary: the compute service binary, e.g. nova-compute
201
- :returns: novaclient.v2.services.Service dict-like object
201
+ :returns: The service.
202
202
  :raises: CommandError if no or multiple results were found
203
203
  """
204
204
  services = list(compute_client.services(host=host, binary=binary))
@@ -109,7 +109,7 @@ class ListUsage(command.Lister):
109
109
  _description = _("List resource usage per project")
110
110
 
111
111
  def get_parser(self, prog_name):
112
- parser = super(ListUsage, self).get_parser(prog_name)
112
+ parser = super().get_parser(prog_name)
113
113
  parser.add_argument(
114
114
  "--start",
115
115
  metavar="<start>",
@@ -182,7 +182,7 @@ class ListUsage(command.Lister):
182
182
  project_cache[p.id] = p
183
183
  except Exception:
184
184
  # Just forget it if there's any trouble
185
- pass
185
+ pass # nosec: B110
186
186
 
187
187
  if parsed_args.formatter == 'table' and len(usage_list) > 0:
188
188
  self.app.stdout.write(
@@ -210,7 +210,7 @@ class ShowUsage(command.ShowOne):
210
210
  _description = _("Show resource usage for a single project")
211
211
 
212
212
  def get_parser(self, prog_name):
213
- parser = super(ShowUsage, self).get_parser(prog_name)
213
+ parser = super().get_parser(prog_name)
214
214
  parser.add_argument(
215
215
  "--project",
216
216
  metavar="<project>",
@@ -20,6 +20,7 @@ from keystoneclient.v3 import domains
20
20
  from keystoneclient.v3 import groups
21
21
  from keystoneclient.v3 import projects
22
22
  from keystoneclient.v3 import users
23
+ from openstack import exceptions as sdk_exceptions
23
24
  from osc_lib import exceptions
24
25
  from osc_lib import utils
25
26
 
@@ -73,6 +74,39 @@ def find_service(identity_client, name_type_or_id):
73
74
  raise exceptions.CommandError(msg % name_type_or_id)
74
75
 
75
76
 
77
+ def find_service_sdk(identity_client, name_type_or_id):
78
+ """Find a service by id, name or type."""
79
+
80
+ try:
81
+ # search for service name or ID
82
+ return identity_client.find_service(
83
+ name_type_or_id, ignore_missing=False
84
+ )
85
+ except sdk_exceptions.ResourceNotFound:
86
+ pass
87
+ except sdk_exceptions.DuplicateResource as e:
88
+ raise exceptions.CommandError(e.message)
89
+
90
+ # search for service type
91
+ services = identity_client.services()
92
+ result = None
93
+ for service in services:
94
+ if name_type_or_id == service.type:
95
+ if result:
96
+ msg = _(
97
+ "Multiple service matches found for '%s', "
98
+ "use an ID or name to be more specific."
99
+ )
100
+ raise exceptions.CommandError(msg % name_type_or_id)
101
+ result = service
102
+
103
+ if result is None:
104
+ msg = _("No service with a type, name or ID of '%s' exists.")
105
+ raise exceptions.CommandError(msg % name_type_or_id)
106
+
107
+ return result
108
+
109
+
76
110
  def get_resource(manager, name_type_or_id):
77
111
  # NOTE (vishakha): Due to bug #1799153 and for any another related case
78
112
  # where GET resource API does not support the filter by name,
@@ -39,7 +39,7 @@ class EndpointsColumn(cliff_columns.FormattableColumn):
39
39
  for endpoint_type in ['publicURL', 'internalURL', 'adminURL']:
40
40
  url = ep.get(endpoint_type)
41
41
  if url:
42
- ret += " %s: %s\n" % (endpoint_type, url)
42
+ ret += f" {endpoint_type}: {url}\n"
43
43
  return ret
44
44
 
45
45
 
@@ -75,7 +75,7 @@ class ShowCatalog(command.ShowOne):
75
75
  _description = _("Display service catalog details")
76
76
 
77
77
  def get_parser(self, prog_name):
78
- parser = super(ShowCatalog, self).get_parser(prog_name)
78
+ parser = super().get_parser(prog_name)
79
79
  parser.add_argument(
80
80
  'service',
81
81
  metavar='<service>',
@@ -32,7 +32,7 @@ class CreateEC2Creds(command.ShowOne):
32
32
  _description = _("Create EC2 credentials")
33
33
 
34
34
  def get_parser(self, prog_name):
35
- parser = super(CreateEC2Creds, self).get_parser(prog_name)
35
+ parser = super().get_parser(prog_name)
36
36
  parser.add_argument(
37
37
  '--project',
38
38
  metavar='<project>',
@@ -86,7 +86,7 @@ class DeleteEC2Creds(command.Command):
86
86
  _description = _("Delete EC2 credentials")
87
87
 
88
88
  def get_parser(self, prog_name):
89
- parser = super(DeleteEC2Creds, self).get_parser(prog_name)
89
+ parser = super().get_parser(prog_name)
90
90
  parser.add_argument(
91
91
  'access_keys',
92
92
  metavar='<access-key>',
@@ -138,7 +138,7 @@ class ListEC2Creds(command.Lister):
138
138
  _description = _("List EC2 credentials")
139
139
 
140
140
  def get_parser(self, prog_name):
141
- parser = super(ListEC2Creds, self).get_parser(prog_name)
141
+ parser = super().get_parser(prog_name)
142
142
  parser.add_argument(
143
143
  '--user',
144
144
  metavar='<user>',
@@ -179,7 +179,7 @@ class ShowEC2Creds(command.ShowOne):
179
179
  _description = _("Display EC2 credentials details")
180
180
 
181
181
  def get_parser(self, prog_name):
182
- parser = super(ShowEC2Creds, self).get_parser(prog_name)
182
+ parser = super().get_parser(prog_name)
183
183
  parser.add_argument(
184
184
  'access_key',
185
185
  metavar='<access-key>',
@@ -32,7 +32,7 @@ class CreateEndpoint(command.ShowOne):
32
32
  _description = _("Create new endpoint")
33
33
 
34
34
  def get_parser(self, prog_name):
35
- parser = super(CreateEndpoint, self).get_parser(prog_name)
35
+ parser = super().get_parser(prog_name)
36
36
  parser.add_argument(
37
37
  'service',
38
38
  metavar='<service>',
@@ -83,7 +83,7 @@ class DeleteEndpoint(command.Command):
83
83
  _description = _("Delete endpoint(s)")
84
84
 
85
85
  def get_parser(self, prog_name):
86
- parser = super(DeleteEndpoint, self).get_parser(prog_name)
86
+ parser = super().get_parser(prog_name)
87
87
  parser.add_argument(
88
88
  'endpoints',
89
89
  metavar='<endpoint-id>',
@@ -121,7 +121,7 @@ class ListEndpoint(command.Lister):
121
121
  _description = _("List endpoints")
122
122
 
123
123
  def get_parser(self, prog_name):
124
- parser = super(ListEndpoint, self).get_parser(prog_name)
124
+ parser = super().get_parser(prog_name)
125
125
  parser.add_argument(
126
126
  '--long',
127
127
  action='store_true',
@@ -167,7 +167,7 @@ class ShowEndpoint(command.ShowOne):
167
167
  _description = _("Display endpoint details")
168
168
 
169
169
  def get_parser(self, prog_name):
170
- parser = super(ShowEndpoint, self).get_parser(prog_name)
170
+ parser = super().get_parser(prog_name)
171
171
  parser.add_argument(
172
172
  'endpoint_or_service',
173
173
  metavar='<endpoint>',
@@ -34,7 +34,7 @@ class CreateProject(command.ShowOne):
34
34
  _description = _("Create new project")
35
35
 
36
36
  def get_parser(self, prog_name):
37
- parser = super(CreateProject, self).get_parser(prog_name)
37
+ parser = super().get_parser(prog_name)
38
38
  parser.add_argument(
39
39
  'name',
40
40
  metavar='<project-name>',
@@ -108,7 +108,7 @@ class DeleteProject(command.Command):
108
108
  _description = _("Delete project(s)")
109
109
 
110
110
  def get_parser(self, prog_name):
111
- parser = super(DeleteProject, self).get_parser(prog_name)
111
+ parser = super().get_parser(prog_name)
112
112
  parser.add_argument(
113
113
  'projects',
114
114
  metavar='<project>',
@@ -150,7 +150,7 @@ class ListProject(command.Lister):
150
150
  _description = _("List projects")
151
151
 
152
152
  def get_parser(self, prog_name):
153
- parser = super(ListProject, self).get_parser(prog_name)
153
+ parser = super().get_parser(prog_name)
154
154
  parser.add_argument(
155
155
  '--long',
156
156
  action='store_true',
@@ -193,7 +193,7 @@ class SetProject(command.Command):
193
193
  _description = _("Set project properties")
194
194
 
195
195
  def get_parser(self, prog_name):
196
- parser = super(SetProject, self).get_parser(prog_name)
196
+ parser = super().get_parser(prog_name)
197
197
  parser.add_argument(
198
198
  'project',
199
199
  metavar='<project>',
@@ -264,7 +264,7 @@ class ShowProject(command.ShowOne):
264
264
  _description = _("Display project details")
265
265
 
266
266
  def get_parser(self, prog_name):
267
- parser = super(ShowProject, self).get_parser(prog_name)
267
+ parser = super().get_parser(prog_name)
268
268
  parser.add_argument(
269
269
  'project',
270
270
  metavar='<project>',
@@ -322,7 +322,7 @@ class UnsetProject(command.Command):
322
322
  _description = _("Unset project properties")
323
323
 
324
324
  def get_parser(self, prog_name):
325
- parser = super(UnsetProject, self).get_parser(prog_name)
325
+ parser = super().get_parser(prog_name)
326
326
  parser.add_argument(
327
327
  'project',
328
328
  metavar='<project>',
@@ -32,7 +32,7 @@ class AddRole(command.ShowOne):
32
32
  _description = _("Add role to project:user")
33
33
 
34
34
  def get_parser(self, prog_name):
35
- parser = super(AddRole, self).get_parser(prog_name)
35
+ parser = super().get_parser(prog_name)
36
36
  parser.add_argument(
37
37
  'role',
38
38
  metavar='<role>',
@@ -75,7 +75,7 @@ class CreateRole(command.ShowOne):
75
75
  _description = _("Create new role")
76
76
 
77
77
  def get_parser(self, prog_name):
78
- parser = super(CreateRole, self).get_parser(prog_name)
78
+ parser = super().get_parser(prog_name)
79
79
  parser.add_argument(
80
80
  'role_name',
81
81
  metavar='<name>',
@@ -111,7 +111,7 @@ class DeleteRole(command.Command):
111
111
  _description = _("Delete role(s)")
112
112
 
113
113
  def get_parser(self, prog_name):
114
- parser = super(DeleteRole, self).get_parser(prog_name)
114
+ parser = super().get_parser(prog_name)
115
115
  parser.add_argument(
116
116
  'roles',
117
117
  metavar='<role>',
@@ -176,7 +176,7 @@ class RemoveRole(command.Command):
176
176
  _description = _("Remove role from project : user")
177
177
 
178
178
  def get_parser(self, prog_name):
179
- parser = super(RemoveRole, self).get_parser(prog_name)
179
+ parser = super().get_parser(prog_name)
180
180
  parser.add_argument(
181
181
  'role',
182
182
  metavar='<role>',
@@ -211,7 +211,7 @@ class ShowRole(command.ShowOne):
211
211
  _description = _("Display role details")
212
212
 
213
213
  def get_parser(self, prog_name):
214
- parser = super(ShowRole, self).get_parser(prog_name)
214
+ parser = super().get_parser(prog_name)
215
215
  parser.add_argument(
216
216
  'role',
217
217
  metavar='<role>',
@@ -24,7 +24,7 @@ class ListRoleAssignment(command.Lister):
24
24
  _description = _("List role assignments")
25
25
 
26
26
  def get_parser(self, prog_name):
27
- parser = super(ListRoleAssignment, self).get_parser(prog_name)
27
+ parser = super().get_parser(prog_name)
28
28
  parser.add_argument(
29
29
  '--user',
30
30
  metavar='<user>',
@@ -32,7 +32,7 @@ class CreateService(command.ShowOne):
32
32
  _description = _("Create new service")
33
33
 
34
34
  def get_parser(self, prog_name):
35
- parser = super(CreateService, self).get_parser(prog_name)
35
+ parser = super().get_parser(prog_name)
36
36
  parser.add_argument(
37
37
  'type',
38
38
  metavar='<type>',
@@ -71,7 +71,7 @@ class DeleteService(command.Command):
71
71
  _description = _("Delete service(s)")
72
72
 
73
73
  def get_parser(self, prog_name):
74
- parser = super(DeleteService, self).get_parser(prog_name)
74
+ parser = super().get_parser(prog_name)
75
75
  parser.add_argument(
76
76
  'services',
77
77
  metavar='<service>',
@@ -110,7 +110,7 @@ class ListService(command.Lister):
110
110
  _description = _("List services")
111
111
 
112
112
  def get_parser(self, prog_name):
113
- parser = super(ListService, self).get_parser(prog_name)
113
+ parser = super().get_parser(prog_name)
114
114
  parser.add_argument(
115
115
  '--long',
116
116
  action='store_true',
@@ -135,7 +135,7 @@ class ShowService(command.ShowOne):
135
135
  _description = _("Display service details")
136
136
 
137
137
  def get_parser(self, prog_name):
138
- parser = super(ShowService, self).get_parser(prog_name)
138
+ parser = super().get_parser(prog_name)
139
139
  parser.add_argument(
140
140
  'service',
141
141
  metavar='<service>',
@@ -28,7 +28,7 @@ class IssueToken(command.ShowOne):
28
28
  required_scope = False
29
29
 
30
30
  def get_parser(self, prog_name):
31
- parser = super(IssueToken, self).get_parser(prog_name)
31
+ parser = super().get_parser(prog_name)
32
32
  return parser
33
33
 
34
34
  def take_action(self, parsed_args):
@@ -56,7 +56,7 @@ class RevokeToken(command.Command):
56
56
  _description = _("Revoke existing token")
57
57
 
58
58
  def get_parser(self, prog_name):
59
- parser = super(RevokeToken, self).get_parser(prog_name)
59
+ parser = super().get_parser(prog_name)
60
60
  parser.add_argument(
61
61
  'token',
62
62
  metavar='<token>',
@@ -42,7 +42,7 @@ class ProjectColumn(cliff_columns.FormattableColumn):
42
42
  """
43
43
 
44
44
  def __init__(self, value, project_cache=None):
45
- super(ProjectColumn, self).__init__(value)
45
+ super().__init__(value)
46
46
  self.project_cache = project_cache or {}
47
47
 
48
48
  def human_readable(self):
@@ -59,7 +59,7 @@ class CreateUser(command.ShowOne):
59
59
  _description = _("Create new user")
60
60
 
61
61
  def get_parser(self, prog_name):
62
- parser = super(CreateUser, self).get_parser(prog_name)
62
+ parser = super().get_parser(prog_name)
63
63
  parser.add_argument(
64
64
  'name',
65
65
  metavar='<name>',
@@ -162,7 +162,7 @@ class DeleteUser(command.Command):
162
162
  _description = _("Delete user(s)")
163
163
 
164
164
  def get_parser(self, prog_name):
165
- parser = super(DeleteUser, self).get_parser(prog_name)
165
+ parser = super().get_parser(prog_name)
166
166
  parser.add_argument(
167
167
  'users',
168
168
  metavar='<user>',
@@ -205,7 +205,7 @@ class ListUser(command.Lister):
205
205
  _description = _("List users")
206
206
 
207
207
  def get_parser(self, prog_name):
208
- parser = super(ListUser, self).get_parser(prog_name)
208
+ parser = super().get_parser(prog_name)
209
209
  parser.add_argument(
210
210
  '--project',
211
211
  metavar='<project>',
@@ -252,7 +252,7 @@ class ListUser(command.Lister):
252
252
  project_cache[p.id] = p
253
253
  except Exception:
254
254
  # Just forget it if there's any trouble
255
- pass
255
+ pass # nosec: B110
256
256
  formatters['tenantId'] = functools.partial(
257
257
  ProjectColumn, project_cache=project_cache
258
258
  )
@@ -294,7 +294,7 @@ class SetUser(command.Command):
294
294
  _description = _("Set user properties")
295
295
 
296
296
  def get_parser(self, prog_name):
297
- parser = super(SetUser, self).get_parser(prog_name)
297
+ parser = super().get_parser(prog_name)
298
298
  parser.add_argument(
299
299
  'user',
300
300
  metavar='<user>',
@@ -392,7 +392,7 @@ class ShowUser(command.ShowOne):
392
392
  _description = _("Display user details")
393
393
 
394
394
  def get_parser(self, prog_name):
395
- parser = super(ShowUser, self).get_parser(prog_name)
395
+ parser = super().get_parser(prog_name)
396
396
  parser.add_argument(
397
397
  'user',
398
398
  metavar='<user>',
@@ -32,7 +32,7 @@ class DeleteAccessRule(command.Command):
32
32
  _description = _("Delete access rule(s)")
33
33
 
34
34
  def get_parser(self, prog_name):
35
- parser = super(DeleteAccessRule, self).get_parser(prog_name)
35
+ parser = super().get_parser(prog_name)
36
36
  parser.add_argument(
37
37
  'access_rule',
38
38
  metavar='<access-rule>',
@@ -73,7 +73,7 @@ class ListAccessRule(command.Lister):
73
73
  _description = _("List access rules")
74
74
 
75
75
  def get_parser(self, prog_name):
76
- parser = super(ListAccessRule, self).get_parser(prog_name)
76
+ parser = super().get_parser(prog_name)
77
77
  parser.add_argument(
78
78
  '--user',
79
79
  metavar='<user>',
@@ -110,7 +110,7 @@ class ShowAccessRule(command.ShowOne):
110
110
  _description = _("Display access rule details")
111
111
 
112
112
  def get_parser(self, prog_name):
113
- parser = super(ShowAccessRule, self).get_parser(prog_name)
113
+ parser = super().get_parser(prog_name)
114
114
  parser.add_argument(
115
115
  'access_rule',
116
116
  metavar='<access-rule>',