python-openstackclient 6.6.1__py3-none-any.whl → 7.0.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 (337) 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 +16 -4
  7. openstackclient/common/configuration.py +1 -1
  8. openstackclient/common/extension.py +1 -1
  9. openstackclient/common/limits.py +66 -32
  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 +281 -410
  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 +9 -9
  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 +4 -3
  22. openstackclient/compute/v2/keypair.py +7 -8
  23. openstackclient/compute/v2/server.py +478 -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 +127 -45
  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/shell.py +4 -6
  107. openstackclient/tests/functional/base.py +1 -1
  108. openstackclient/tests/functional/common/test_extension.py +1 -1
  109. openstackclient/tests/functional/common/test_help.py +2 -2
  110. openstackclient/tests/functional/common/test_module.py +1 -1
  111. openstackclient/tests/functional/common/test_quota.py +43 -61
  112. openstackclient/tests/functional/compute/v2/common.py +2 -2
  113. openstackclient/tests/functional/compute/v2/test_flavor.py +2 -2
  114. openstackclient/tests/functional/compute/v2/test_keypair.py +1 -1
  115. openstackclient/tests/functional/compute/v2/test_server.py +5 -5
  116. openstackclient/tests/functional/compute/v2/test_server_event.py +1 -1
  117. openstackclient/tests/functional/identity/v2/common.py +3 -3
  118. openstackclient/tests/functional/identity/v3/common.py +14 -6
  119. openstackclient/tests/functional/identity/v3/test_application_credential.py +13 -19
  120. openstackclient/tests/functional/identity/v3/test_domain.py +1 -3
  121. openstackclient/tests/functional/identity/v3/test_endpoint.py +1 -1
  122. openstackclient/tests/functional/identity/v3/test_idp.py +1 -1
  123. openstackclient/tests/functional/identity/v3/test_limit.py +2 -2
  124. openstackclient/tests/functional/identity/v3/test_region.py +1 -3
  125. openstackclient/tests/functional/identity/v3/test_registered_limit.py +1 -1
  126. openstackclient/tests/functional/identity/v3/test_role.py +2 -2
  127. openstackclient/tests/functional/identity/v3/test_role_assignment.py +210 -0
  128. openstackclient/tests/functional/identity/v3/test_service.py +4 -6
  129. openstackclient/tests/functional/identity/v3/test_service_provider.py +1 -3
  130. openstackclient/tests/functional/image/base.py +1 -1
  131. openstackclient/tests/functional/image/v2/test_image.py +1 -1
  132. openstackclient/tests/functional/image/v2/test_info.py +1 -1
  133. openstackclient/tests/functional/network/v2/common.py +4 -6
  134. openstackclient/tests/functional/network/v2/test_network.py +5 -3
  135. openstackclient/tests/functional/network/v2/test_network_agent.py +7 -5
  136. openstackclient/tests/functional/network/v2/test_network_qos_rule.py +4 -4
  137. openstackclient/tests/functional/network/v2/test_port.py +11 -7
  138. openstackclient/tests/functional/network/v2/test_router.py +2 -2
  139. openstackclient/tests/functional/object/v1/common.py +1 -1
  140. openstackclient/tests/functional/object/v1/test_container.py +3 -3
  141. openstackclient/tests/functional/object/v1/test_object.py +9 -13
  142. openstackclient/tests/functional/volume/base.py +1 -1
  143. openstackclient/tests/functional/volume/v1/test_service.py +1 -1
  144. openstackclient/tests/functional/volume/v1/test_snapshot.py +2 -2
  145. openstackclient/tests/functional/volume/v1/test_transfer_request.py +2 -2
  146. openstackclient/tests/functional/volume/v1/test_volume_type.py +1 -1
  147. openstackclient/tests/functional/volume/v2/test_service.py +2 -2
  148. openstackclient/tests/functional/volume/v2/test_volume_backup.py +2 -2
  149. openstackclient/tests/functional/volume/v2/test_volume_snapshot.py +2 -2
  150. openstackclient/tests/functional/volume/v2/test_volume_type.py +1 -1
  151. openstackclient/tests/functional/volume/v3/test_volume_snapshot.py +2 -2
  152. openstackclient/tests/functional/volume/v3/test_volume_type.py +1 -1
  153. openstackclient/tests/unit/api/fakes.py +1 -1
  154. openstackclient/tests/unit/api/test_api.py +2 -2
  155. openstackclient/tests/unit/api/test_compute_v2.py +522 -707
  156. openstackclient/tests/unit/api/test_image_v1.py +1 -1
  157. openstackclient/tests/unit/api/test_image_v2.py +1 -1
  158. openstackclient/tests/unit/api/test_object_store_v1.py +4 -4
  159. openstackclient/tests/unit/common/test_limits.py +73 -35
  160. openstackclient/tests/unit/common/test_logs.py +2 -2
  161. openstackclient/tests/unit/common/test_module.py +4 -2
  162. openstackclient/tests/unit/common/test_project_cleanup.py +31 -6
  163. openstackclient/tests/unit/common/test_quota.py +490 -630
  164. openstackclient/tests/unit/compute/v2/fakes.py +37 -286
  165. openstackclient/tests/unit/compute/v2/test_agent.py +189 -147
  166. openstackclient/tests/unit/compute/v2/test_aggregate.py +18 -16
  167. openstackclient/tests/unit/compute/v2/test_console.py +4 -5
  168. openstackclient/tests/unit/compute/v2/test_flavor.py +59 -68
  169. openstackclient/tests/unit/compute/v2/test_host.py +83 -54
  170. openstackclient/tests/unit/compute/v2/test_hypervisor.py +28 -31
  171. openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py +2 -2
  172. openstackclient/tests/unit/compute/v2/test_keypair.py +65 -50
  173. openstackclient/tests/unit/compute/v2/test_server.py +2895 -2459
  174. openstackclient/tests/unit/compute/v2/test_server_backup.py +1 -1
  175. openstackclient/tests/unit/compute/v2/test_server_event.py +14 -39
  176. openstackclient/tests/unit/compute/v2/test_server_group.py +28 -29
  177. openstackclient/tests/unit/compute/v2/test_server_migration.py +43 -68
  178. openstackclient/tests/unit/compute/v2/test_server_volume.py +17 -34
  179. openstackclient/tests/unit/compute/v2/test_service.py +34 -52
  180. openstackclient/tests/unit/compute/v2/test_usage.py +4 -4
  181. openstackclient/tests/unit/fakes.py +11 -11
  182. openstackclient/tests/unit/identity/v2_0/fakes.py +27 -10
  183. openstackclient/tests/unit/identity/v2_0/test_catalog.py +3 -3
  184. openstackclient/tests/unit/identity/v2_0/test_endpoint.py +7 -7
  185. openstackclient/tests/unit/identity/v2_0/test_project.py +8 -8
  186. openstackclient/tests/unit/identity/v2_0/test_role.py +10 -10
  187. openstackclient/tests/unit/identity/v2_0/test_role_assignment.py +4 -4
  188. openstackclient/tests/unit/identity/v2_0/test_service.py +6 -6
  189. openstackclient/tests/unit/identity/v2_0/test_token.py +4 -4
  190. openstackclient/tests/unit/identity/v2_0/test_user.py +8 -8
  191. openstackclient/tests/unit/identity/v3/fakes.py +59 -20
  192. openstackclient/tests/unit/identity/v3/test_access_rule.py +5 -5
  193. openstackclient/tests/unit/identity/v3/test_application_credential.py +212 -235
  194. openstackclient/tests/unit/identity/v3/test_catalog.py +3 -3
  195. openstackclient/tests/unit/identity/v3/test_consumer.py +7 -8
  196. openstackclient/tests/unit/identity/v3/test_credential.py +9 -9
  197. openstackclient/tests/unit/identity/v3/test_domain.py +8 -8
  198. openstackclient/tests/unit/identity/v3/test_endpoint.py +13 -13
  199. openstackclient/tests/unit/identity/v3/test_endpoint_group.py +12 -14
  200. openstackclient/tests/unit/identity/v3/test_group.py +12 -12
  201. openstackclient/tests/unit/identity/v3/test_identity_provider.py +8 -8
  202. openstackclient/tests/unit/identity/v3/test_implied_role.py +5 -5
  203. openstackclient/tests/unit/identity/v3/test_limit.py +7 -7
  204. openstackclient/tests/unit/identity/v3/test_mappings.py +7 -7
  205. openstackclient/tests/unit/identity/v3/test_oauth.py +5 -5
  206. openstackclient/tests/unit/identity/v3/test_project.py +16 -16
  207. openstackclient/tests/unit/identity/v3/test_protocol.py +7 -7
  208. openstackclient/tests/unit/identity/v3/test_region.py +7 -7
  209. openstackclient/tests/unit/identity/v3/test_registered_limit.py +12 -13
  210. openstackclient/tests/unit/identity/v3/test_role.py +13 -13
  211. openstackclient/tests/unit/identity/v3/test_role_assignment.py +410 -331
  212. openstackclient/tests/unit/identity/v3/test_service.py +93 -97
  213. openstackclient/tests/unit/identity/v3/test_service_provider.py +7 -7
  214. openstackclient/tests/unit/identity/v3/test_token.py +4 -4
  215. openstackclient/tests/unit/identity/v3/test_trust.py +9 -9
  216. openstackclient/tests/unit/identity/v3/test_unscoped_saml.py +4 -4
  217. openstackclient/tests/unit/identity/v3/test_user.py +299 -327
  218. openstackclient/tests/unit/image/v1/test_image.py +6 -6
  219. openstackclient/tests/unit/image/v2/fakes.py +46 -9
  220. openstackclient/tests/unit/image/v2/test_cache.py +2 -2
  221. openstackclient/tests/unit/image/v2/test_image.py +3 -3
  222. openstackclient/tests/unit/image/v2/test_metadef_objects.py +62 -0
  223. openstackclient/tests/unit/image/v2/test_metadef_resource_type_association.py +131 -0
  224. openstackclient/tests/unit/integ/base.py +1 -1
  225. openstackclient/tests/unit/integ/cli/test_project.py +4 -4
  226. openstackclient/tests/unit/integ/cli/test_shell.py +7 -7
  227. openstackclient/tests/unit/network/test_common.py +12 -21
  228. openstackclient/tests/unit/network/v2/fakes.py +64 -130
  229. openstackclient/tests/unit/network/v2/test_address_group.py +15 -15
  230. openstackclient/tests/unit/network/v2/test_address_scope.py +13 -13
  231. openstackclient/tests/unit/network/v2/test_default_security_group_rule.py +49 -27
  232. openstackclient/tests/unit/network/v2/test_floating_ip_compute.py +40 -38
  233. openstackclient/tests/unit/network/v2/test_floating_ip_network.py +15 -15
  234. openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py +4 -7
  235. openstackclient/tests/unit/network/v2/test_floating_ip_pool_network.py +3 -5
  236. openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +11 -11
  237. openstackclient/tests/unit/network/v2/test_ip_availability.py +6 -6
  238. openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py +11 -21
  239. openstackclient/tests/unit/network/v2/test_local_ip.py +7 -7
  240. openstackclient/tests/unit/network/v2/test_local_ip_association.py +3 -5
  241. openstackclient/tests/unit/network/v2/test_ndp_proxy.py +13 -13
  242. openstackclient/tests/unit/network/v2/test_network.py +23 -28
  243. openstackclient/tests/unit/network/v2/test_network_agent.py +17 -21
  244. openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py +8 -8
  245. openstackclient/tests/unit/network/v2/test_network_compute.py +66 -65
  246. openstackclient/tests/unit/network/v2/test_network_flavor.py +17 -19
  247. openstackclient/tests/unit/network/v2/test_network_flavor_profile.py +13 -13
  248. openstackclient/tests/unit/network/v2/test_network_meter.py +11 -11
  249. openstackclient/tests/unit/network/v2/test_network_meter_rule.py +11 -11
  250. openstackclient/tests/unit/network/v2/test_network_qos_policy.py +11 -21
  251. openstackclient/tests/unit/network/v2/test_network_qos_rule.py +51 -77
  252. openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py +5 -9
  253. openstackclient/tests/unit/network/v2/test_network_rbac.py +12 -12
  254. openstackclient/tests/unit/network/v2/test_network_segment.py +11 -15
  255. openstackclient/tests/unit/network/v2/test_network_segment_range.py +11 -13
  256. openstackclient/tests/unit/network/v2/test_network_service_provider.py +3 -5
  257. openstackclient/tests/unit/network/v2/test_network_trunk.py +11 -11
  258. openstackclient/tests/unit/network/v2/test_port.py +22 -25
  259. openstackclient/tests/unit/network/v2/test_router.py +721 -51
  260. openstackclient/tests/unit/network/v2/test_security_group_compute.py +65 -49
  261. openstackclient/tests/unit/network/v2/test_security_group_network.py +15 -15
  262. openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py +57 -45
  263. openstackclient/tests/unit/network/v2/test_security_group_rule_network.py +11 -19
  264. openstackclient/tests/unit/network/v2/test_subnet.py +29 -25
  265. openstackclient/tests/unit/network/v2/test_subnet_pool.py +15 -15
  266. openstackclient/tests/unit/object/v1/fakes.py +1 -1
  267. openstackclient/tests/unit/object/v1/test_container.py +5 -5
  268. openstackclient/tests/unit/object/v1/test_container_all.py +6 -6
  269. openstackclient/tests/unit/object/v1/test_object.py +3 -3
  270. openstackclient/tests/unit/object/v1/test_object_all.py +5 -5
  271. openstackclient/tests/unit/test_shell.py +5 -5
  272. openstackclient/tests/unit/utils.py +4 -1
  273. openstackclient/tests/unit/volume/test_find_resource.py +2 -2
  274. openstackclient/tests/unit/volume/v1/fakes.py +5 -6
  275. openstackclient/tests/unit/volume/v1/test_volume.py +5 -4
  276. openstackclient/tests/unit/volume/v2/fakes.py +39 -259
  277. openstackclient/tests/unit/volume/v2/test_consistency_group_snapshot.py +5 -5
  278. openstackclient/tests/unit/volume/v2/test_qos_specs.py +9 -9
  279. openstackclient/tests/unit/volume/v2/test_volume.py +21 -87
  280. openstackclient/tests/unit/volume/v2/test_volume_backup.py +7 -368
  281. openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +1 -1
  282. openstackclient/tests/unit/volume/v2/test_volume_transfer_request.py +0 -44
  283. openstackclient/tests/unit/volume/v2/test_volume_type.py +6 -87
  284. openstackclient/tests/unit/volume/v3/fakes.py +505 -22
  285. openstackclient/tests/unit/volume/v3/test_block_storage_cleanup.py +2 -3
  286. openstackclient/tests/unit/volume/v3/test_block_storage_cluster.py +10 -11
  287. openstackclient/tests/unit/volume/v3/test_block_storage_log_level.py +10 -6
  288. openstackclient/tests/unit/volume/v3/test_block_storage_manage.py +25 -17
  289. openstackclient/tests/unit/volume/v3/test_block_storage_resource_filter.py +6 -32
  290. openstackclient/tests/unit/volume/v3/test_service.py +271 -0
  291. openstackclient/tests/unit/volume/v3/test_volume.py +2177 -33
  292. openstackclient/tests/unit/volume/v3/test_volume_attachment.py +48 -52
  293. openstackclient/tests/unit/volume/v3/test_volume_backup.py +892 -0
  294. openstackclient/tests/unit/volume/v3/test_volume_group.py +19 -20
  295. openstackclient/tests/unit/volume/v3/test_volume_group_snapshot.py +14 -34
  296. openstackclient/tests/unit/volume/v3/test_volume_group_type.py +13 -16
  297. openstackclient/tests/unit/volume/v3/test_volume_message.py +10 -11
  298. openstackclient/tests/unit/volume/v3/test_volume_snapshot.py +161 -0
  299. openstackclient/tests/unit/volume/v3/test_volume_transfer_request.py +425 -0
  300. openstackclient/tests/unit/volume/v3/test_volume_type.py +1109 -0
  301. openstackclient/volume/v1/qos_specs.py +7 -7
  302. openstackclient/volume/v1/service.py +2 -2
  303. openstackclient/volume/v1/volume.py +12 -12
  304. openstackclient/volume/v1/volume_backup.py +7 -7
  305. openstackclient/volume/v1/volume_snapshot.py +8 -8
  306. openstackclient/volume/v1/volume_transfer_request.py +5 -5
  307. openstackclient/volume/v1/volume_type.py +7 -7
  308. openstackclient/volume/v2/backup_record.py +2 -2
  309. openstackclient/volume/v2/consistency_group.py +7 -9
  310. openstackclient/volume/v2/consistency_group_snapshot.py +4 -12
  311. openstackclient/volume/v2/qos_specs.py +7 -7
  312. openstackclient/volume/v2/service.py +2 -2
  313. openstackclient/volume/v2/volume.py +80 -80
  314. openstackclient/volume/v2/volume_backend.py +2 -2
  315. openstackclient/volume/v2/volume_backup.py +7 -217
  316. openstackclient/volume/v2/volume_host.py +2 -2
  317. openstackclient/volume/v2/volume_snapshot.py +8 -8
  318. openstackclient/volume/v2/volume_transfer_request.py +5 -37
  319. openstackclient/volume/v2/volume_type.py +7 -89
  320. openstackclient/volume/v3/service.py +56 -0
  321. openstackclient/volume/v3/volume.py +971 -0
  322. openstackclient/volume/v3/volume_attachment.py +31 -29
  323. openstackclient/volume/v3/volume_backup.py +670 -0
  324. openstackclient/volume/v3/volume_message.py +1 -1
  325. openstackclient/volume/v3/volume_snapshot.py +97 -0
  326. openstackclient/volume/v3/volume_transfer_request.py +233 -0
  327. openstackclient/volume/v3/volume_type.py +967 -0
  328. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.0.0.dist-info}/AUTHORS +4 -0
  329. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.0.0.dist-info}/METADATA +2 -3
  330. python_openstackclient-7.0.0.dist-info/RECORD +502 -0
  331. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.0.0.dist-info}/entry_points.txt +33 -27
  332. python_openstackclient-7.0.0.dist-info/pbr.json +1 -0
  333. python_openstackclient-6.6.1.dist-info/RECORD +0 -489
  334. python_openstackclient-6.6.1.dist-info/pbr.json +0 -1
  335. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.0.0.dist-info}/LICENSE +0 -0
  336. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.0.0.dist-info}/WHEEL +0 -0
  337. {python_openstackclient-6.6.1.dist-info → python_openstackclient-7.0.0.dist-info}/top_level.txt +0 -0
