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
@@ -10,7 +10,6 @@
10
10
  # License for the specific language governing permissions and limitations
11
11
  # under the License.
12
12
 
13
- from cinderclient import api_versions
14
13
  from osc_lib import exceptions
15
14
 
16
15
  from openstackclient.tests.unit.volume.v3 import fakes as volume_fakes
@@ -41,7 +40,7 @@ class TestBlockStorageClusterList(TestBlockStorageCluster):
41
40
  )
42
41
 
43
42
  def test_cluster_list(self):
44
- self.volume_client.api_version = api_versions.APIVersion('3.7')
43
+ self.set_volume_api_version('3.7')
45
44
 
46
45
  arglist = []
47
46
  verifylist = [
@@ -82,7 +81,7 @@ class TestBlockStorageClusterList(TestBlockStorageCluster):
82
81
  )
83
82
 
84
83
  def test_cluster_list_with_full_options(self):
85
- self.volume_client.api_version = api_versions.APIVersion('3.7')
84
+ self.set_volume_api_version('3.7')
86
85
 
87
86
  arglist = [
88
87
  '--cluster',
@@ -152,7 +151,7 @@ class TestBlockStorageClusterList(TestBlockStorageCluster):
152
151
  )
153
152
 
154
153
  def test_cluster_list_pre_v37(self):
155
- self.volume_client.api_version = api_versions.APIVersion('3.6')
154
+ self.set_volume_api_version('3.6')
156
155
 
157
156
  arglist = []