@@ -15,10 +15,11 @@
15
15
 
16
16
  import copy
17
17
  import random
18
+ import re
18
19
  from unittest import mock
19
20
  import uuid
20
21
 
21
- from novaclient import api_versions
22
+ from keystoneauth1 import discover
22
23
  from openstack.compute.v2 import _proxy
23
24
  from openstack.compute.v2 import aggregate as _aggregate
24
25
  from openstack.compute.v2 import availability_zone as _availability_zone
@@ -26,6 +27,7 @@ from openstack.compute.v2 import extension as _extension
26
27
  from openstack.compute.v2 import flavor as _flavor
27
28
  from openstack.compute.v2 import hypervisor as _hypervisor
28
29
  from openstack.compute.v2 import keypair as _keypair
30
+ from openstack.compute.v2 import limits as _limits
29
31
  from openstack.compute.v2 import migration as _migration
30
32
  from openstack.compute.v2 import server as _server
31
33
  from openstack.compute.v2 import server_action as _server_action
@@ -36,7 +38,6 @@ from openstack.compute.v2 import service as _service
36
38
  from openstack.compute.v2 import usage as _usage
37
39
  from openstack.compute.v2 import volume_attachment as _volume_attachment
38
40
 
39
- from openstackclient.api import compute_v2
40
41
  from openstackclient.tests.unit import fakes
41
42
  from openstackclient.tests.unit.identity.v2_0 import fakes as identity_fakes
42
43
  from openstackclient.tests.unit.image.v2 import fakes as image_fakes
@@ -44,44 +45,8 @@ from openstackclient.tests.unit.network.v2 import fakes as network_fakes
44
45
  from openstackclient.tests.unit import utils
45
46
  from openstackclient.tests.unit.volume.v3 import fakes as volume_fakes
46
47
 
47
- floating_ip_num = 100
48
- fix_ip_num = 100
49
- injected_file_num = 100
50
- injected_file_size_num = 10240
51
- injected_path_size_num = 255
52
- key_pair_num = 100
53
- core_num = 20
54
- ram_num = 51200
55
- instance_num = 10
56
- property_num = 128
57
- secgroup_rule_num = 20
58
- secgroup_num = 10
59
- servgroup_num = 10
60
- servgroup_members_num = 10
61
- project_name = 'project_test'
62
- QUOTA = {
63
- 'project': project_name,
64
- 'floating-ips': floating_ip_num,
65
- 'fix-ips': fix_ip_num,
66
- 'injected-files': injected_file_num,
67
- 'injected-file-size': injected_file_size_num,
68
- 'injected-path-size': injected_path_size_num,
69
- 'key-pairs': key_pair_num,
70
- 'cores': core_num,
71
- 'ram': ram_num,
72
- 'instances': instance_num,
73
- 'properties': property_num,
74
- 'secgroup_rules': secgroup_rule_num,
75
- 'secgroups': secgroup_num,
76
- 'server-groups': servgroup_num,
77
- 'server-group-members': servgroup_members_num,
78
- }
79
-
80
- QUOTA_columns = tuple(sorted(QUOTA))
81
- QUOTA_data = tuple(QUOTA[x] for x in sorted(QUOTA))
82
-
83
-
84
- class FakeComputev2Client(object):
48
+
49
+ class FakeComputev2Client:
85
50
  def __init__(self, **kwargs):