158
157
  verifylist = [
@@ -215,7 +214,7 @@ class TestBlockStorageClusterSet(TestBlockStorageCluster):
215
214
  self.cmd = block_storage_cluster.SetBlockStorageCluster(self.app, None)
216
215
 
217
216
  def test_cluster_set(self):
218
- self.volume_client.api_version = api_versions.APIVersion('3.7')
217
+ self.set_volume_api_version('3.7')
219
218
 
220
219
  arglist = [
221
220
  '--enable',
@@ -242,7 +241,7 @@ class TestBlockStorageClusterSet(TestBlockStorageCluster):
242
241
  )
243
242
 
244
243
  def test_cluster_set_disable_with_reason(self):
245
- self.volume_client.api_version = api_versions.APIVersion('3.7')
244
+ self.set_volume_api_version('3.7')
246
245
 
247
246
  arglist = [
248
247
  '--binary',
@@ -272,7 +271,7 @@ class TestBlockStorageClusterSet(TestBlockStorageCluster):
272
271
  )
273
272
 
274
273
  def test_cluster_set_only_with_disable_reason(self):
275
- self.volume_client.api_version = api_versions.APIVersion('3.7')
274
+ self.set_volume_api_version('3.7')
276
275
 
277
276
  arglist = [
278
277
  '--disable-reason',
@@ -295,7 +294,7 @@ class TestBlockStorageClusterSet(TestBlockStorageCluster):
295
294
  )
296
295
 
297
296
  def test_cluster_set_enable_with_disable_reason(self):
298
- self.volume_client.api_version = api_versions.APIVersion('3.7')
297
+ self.set_volume_api_version('3.7')
299
298
 
300
299
  arglist = [
301
300
  '--enable',
@@ -319,7 +318,7 @@ class TestBlockStorageClusterSet(TestBlockStorageCluster):
319
318
  )
320
319
 
321
320
  def test_cluster_set_pre_v37(self):
322
- self.volume_client.api_version = api_versions.APIVersion('3.6')
321
+ self.set_volume_api_version('3.6')
323
322
 
324
323
  arglist = [
325
324
  '--enable',
@@ -385,7 +384,7 @@ class TestBlockStorageClusterShow(TestBlockStorageCluster):
385
384
  )
386
385
 
387
386
  def test_cluster_show(self):
388
- self.volume_client.api_version = api_versions.APIVersion('3.7')
387
+ self.set_volume_api_version('3.7')
389
388
 
390
389
  arglist = [
391
390
  '--binary',
@@ -409,7 +408,7 @@ class TestBlockStorageClusterShow(TestBlockStorageCluster):
409
408
  )
410
409
 
411
410
  def test_cluster_show_pre_v37(self):
412
- self.volume_client.api_version = api_versions.APIVersion('3.6')
411
+ self.set_volume_api_version('3.6')
413
412
 
414
413
  arglist = [
415
414
  '--binary',
@@ -12,7 +12,6 @@
12
12
  # under the License.
13
13
  #
14
14
 
15
- from cinderclient import api_versions
16
15
  import ddt
17
16
  from osc_lib import exceptions
18
17
 
@@ -42,7 +41,8 @@ class TestBlockStorageLogLevelList(TestService):
42
41
  self.cmd = service.BlockStorageLogLevelList(self.app, None)
43
42
 
44
43
  def test_block_storage_log_level_list(self):
45
- self.volume_client.api_version = api_versions.APIVersion('3.32')
44
+ self.set_volume_api_version('3.32')
45
+
46
46
  arglist = [
47
47
  '--host',
48
48
  self.service_log.host,
@@ -113,7 +113,8 @@ class TestBlockStorageLogLevelList(TestService):
113
113
  )
114
114
 
115
115
  def test_block_storage_log_level_list_invalid_service_name(self):
116
- self.volume_client.api_version = api_versions.APIVersion('3.32')
116
+ self.set_volume_api_version('3.32')
117
+
117
118
  arglist = [
118
119
  '--host',
119
120
  self.service_log.host,
@@ -148,7 +149,8 @@ class TestBlockStorageLogLevelSet(TestService):
148
149
  self.cmd = service.BlockStorageLogLevelSet(self.app, None)
149
150
 
150
151
  def test_block_storage_log_level_set(self):
151
- self.volume_client.api_version = api_versions.APIVersion('3.32')
152
+ self.set_volume_api_version('3.32')
153
+
152
154
  arglist = [
153
155
  'ERROR',
154
156
  '--host',
@@ -202,7 +204,8 @@ class TestBlockStorageLogLevelSet(TestService):
202
204
  )
203
205
 
204
206
  def test_block_storage_log_level_set_invalid_service_name(self):
205
- self.volume_client.api_version = api_versions.APIVersion('3.32')
207
+ self.set_volume_api_version('3.32')
208
+
206
209
  arglist = [
207
210
  'ERROR',
208
211
  '--host',
@@ -229,7 +232,8 @@ class TestBlockStorageLogLevelSet(TestService):
229
232
 
230
233
  @ddt.data('WARNING', 'info', 'Error', 'debuG', 'fake-log-level')
231
234
  def test_block_storage_log_level_set_log_level(self, log_level):
232
- self.volume_client.api_version = api_versions.APIVersion('3.32')
235
+ self.set_volume_api_version('3.32')
236
+
233
237
  arglist = [
234
238
  log_level,
235
239
  '--host',
@@ -12,16 +12,14 @@
12
12
 
13
13
  from unittest import mock
14
14
 
15
- from cinderclient import api_versions
16
15
  from osc_lib import exceptions
17
16
 
18
17
  from openstackclient.tests.unit import utils as tests_utils
19
- from openstackclient.tests.unit.volume.v2 import fakes as v2_volume_fakes
20
18
  from openstackclient.tests.unit.volume.v3 import fakes as volume_fakes
21
19
  from openstackclient.volume.v3 import block_storage_manage
22
20
 
23
21
 
24
- class TestBlockStorageManage(v2_volume_fakes.TestVolume):
22
+ class TestBlockStorageManage(volume_fakes.TestVolume):
25
23
  def setUp(self):
26
24
  super().setUp()
27
25
 
@@ -47,7 +45,8 @@ class TestBlockStorageVolumeManage(TestBlockStorageManage):
47
45
  )
48
46
 
49
47
  def test_block_storage_volume_manage_list(self):
50
- self.volume_client.api_version = api_versions.APIVersion('3.8')
48
+ self.set_volume_api_version('3.8')
49
+
51
50
  arglist = [
52
51
  'fake_host',
53
52
  ]
@@ -88,6 +87,8 @@ class TestBlockStorageVolumeManage(TestBlockStorageManage):
88
87
  )
89
88
 
90
89
  def test_block_storage_volume_manage_list__pre_v38(self):
90
+ self.set_volume_api_version('3.7')
91
+
91
92
  arglist = [
92
93
  'fake_host',
93
94
  ]
@@ -104,7 +105,8 @@ class TestBlockStorageVolumeManage(TestBlockStorageManage):
104
105
  )
105
106
 
106
107
  def test_block_storage_volume_manage_list__pre_v317(self):
107
- self.volume_client.api_version = api_versions.APIVersion('3.16')
108
+ self.set_volume_api_version('3.16')
109
+
108
110
  arglist = [
109
111
  '--cluster',
110
112
  'fake_cluster',
@@ -123,7 +125,8 @@ class TestBlockStorageVolumeManage(TestBlockStorageManage):
123
125
  self.assertIn('--cluster', str(exc))
124
126
 
125
127
  def test_block_storage_volume_manage_list__host_and_cluster(self):
126
- self.volume_client.api_version = api_versions.APIVersion('3.17')
128
+ self.set_volume_api_version('3.17')
129
+
127
130
  arglist = [
128
131
  'fake_host',
129
132
  '--cluster',
@@ -146,7 +149,8 @@ class TestBlockStorageVolumeManage(TestBlockStorageManage):
146
149
 
147
150
  def test_block_storage_volume_manage_list__detailed(self):
148
151
  """This option is deprecated."""
149
- self.volume_client.api_version = api_versions.APIVersion('3.8')
152
+ self.set_volume_api_version('3.8')
153
+
150
154
  arglist = [
151
155
  '--detailed',
152
156
  'True',
@@ -206,9 +210,8 @@ class TestBlockStorageVolumeManage(TestBlockStorageManage):
206
210
  )
207
211
 
208
212
  def test_block_storage_volume_manage_list__all_args(self):
209
- self.app.client_manager.volume.api_version = api_versions.APIVersion(
210
- '3.8'
211
- )
213
+ self.set_volume_api_version('3.8')
214
+
212
215
  arglist = [
213
216
  'fake_host',
214
217
  '--long',
@@ -286,7 +289,8 @@ class TestBlockStorageSnapshotManage(TestBlockStorageManage):
286
289
  )
287
290
 
288
291
  def test_block_storage_snapshot_manage_list(self):
289
- self.volume_client.api_version = api_versions.APIVersion('3.8')
292
+ self.set_volume_api_version('3.8')
293
+
290
294
  arglist = [
291
295
  'fake_host',
292
296
  ]
@@ -329,6 +333,8 @@ class TestBlockStorageSnapshotManage(TestBlockStorageManage):
329
333
  )
330
334
 
331
335
  def test_block_storage_snapshot_manage_list__pre_v38(self):
336
+ self.set_volume_api_version('3.7')
337
+
332
338
  arglist = [
333
339
  'fake_host',
334
340
  ]
@@ -345,7 +351,8 @@ class TestBlockStorageSnapshotManage(TestBlockStorageManage):
345
351
  )
346
352
 
347
353
  def test_block_storage_snapshot_manage_list__pre_v317(self):
348
- self.volume_client.api_version = api_versions.APIVersion('3.16')
354
+ self.set_volume_api_version('3.16')
355
+
349
356
  arglist = [
350
357
  '--cluster',
351
358
  'fake_cluster',
@@ -364,7 +371,8 @@ class TestBlockStorageSnapshotManage(TestBlockStorageManage):
364
371
  self.assertIn('--cluster', str(exc))
365
372
 
366
373
  def test_block_storage_snapshot_manage_list__host_and_cluster(self):
367
- self.volume_client.api_version = api_versions.APIVersion('3.17')
374
+ self.set_volume_api_version('3.17')
375
+
368
376
  arglist = [
369
377
  'fake_host',
370
378
  '--cluster',
@@ -386,7 +394,8 @@ class TestBlockStorageSnapshotManage(TestBlockStorageManage):
386
394
  )
387
395
 
388
396
  def test_block_storage_snapshot_manage_list__detailed(self):
389
- self.volume_client.api_version = api_versions.APIVersion('3.8')
397
+ self.set_volume_api_version('3.8')
398
+
390
399
  arglist = [
391
400
  '--detailed',
392
401
  'True',
@@ -448,9 +457,8 @@ class TestBlockStorageSnapshotManage(TestBlockStorageManage):
448
457
  )
449
458
 
450
459
  def test_block_storage_snapshot_manage_list__all_args(self):
451
- self.app.client_manager.volume.api_version = api_versions.APIVersion(
452
- '3.8'
453
- )
460
+ self.set_volume_api_version('3.8')
461
+
454
462
  arglist = [
455
463
  '--long',
456
464
  '--marker',
@@ -10,10 +10,6 @@
10
10
  # License for the specific language governing permissions and limitations
11
11
  # under the License.
12
12
 
13
- from unittest import mock
14
-
15
- from cinderclient import api_versions
16
- from openstack import utils as sdk_utils
17
13
  from osc_lib.cli import format_columns
18
14
  from osc_lib import exceptions
19
15
 
@@ -21,29 +17,7 @@ from openstackclient.tests.unit.volume.v3 import fakes as volume_fakes
21
17
  from openstackclient.volume.v3 import block_storage_resource_filter
22
18
 
23
19
 
24
- class TestBlockStorageResourceFilter(volume_fakes.TestVolume):
25
- def setUp(self):
26
- super().setUp()
27
-
28
- patcher = mock.patch.object(
29
- sdk_utils, 'supports_microversion', return_value=True
30
- )
31
- self.addCleanup(patcher.stop)
32
- self.supports_microversion_mock = patcher.start()
33
- self._set_mock_microversion(
34
- self.app.client_manager.volume.api_version.get_string()
35
- )
36
-
37
- def _set_mock_microversion(self, mock_v):
38
- """Set a specific microversion for the mock supports_microversion()."""
39
- self.supports_microversion_mock.reset_mock(return_value=True)
40
- self.supports_microversion_mock.side_effect = (
41
- lambda _, v: api_versions.APIVersion(v)
42
- <= api_versions.APIVersion(mock_v)
43
- )
44
-
45
-
46
- class TestBlockStorageResourceFilterList(TestBlockStorageResourceFilter):
20
+ class TestBlockStorageResourceFilterList(volume_fakes.TestVolume):
47
21
  # The resource filters to be listed
48
22
  fake_resource_filters = volume_fakes.create_resource_filters()
49
23
 
@@ -62,7 +36,7 @@ class TestBlockStorageResourceFilterList(TestBlockStorageResourceFilter):
62
36
  )
63
37
 
64
38
  def test_resource_filter_list(self):
65
- self._set_mock_microversion('3.33')
39
+ self.set_volume_api_version('3.33')
66
40
 
67
41
  arglist = []
68
42
  verifylist = []
@@ -85,7 +59,7 @@ class TestBlockStorageResourceFilterList(TestBlockStorageResourceFilter):
85
59
  self.volume_sdk_client.resource_filters.assert_called_with()
86
60
 
87
61
  def test_resource_filter_list_pre_v333(self):
88
- self._set_mock_microversion('3.32')
62
+ self.set_volume_api_version('3.32')
89
63
 
90
64
  arglist = []
91
65
  verifylist = []
@@ -99,7 +73,7 @@ class TestBlockStorageResourceFilterList(TestBlockStorageResourceFilter):
99
73
  )
100
74
 
101
75
 
102
- class TestBlockStorageResourceFilterShow(TestBlockStorageResourceFilter):
76
+ class TestBlockStorageResourceFilterShow(volume_fakes.TestVolume):
103
77
  # The resource filters to be listed
104
78
  fake_resource_filter = volume_fakes.create_one_resource_filter()
105
79
 
@@ -118,7 +92,7 @@ class TestBlockStorageResourceFilterShow(TestBlockStorageResourceFilter):
118
92
  )
119
93
 
120
94
  def test_resource_filter_show(self):
121
- self._set_mock_microversion('3.33')
95
+ self.set_volume_api_version('3.33')
122
96
 
123
97
  arglist = [
124
98
  self.fake_resource_filter.resource,
@@ -144,7 +118,7 @@ class TestBlockStorageResourceFilterShow(TestBlockStorageResourceFilter):
144
118
  )
145
119
 
146
120
  def test_resource_filter_show_pre_v333(self):
147
- self._set_mock_microversion('3.32')
121
+ self.set_volume_api_version('3.32')
148
122
 
149
123
  arglist = [
150
124
  self.fake_resource_filter.resource,
@@ -0,0 +1,271 @@
1
+ #
2
+ # Licensed under the Apache License, Version 2.0 (the "License"); you may
3
+ # not use this file except in compliance with the License. You may obtain
4
+ # a copy of the License at
5
+ #
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ #
8
+ # Unless required by applicable law or agreed to in writing, software
9
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
10
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
11
+ # License for the specific language governing permissions and limitations
12
+ # under the License.
13
+ #
14
+
15
+ from cinderclient import api_versions
16
+
17
+ from openstackclient.tests.unit.volume.v3 import fakes as volume_fakes
18
+ from openstackclient.volume.v3 import service
19
+
20
+
21
+ class TestService(volume_fakes.TestVolume):
22
+ def setUp(self):
23
+ super().setUp()
24
+
25
+ # Get a shortcut to the ServiceManager Mock
26
+ self.service_mock = self.volume_client.services
27
+ self.service_mock.reset_mock()
28
+
29
+
30
+ class TestServiceList(TestService):
31
+ # The service to be listed
32
+ services = volume_fakes.create_one_service()
33
+
34
+ def setUp(self):
35
+ super().setUp()
36
+
37
+ self.service_mock.list.return_value = [self.services]
38
+
39
+ # Get the command object to test
40
+ self.cmd = service.ListService(self.app, None)
41
+
42
+ def test_service_list(self):
43
+ arglist = [
44
+ '--host',
45
+ self.services.host,
46
+ '--service',
47
+ self.services.binary,
48
+ ]
49
+ verifylist = [
50
+ ('host', self.services.host),
51
+ ('service', self.services.binary),
52
+ ]
53
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
54
+
55
+ # In base command class Lister in cliff, abstract method take_action()
56
+ # returns a tuple containing the column names and an iterable
57
+ # containing the data to be listed.
58
+ columns, data = self.cmd.take_action(parsed_args)
59
+
60
+ expected_columns = [
61
+ 'Binary',
62
+ 'Host',
63
+ 'Zone',
64
+ 'Status',
65
+ 'State',
66
+ 'Updated At',
67
+ ]
68
+
69
+ # confirming if all expected columns are present in the result.
70
+ self.assertEqual(expected_columns, columns)
71
+
72
+ datalist = (
73
+ (
74
+ self.services.binary,
75
+ self.services.host,
76
+ self.services.zone,
77
+ self.services.status,
78
+ self.services.state,
79
+ self.services.updated_at,
80
+ ),
81
+ )
82
+
83
+ # confirming if all expected values are present in the result.
84
+ self.assertEqual(datalist, tuple(data))
85
+
86
+ # checking if proper call was made to list services
87
+ self.service_mock.list.assert_called_with(
88
+ self.services.host,
89
+ self.services.binary,
90
+ )
91
+
92
+ # checking if prohibited columns are present in output
93
+ self.assertNotIn("Disabled Reason", columns)
94
+ self.assertNotIn(self.services.disabled_reason, tuple(data))
95
+
96
+ def test_service_list_with_long_option(self):
97
+ arglist = [
98
+ '--host',
99
+ self.services.host,
100
+ '--service',
101
+ self.services.binary,
102
+ '--long',
103
+ ]
104
+ verifylist = [
105
+ ('host', self.services.host),
106
+ ('service', self.services.binary),
107
+ ('long', True),
108
+ ]
109
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
110
+
111
+ # In base command class Lister in cliff, abstract method take_action()
112
+ # returns a tuple containing the column names and an iterable
113
+ # containing the data to be listed.
114
+ columns, data = self.cmd.take_action(parsed_args)
115
+
116
+ expected_columns = [
117
+ 'Binary',
118
+ 'Host',
119
+ 'Zone',
120
+ 'Status',
121
+ 'State',
122
+ 'Updated At',
123
+ 'Disabled Reason',
124
+ ]
125
+
126
+ # confirming if all expected columns are present in the result.
127
+ self.assertEqual(expected_columns, columns)
128
+
129
+ datalist = (
130
+ (
131
+ self.services.binary,
132
+ self.services.host,
133
+ self.services.zone,
134
+ self.services.status,
135
+ self.services.state,
136
+ self.services.updated_at,
137
+ self.services.disabled_reason,
138
+ ),
139
+ )
140
+
141
+ # confirming if all expected values are present in the result.
142
+ self.assertEqual(datalist, tuple(data))
143
+
144
+ self.service_mock.list.assert_called_with(
145
+ self.services.host,
146
+ self.services.binary,
147
+ )
148
+
149
+ def test_service_list_with_cluster(self):
150
+ self.volume_client.api_version = api_versions.APIVersion('3.7')
151
+ cluster = {'cluster': 'fake-cluster'}
152
+ cluster_service = volume_fakes.create_one_service(attrs=cluster)
153
+ self.service_mock.list.return_value = [cluster_service]
154
+
155
+ arglist = [
156
+ '--host',
157
+ cluster_service.host,
158
+ '--service',
159
+ cluster_service.binary,
160
+ ]
161
+ verifylist = [
162
+ ('host', cluster_service.host),
163
+ ('service', cluster_service.binary),
164
+ ]
165
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
166
+
167
+ # In base command class Lister in cliff, abstract method take_action()
168
+ # returns a tuple containing the column names and an iterable
169
+ # containing the data to be listed.
170
+ columns, data = self.cmd.take_action(parsed_args)
171
+
172
+ expected_columns = [
173
+ 'Binary',
174
+ 'Host',
175
+ 'Zone',
176
+ 'Status',
177
+ 'State',
178
+ 'Updated At',
179
+ 'Cluster',
180
+ ]
181
+
182
+ # confirming if all expected columns are present in the result.
183
+ self.assertEqual(expected_columns, columns)
184
+
185
+ datalist = (
186
+ (
187
+ cluster_service.binary,
188
+ cluster_service.host,
189
+ cluster_service.zone,
190
+ cluster_service.status,
191
+ cluster_service.state,
192
+ cluster_service.updated_at,
193
+ cluster_service.cluster,
194
+ ),
195
+ )
196
+
197
+ # confirming if all expected values are present in the result.
198
+ self.assertEqual(datalist, tuple(data))
199
+
200
+ # checking if proper call was made to list services
201
+ self.service_mock.list.assert_called_with(
202
+ cluster_service.host,
203
+ cluster_service.binary,
204
+ )
205
+
206
+ # checking if prohibited columns are present in output
207
+ self.assertNotIn("Disabled Reason", columns)
208
+ self.assertNotIn(cluster_service.disabled_reason, tuple(data))
209
+
210
+ def test_service_list_with_backend_state(self):
211
+ self.volume_client.api_version = api_versions.APIVersion('3.49')
212
+ backend_state = {'cluster': 'fake-cluster', 'backend_state': 'up'}
213
+ backend_service = volume_fakes.create_one_service(attrs=backend_state)
214
+ self.service_mock.list.return_value = [backend_service]
215
+
216
+ arglist = [
217
+ '--host',
218
+ backend_service.host,
219
+ '--service',
220
+ backend_service.binary,
221
+ ]
222
+ verifylist = [
223
+ ('host', backend_service.host),
224
+ ('service', backend_service.binary),
225
+ ]
226
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
227
+
228
+ # In base command class Lister in cliff, abstract method take_action()
229
+ # returns a tuple containing the column names and an iterable
230
+ # containing the data to be listed.
231
+ columns, data = self.cmd.take_action(parsed_args)
232
+
233
+ expected_columns = [
234
+ 'Binary',
235
+ 'Host',
236
+ 'Zone',
237
+ 'Status',
238
+ 'State',
239
+ 'Updated At',
240
+ 'Cluster',
241
+ 'Backend State',
242
+ ]
243
+
244
+ # confirming if all expected columns are present in the result.
245
+ self.assertEqual(expected_columns, columns)
246
+
247
+ datalist = (
248
+ (
249
+ backend_service.binary,
250
+ backend_service.host,
251
+ backend_service.zone,
252
+ backend_service.status,
253
+ backend_service.state,
254
+ backend_service.updated_at,
255
+ backend_service.cluster,
256
+ backend_service.backend_state,
257
+ ),
258
+ )
259
+
260
+ # confirming if all expected values are present in the result.
261
+ self.assertEqual(datalist, tuple(data))
262
+
263
+ # checking if proper call was made to list services
264
+ self.service_mock.list.assert_called_with(
265
+ backend_service.host,
266
+ backend_service.binary,
267
+ )
268
+
269
+ # checking if prohibited columns are present in output
270
+ self.assertNotIn("Disabled Reason", columns)
271
+ self.assertNotIn(backend_service.disabled_reason, tuple(data))