86
51
  self.agents = mock.Mock()
87
52
  self.agents.resource_class = fakes.FakeResource(None, {})
@@ -89,9 +54,6 @@ class FakeComputev2Client(object):
89
54
  self.images = mock.Mock()
90
55
  self.images.resource_class = fakes.FakeResource(None, {})
91
56
 
92
- self.limits = mock.Mock()
93
- self.limits.resource_class = fakes.FakeResource(None, {})
94
-
95
57
  self.servers = mock.Mock()
96
58
  self.servers.resource_class = fakes.FakeResource(None, {})
97
59
 
@@ -106,12 +68,6 @@ class FakeComputev2Client(object):
106
68
  self.flavor_access = mock.Mock()
107
69
  self.flavor_access.resource_class = fakes.FakeResource(None, {})
108
70
 
109
- self.quotas = mock.Mock()
110
- self.quotas.resource_class = fakes.FakeResource(None, {})
111
-
112
- self.quota_classes = mock.Mock()
113
- self.quota_classes.resource_class = fakes.FakeResource(None, {})
114
-
115
71
  self.usage = mock.Mock()
116
72
  self.usage.resource_class = fakes.FakeResource(None, {})
117
73
 
@@ -127,9 +83,6 @@ class FakeComputev2Client(object):
127
83
  self.keypairs = mock.Mock()
128
84
  self.keypairs.resource_class = fakes.FakeResource(None, {})
129
85
 
130
- self.hosts = mock.Mock()
131
- self.hosts.resource_class = fakes.FakeResource(None, {})
132
-
133
86
  self.server_groups = mock.Mock()
134
87
  self.server_groups.resource_class = fakes.FakeResource(None, {})
135
88
 
@@ -146,24 +99,11 @@ class FakeComputev2Client(object):
146
99
 
147
100
  self.management_url = kwargs['endpoint']
148
101
 
149
- self.api_version = api_versions.APIVersion('2.1')
150
-
151
102
 
152
103
  class FakeClientMixin:
153
104
  def setUp(self):
154
105
  super().setUp()
155
106
 
156
- self.app.client_manager.compute = FakeComputev2Client(
157
- endpoint=fakes.AUTH_URL,
158
- token=fakes.AUTH_TOKEN,
159
- )
160
- self.compute_client = self.app.client_manager.compute
161
-
162
- self.compute_client.api = compute_v2.APIv2(
163
- session=self.app.client_manager.session,
164
- endpoint=fakes.AUTH_URL,
165
- )
166
-
167
107
  # TODO(stephenfin): Rename to 'compute_client' once all commands are
168
108
  # migrated to SDK
169
109
  self.app.client_manager.sdk_connection.compute = mock.Mock(
@@ -172,22 +112,34 @@ class FakeClientMixin:
172
112
  self.compute_sdk_client = (
173
113
  self.app.client_manager.sdk_connection.compute
174
114
  )
115
+ self.set_compute_api_version() # default to the lowest
116
+
117
+ def set_compute_api_version(self, version: str = '2.1'):
118
+ """Set a fake server version.
119
+
120
+ :param version: The fake microversion to "support". This should be a
121
+ string of format '2.xx'.
122
+ :returns: None
123
+ """
124
+ assert re.match(r'2.\d+', version)
125
+
126
+ self.compute_sdk_client.default_microversion = version
127
+ self.compute_sdk_client.get_endpoint_data.return_value = (
128
+ discover.EndpointData(
129
+ min_microversion='2.1', # nova has not bumped this yet
130
+ max_microversion=version,
131
+ )
132
+ )
175
133
 
176
134
 
177
135
  class TestComputev2(
178
136
  network_fakes.FakeClientMixin,
179
137
  image_fakes.FakeClientMixin,
180
138
  volume_fakes.FakeClientMixin,
139
+ identity_fakes.FakeClientMixin,
181
140
  FakeClientMixin,
182
141
  utils.TestCommand,
183
- ):
184
- def setUp(self):
185
- super().setUp()
186
-
187
- self.app.client_manager.identity = identity_fakes.FakeIdentityv2Client(
188
- endpoint=fakes.AUTH_URL,
189
- token=fakes.AUTH_TOKEN,
190
- )
142
+ ): ...
191
143
 
192
144
 
193
145
  def create_one_aggregate(attrs=None):
@@ -1018,56 +970,6 @@ def get_networks(networks=None, count=2):
1018
970
  return mock.Mock(side_effect=networks)
1019
971
 
1020
972
 
1021
- def create_one_host(attrs=None):
1022
- """Create a fake host.
1023
-
1024
- :param dict attrs:
1025
- A dictionary with all attributes
1026
- :return:
1027
- A FakeResource object, with uuid and other attributes
1028
- """
1029
- attrs = attrs or {}
1030
-
1031
- # Set default attributes.
1032
- host_info = {
1033
- "service_id": 1,
1034
- "host": "host1",
1035
- "uuid": 'host-id-' + uuid.uuid4().hex,
1036
- "vcpus": 10,
1037
- "memory_mb": 100,
1038
- "local_gb": 100,
1039
- "vcpus_used": 5,
1040
- "memory_mb_used": 50,
1041
- "local_gb_used": 10,
1042
- "hypervisor_type": "xen",
1043
- "hypervisor_version": 1,
1044
- "hypervisor_hostname": "devstack1",
1045
- "free_ram_mb": 50,
1046
- "free_disk_gb": 50,
1047
- "current_workload": 10,
1048
- "running_vms": 1,
1049
- "cpu_info": "",
1050
- "disk_available_least": 1,
1051
- "host_ip": "10.10.10.10",
1052
- "supported_instances": "",
1053
- "metrics": "",
1054
- "pci_stats": "",
1055
- "extra_resources": "",
1056
- "stats": "",
1057
- "numa_topology": "",
1058
- "ram_allocation_ratio": 1.0,
1059
- "cpu_allocation_ratio": 1.0,
1060
- "zone": 'zone-' + uuid.uuid4().hex,
1061
- "host_name": 'name-' + uuid.uuid4().hex,
1062
- "service": 'service-' + uuid.uuid4().hex,
1063
- "cpu": 4,
1064
- "disk_gb": 100,
1065
- 'project': 'project-' + uuid.uuid4().hex,
1066
- }
1067
- host_info.update(attrs)
1068
- return host_info
1069
-
1070
-
1071
973
  def create_one_usage(attrs=None):
1072
974
  """Create a fake usage.
1073
975
 
@@ -1124,103 +1026,12 @@ def create_usages(attrs=None, count=2):
1124
1026
  return usages
1125
1027
 
1126
1028
 
1127
- def create_one_comp_quota(attrs=None):
1128
- """Create one quota"""
1129
-
1029
+ def create_limits(attrs=None):
1030
+ """Create a fake limits object."""
1130
1031
  attrs = attrs or {}
1131
1032
 
1132
- quota_attrs = {
1133
- 'id': 'project-id-' + uuid.uuid4().hex,
1134
- 'cores': 20,
1135
- 'fixed_ips': 30,
1136
- 'injected_files': 100,
1137
- 'injected_file_content_bytes': 10240,
1138
- 'injected_file_path_bytes': 255,
1139
- 'instances': 50,
1140
- 'key_pairs': 20,
1141
- 'metadata_items': 10,
1142
- 'ram': 51200,
1143
- 'server_groups': 10,
1144
- 'server_group_members': 10,
1145
- }
1146
-
1147
- quota_attrs.update(attrs)
1148
- quota = fakes.FakeResource(info=copy.deepcopy(quota_attrs), loaded=True)
1149
-
1150
- quota.project_id = quota_attrs['id']
1151
-
1152
- return quota
1153
-
1154
-
1155
- def create_one_default_comp_quota(attrs=None):
1156
- """Create one quota"""
1157
-
1158
- attrs = attrs or {}
1159
-
1160
- quota_attrs = {
1161
- 'id': 'project-id-' + uuid.uuid4().hex,
1162
- 'cores': 10,
1163
- 'fixed_ips': 10,
1164
- 'injected_files': 100,
1165
- 'injected_file_content_bytes': 10240,
1166
- 'injected_file_path_bytes': 255,
1167
- 'instances': 20,
1168
- 'key_pairs': 20,
1169
- 'metadata_items': 10,
1170
- 'ram': 51200,
1171
- 'server_groups': 10,
1172
- 'server_group_members': 10,
1173
- }
1174
-
1175
- quota_attrs.update(attrs)
1176
- quota = fakes.FakeResource(info=copy.deepcopy(quota_attrs), loaded=True)
1177
-
1178
- quota.project_id = quota_attrs['id']
1179
-
1180
- return quota
1181
-
1182
-
1183
- def create_one_comp_detailed_quota(attrs=None):
1184
- """Create one quota"""
1185
-
1186
- attrs = attrs or {}
1187
-
1188
- quota_attrs = {
1189
- 'id': 'project-id-' + uuid.uuid4().hex,
1190
- 'cores': {'reserved': 0, 'in_use': 0, 'limit': 20},
1191
- 'fixed_ips': {'reserved': 0, 'in_use': 0, 'limit': 30},
1192
- 'injected_files': {'reserved': 0, 'in_use': 0, 'limit': 100},
1193
- 'injected_file_content_bytes': {
1194
- 'reserved': 0,
1195
- 'in_use': 0,
1196
- 'limit': 10240,
1197
- },
1198
- 'injected_file_path_bytes': {
1199
- 'reserved': 0,
1200
- 'in_use': 0,
1201
- 'limit': 255,
1202
- },
1203
- 'instances': {'reserved': 0, 'in_use': 0, 'limit': 50},
1204
- 'key_pairs': {'reserved': 0, 'in_use': 0, 'limit': 20},
1205
- 'metadata_items': {'reserved': 0, 'in_use': 0, 'limit': 10},
1206
- 'ram': {'reserved': 0, 'in_use': 0, 'limit': 51200},
1207
- 'server_groups': {'reserved': 0, 'in_use': 0, 'limit': 10},
1208
- 'server_group_members': {'reserved': 0, 'in_use': 0, 'limit': 10},
1209
- }
1210
-
1211
- quota_attrs.update(attrs)
1212
- quota = fakes.FakeResource(info=copy.deepcopy(quota_attrs), loaded=True)
1213
-
1214
- quota.project_id = quota_attrs['id']
1215
-
1216
- return quota
1217
-
1218
-
1219
- class FakeLimits(object):
1220
- """Fake limits"""
1221
-
1222
- def __init__(self, absolute_attrs=None, rate_attrs=None):
1223
- self.absolute_limits_attrs = {
1033
+ limits_attrs = {
1034
+ 'absolute': {
1224
1035
  'maxServerMeta': 128,
1225
1036
  'maxTotalInstances': 10,
1226
1037
  'maxPersonality': 5,
@@ -1240,11 +1051,8 @@ class FakeLimits(object):
1240
1051
  'maxTotalFloatingIps': 10,
1241
1052
  'totalSecurityGroupsUsed': 0,
1242
1053
  'maxTotalCores': 20,
1243
- }
1244
- absolute_attrs = absolute_attrs or {}
1245
- self.absolute_limits_attrs.update(absolute_attrs)
1246
-
1247
- self.rate_limits_attrs = [
1054
+ },
1055
+ 'rate': [
1248
1056
  {
1249
1057
  "uri": "*",
1250
1058
  "limit": [
@@ -1271,69 +1079,12 @@ class FakeLimits(object):
1271
1079
  },
1272
1080
  ],
1273
1081
  }
1274
- ]
1275
-
1276
- @property
1277
- def absolute(self):
1278
- for name, value in self.absolute_limits_attrs.items():
1279
- yield FakeAbsoluteLimit(name, value)
1280
-
1281
- def absolute_limits(self):
1282
- reference_data = []
1283
- for name, value in self.absolute_limits_attrs.items():
1284
- reference_data.append((name, value))
1285
- return reference_data
1286
-
1287
- @property
1288
- def rate(self):
1289
- for group in self.rate_limits_attrs:
1290
- uri = group['uri']
1291
- for rate in group['limit']:
1292
- yield FakeRateLimit(
1293
- rate['verb'],
1294
- uri,
1295
- rate['value'],
1296
- rate['remaining'],
1297
- rate['unit'],
1298
- rate['next-available'],
1299
- )
1300
-
1301
- def rate_limits(self):
1302
- reference_data = []
1303
- for group in self.rate_limits_attrs:
1304
- uri = group['uri']
1305
- for rate in group['limit']:
1306
- reference_data.append(
1307
- (
1308
- rate['verb'],
1309
- uri,
1310
- rate['value'],
1311
- rate['remaining'],
1312
- rate['unit'],
1313
- rate['next-available'],
1314
- )
1315
- )
1316
- return reference_data
1317
-
1318
-
1319
- class FakeAbsoluteLimit(object):
1320
- """Data model that represents an absolute limit"""
1321
-
1322
- def __init__(self, name, value):
1323
- self.name = name
1324
- self.value = value
1325
-
1326
-
1327
- class FakeRateLimit(object):
1328
- """Data model that represents a flattened view of a single rate limit"""
1329
-
1330
- def __init__(self, verb, uri, value, remain, unit, next_available):
1331
- self.verb = verb
1332
- self.uri = uri
1333
- self.value = value
1334
- self.remain = remain
1335
- self.unit = unit
1336
- self.next_available = next_available
1082
+ ],
1083
+ }
1084
+ limits_attrs.update(attrs)
1085
+
1086
+ limits = _limits.Limits(**limits_attrs)
1087
+ return limits
1337
1088
 
1338
1089
 
1339
1090
  def create_one_migration(attrs=None):