python-openstackclient 8.2.0__py3-none-any.whl → 9.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 (233) hide show
  1. openstackclient/api/object_store_v1.py +4 -1
  2. openstackclient/command.py +27 -0
  3. openstackclient/common/availability_zone.py +1 -1
  4. openstackclient/common/clientmanager.py +59 -21
  5. openstackclient/common/configuration.py +1 -1
  6. openstackclient/common/extension.py +1 -1
  7. openstackclient/common/limits.py +1 -1
  8. openstackclient/common/module.py +5 -3
  9. openstackclient/common/project_cleanup.py +10 -8
  10. openstackclient/common/quota.py +54 -23
  11. openstackclient/common/versions.py +1 -2
  12. openstackclient/compute/v2/agent.py +1 -1
  13. openstackclient/compute/v2/aggregate.py +6 -5
  14. openstackclient/compute/v2/console.py +5 -3
  15. openstackclient/compute/v2/console_connection.py +1 -1
  16. openstackclient/compute/v2/flavor.py +1 -1
  17. openstackclient/compute/v2/host.py +1 -1
  18. openstackclient/compute/v2/hypervisor.py +1 -1
  19. openstackclient/compute/v2/hypervisor_stats.py +1 -1
  20. openstackclient/compute/v2/keypair.py +1 -1
  21. openstackclient/compute/v2/server.py +78 -29
  22. openstackclient/compute/v2/server_backup.py +1 -1
  23. openstackclient/compute/v2/server_event.py +1 -1
  24. openstackclient/compute/v2/server_group.py +4 -2
  25. openstackclient/compute/v2/server_image.py +1 -1
  26. openstackclient/compute/v2/server_migration.py +1 -1
  27. openstackclient/compute/v2/server_volume.py +1 -1
  28. openstackclient/compute/v2/service.py +1 -1
  29. openstackclient/compute/v2/usage.py +6 -4
  30. openstackclient/identity/common.py +33 -1
  31. openstackclient/identity/v2_0/catalog.py +3 -2
  32. openstackclient/identity/v2_0/ec2creds.py +1 -1
  33. openstackclient/identity/v2_0/endpoint.py +1 -1
  34. openstackclient/identity/v2_0/project.py +17 -7
  35. openstackclient/identity/v2_0/role.py +1 -1
  36. openstackclient/identity/v2_0/role_assignment.py +3 -3
  37. openstackclient/identity/v2_0/service.py +4 -2
  38. openstackclient/identity/v2_0/token.py +1 -1
  39. openstackclient/identity/v2_0/user.py +2 -2
  40. openstackclient/identity/v3/access_rule.py +16 -4
  41. openstackclient/identity/v3/application_credential.py +30 -10
  42. openstackclient/identity/v3/catalog.py +3 -3
  43. openstackclient/identity/v3/consumer.py +1 -1
  44. openstackclient/identity/v3/credential.py +1 -1
  45. openstackclient/identity/v3/domain.py +10 -4
  46. openstackclient/identity/v3/ec2creds.py +1 -1
  47. openstackclient/identity/v3/endpoint.py +33 -12
  48. openstackclient/identity/v3/endpoint_group.py +1 -1
  49. openstackclient/identity/v3/federation_protocol.py +40 -41
  50. openstackclient/identity/v3/group.py +11 -5
  51. openstackclient/identity/v3/identity_provider.py +12 -10
  52. openstackclient/identity/v3/implied_role.py +1 -1
  53. openstackclient/identity/v3/limit.py +86 -85
  54. openstackclient/identity/v3/mapping.py +1 -1
  55. openstackclient/identity/v3/policy.py +1 -1
  56. openstackclient/identity/v3/project.py +191 -115
  57. openstackclient/identity/v3/region.py +1 -1
  58. openstackclient/identity/v3/registered_limit.py +97 -109
  59. openstackclient/identity/v3/role.py +20 -39
  60. openstackclient/identity/v3/role_assignment.py +12 -23
  61. openstackclient/identity/v3/service.py +1 -1
  62. openstackclient/identity/v3/service_provider.py +1 -1
  63. openstackclient/identity/v3/tag.py +1 -11
  64. openstackclient/identity/v3/token.py +3 -2
  65. openstackclient/identity/v3/trust.py +4 -2
  66. openstackclient/identity/v3/unscoped_saml.py +1 -1
  67. openstackclient/identity/v3/user.py +22 -13
  68. openstackclient/image/v1/image.py +19 -16
  69. openstackclient/image/v2/cache.py +1 -1
  70. openstackclient/image/v2/image.py +16 -12
  71. openstackclient/image/v2/info.py +1 -1
  72. openstackclient/image/v2/metadef_namespaces.py +1 -1
  73. openstackclient/image/v2/metadef_objects.py +1 -1
  74. openstackclient/image/v2/metadef_properties.py +3 -2
  75. openstackclient/image/v2/metadef_resource_type_association.py +1 -1
  76. openstackclient/image/v2/metadef_resource_types.py +1 -1
  77. openstackclient/image/v2/task.py +1 -1
  78. openstackclient/network/common.py +10 -9
  79. openstackclient/network/v2/address_group.py +4 -3
  80. openstackclient/network/v2/address_scope.py +8 -6
  81. openstackclient/network/v2/default_security_group_rule.py +9 -8
  82. openstackclient/network/v2/floating_ip.py +16 -9
  83. openstackclient/network/v2/floating_ip_port_forwarding.py +9 -6
  84. openstackclient/network/v2/ip_availability.py +7 -4
  85. openstackclient/network/v2/l3_conntrack_helper.py +11 -4
  86. openstackclient/network/v2/local_ip.py +13 -7
  87. openstackclient/network/v2/local_ip_association.py +7 -4
  88. openstackclient/network/v2/ndp_proxy.py +13 -6
  89. openstackclient/network/v2/network.py +33 -16
  90. openstackclient/network/v2/network_agent.py +5 -5
  91. openstackclient/network/v2/network_auto_allocated_topology.py +1 -1
  92. openstackclient/network/v2/network_flavor.py +1 -1
  93. openstackclient/network/v2/network_flavor_profile.py +1 -1
  94. openstackclient/network/v2/network_meter.py +1 -1
  95. openstackclient/network/v2/network_meter_rule.py +1 -1
  96. openstackclient/network/v2/network_qos_policy.py +7 -5
  97. openstackclient/network/v2/network_qos_rule.py +1 -1
  98. openstackclient/network/v2/network_qos_rule_type.py +1 -1
  99. openstackclient/network/v2/network_rbac.py +8 -5
  100. openstackclient/network/v2/network_segment.py +2 -2
  101. openstackclient/network/v2/network_segment_range.py +13 -6
  102. openstackclient/network/v2/network_service_provider.py +1 -1
  103. openstackclient/network/v2/network_trunk.py +65 -42
  104. openstackclient/network/v2/port.py +22 -20
  105. openstackclient/network/v2/router.py +19 -8
  106. openstackclient/network/v2/security_group.py +10 -6
  107. openstackclient/network/v2/security_group_rule.py +11 -5
  108. openstackclient/network/v2/subnet.py +17 -18
  109. openstackclient/network/v2/subnet_pool.py +11 -9
  110. openstackclient/network/v2/taas/__init__.py +0 -0
  111. openstackclient/network/v2/taas/tap_flow.py +245 -0
  112. openstackclient/network/v2/taas/tap_mirror.py +237 -0
  113. openstackclient/network/v2/taas/tap_service.py +211 -0
  114. openstackclient/object/v1/account.py +1 -1
  115. openstackclient/object/v1/container.py +1 -1
  116. openstackclient/object/v1/object.py +1 -1
  117. openstackclient/shell.py +18 -8
  118. openstackclient/tests/functional/identity/v3/test_catalog.py +42 -23
  119. openstackclient/tests/functional/identity/v3/test_limit.py +47 -0
  120. openstackclient/tests/functional/identity/v3/test_role_assignment.py +174 -0
  121. openstackclient/tests/functional/image/v2/test_cache.py +54 -0
  122. openstackclient/tests/functional/image/v2/test_metadef_objects.py +69 -0
  123. openstackclient/tests/functional/image/v2/test_metadef_resource_type.py +55 -0
  124. openstackclient/tests/functional/volume/v3/test_volume_snapshot.py +46 -132
  125. openstackclient/tests/unit/common/test_command.py +1 -1
  126. openstackclient/tests/unit/common/test_extension.py +2 -3
  127. openstackclient/tests/unit/common/test_module.py +14 -7
  128. openstackclient/tests/unit/common/test_quota.py +79 -0
  129. openstackclient/tests/unit/compute/v2/test_aggregate.py +5 -3
  130. openstackclient/tests/unit/compute/v2/test_console.py +1 -4
  131. openstackclient/tests/unit/compute/v2/test_flavor.py +1 -3
  132. openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py +1 -9
  133. openstackclient/tests/unit/compute/v2/test_server.py +370 -38
  134. openstackclient/tests/unit/compute/v2/test_server_backup.py +1 -3
  135. openstackclient/tests/unit/compute/v2/test_service.py +1 -3
  136. openstackclient/tests/unit/fakes.py +35 -134
  137. openstackclient/tests/unit/identity/test_common.py +100 -0
  138. openstackclient/tests/unit/identity/v2_0/test_project.py +4 -4
  139. openstackclient/tests/unit/identity/v3/fakes.py +10 -2
  140. openstackclient/tests/unit/identity/v3/test_application_credential.py +3 -3
  141. openstackclient/tests/unit/identity/v3/test_domain.py +1 -1
  142. openstackclient/tests/unit/identity/v3/test_endpoint.py +1 -1
  143. openstackclient/tests/unit/identity/v3/test_group.py +4 -2
  144. openstackclient/tests/unit/identity/v3/test_identity_provider.py +10 -10
  145. openstackclient/tests/unit/identity/v3/test_limit.py +197 -145
  146. openstackclient/tests/unit/identity/v3/test_oauth.py +1 -1
  147. openstackclient/tests/unit/identity/v3/test_project.py +832 -513
  148. openstackclient/tests/unit/identity/v3/test_protocol.py +97 -88
  149. openstackclient/tests/unit/identity/v3/test_registered_limit.py +356 -221
  150. openstackclient/tests/unit/identity/v3/test_role.py +1 -82
  151. openstackclient/tests/unit/identity/v3/test_user.py +7 -51
  152. openstackclient/tests/unit/image/v2/test_image.py +116 -5
  153. openstackclient/tests/unit/network/test_common.py +9 -13
  154. openstackclient/tests/unit/network/v2/taas/__init__.py +0 -0
  155. openstackclient/tests/unit/network/v2/taas/test_osc_tap_flow.py +276 -0
  156. openstackclient/tests/unit/network/v2/taas/test_osc_tap_mirror.py +288 -0
  157. openstackclient/tests/unit/network/v2/taas/test_osc_tap_service.py +271 -0
  158. openstackclient/tests/unit/network/v2/test_address_group.py +19 -22
  159. openstackclient/tests/unit/network/v2/test_address_scope.py +10 -15
  160. openstackclient/tests/unit/network/v2/test_default_security_group_rule.py +38 -49
  161. openstackclient/tests/unit/network/v2/test_floating_ip_network.py +21 -27
  162. openstackclient/tests/unit/network/v2/test_floating_ip_port_forwarding.py +21 -18
  163. openstackclient/tests/unit/network/v2/test_ip_availability.py +6 -8
  164. openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py +6 -15
  165. openstackclient/tests/unit/network/v2/test_local_ip.py +12 -23
  166. openstackclient/tests/unit/network/v2/test_local_ip_association.py +13 -18
  167. openstackclient/tests/unit/network/v2/test_ndp_proxy.py +11 -21
  168. openstackclient/tests/unit/network/v2/test_network.py +41 -37
  169. openstackclient/tests/unit/network/v2/test_network_agent.py +13 -20
  170. openstackclient/tests/unit/network/v2/test_network_auto_allocated_topology.py +5 -8
  171. openstackclient/tests/unit/network/v2/test_network_flavor.py +14 -26
  172. openstackclient/tests/unit/network/v2/test_network_flavor_profile.py +14 -17
  173. openstackclient/tests/unit/network/v2/test_network_meter.py +7 -17
  174. openstackclient/tests/unit/network/v2/test_network_meter_rule.py +10 -20
  175. openstackclient/tests/unit/network/v2/test_network_qos_policy.py +7 -13
  176. openstackclient/tests/unit/network/v2/test_network_qos_rule.py +44 -54
  177. openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py +2 -7
  178. openstackclient/tests/unit/network/v2/test_network_rbac.py +21 -36
  179. openstackclient/tests/unit/network/v2/test_network_segment.py +13 -29
  180. openstackclient/tests/unit/network/v2/test_network_segment_range.py +20 -19
  181. openstackclient/tests/unit/network/v2/test_network_service_provider.py +1 -4
  182. openstackclient/tests/unit/network/v2/test_network_trunk.py +52 -47
  183. openstackclient/tests/unit/network/v2/test_port.py +75 -86
  184. openstackclient/tests/unit/network/v2/test_router.py +104 -126
  185. openstackclient/tests/unit/network/v2/test_security_group_network.py +19 -26
  186. openstackclient/tests/unit/network/v2/test_security_group_rule_network.py +17 -18
  187. openstackclient/tests/unit/network/v2/test_subnet.py +35 -46
  188. openstackclient/tests/unit/network/v2/test_subnet_pool.py +21 -33
  189. openstackclient/tests/unit/volume/test_find_resource.py +4 -13
  190. openstackclient/tests/unit/volume/v2/test_consistency_group.py +8 -2
  191. openstackclient/tests/unit/volume/v2/test_volume.py +7 -6
  192. openstackclient/tests/unit/volume/v2/test_volume_backup.py +3 -1
  193. openstackclient/tests/unit/volume/v3/test_volume.py +38 -12
  194. openstackclient/tests/unit/volume/v3/test_volume_backup.py +9 -0
  195. openstackclient/volume/client.py +7 -17
  196. openstackclient/volume/v2/backup_record.py +1 -1
  197. openstackclient/volume/v2/consistency_group.py +9 -9
  198. openstackclient/volume/v2/consistency_group_snapshot.py +3 -3
  199. openstackclient/volume/v2/qos_specs.py +3 -3
  200. openstackclient/volume/v2/service.py +1 -1
  201. openstackclient/volume/v2/volume.py +14 -7
  202. openstackclient/volume/v2/volume_backend.py +1 -1
  203. openstackclient/volume/v2/volume_backup.py +7 -5
  204. openstackclient/volume/v2/volume_host.py +1 -2
  205. openstackclient/volume/v2/volume_snapshot.py +4 -4
  206. openstackclient/volume/v2/volume_transfer_request.py +3 -3
  207. openstackclient/volume/v2/volume_type.py +16 -11
  208. openstackclient/volume/v3/block_storage_cleanup.py +1 -1
  209. openstackclient/volume/v3/block_storage_cluster.py +1 -1
  210. openstackclient/volume/v3/block_storage_log_level.py +1 -1
  211. openstackclient/volume/v3/block_storage_manage.py +1 -1
  212. openstackclient/volume/v3/block_storage_resource_filter.py +1 -1
  213. openstackclient/volume/v3/service.py +1 -1
  214. openstackclient/volume/v3/volume.py +16 -9
  215. openstackclient/volume/v3/volume_attachment.py +6 -5
  216. openstackclient/volume/v3/volume_backup.py +20 -5
  217. openstackclient/volume/v3/volume_group.py +1 -1
  218. openstackclient/volume/v3/volume_group_snapshot.py +1 -1
  219. openstackclient/volume/v3/volume_group_type.py +1 -1
  220. openstackclient/volume/v3/volume_message.py +1 -1
  221. openstackclient/volume/v3/volume_snapshot.py +4 -4
  222. openstackclient/volume/v3/volume_transfer_request.py +3 -3
  223. openstackclient/volume/v3/volume_type.py +20 -14
  224. {python_openstackclient-8.2.0.dist-info → python_openstackclient-9.0.0.dist-info}/METADATA +15 -13
  225. {python_openstackclient-8.2.0.dist-info → python_openstackclient-9.0.0.dist-info}/RECORD +231 -219
  226. {python_openstackclient-8.2.0.dist-info → python_openstackclient-9.0.0.dist-info}/WHEEL +1 -1
  227. {python_openstackclient-8.2.0.dist-info → python_openstackclient-9.0.0.dist-info}/entry_points.txt +15 -0
  228. {python_openstackclient-8.2.0.dist-info → python_openstackclient-9.0.0.dist-info/licenses}/AUTHORS +15 -0
  229. python_openstackclient-9.0.0.dist-info/pbr.json +1 -0
  230. openstackclient/tests/unit/common/test_logs.py +0 -221
  231. python_openstackclient-8.2.0.dist-info/pbr.json +0 -1
  232. {python_openstackclient-8.2.0.dist-info → python_openstackclient-9.0.0.dist-info/licenses}/LICENSE +0 -0
  233. {python_openstackclient-8.2.0.dist-info → python_openstackclient-9.0.0.dist-info}/top_level.txt +0 -0
@@ -11,7 +11,6 @@
11
11
  # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12
12
  # License for the specific language governing permissions and limitations
13
13
  # under the License.
14
- #
15
14
 
16
15
  """Test module module"""
17
16
 
@@ -19,10 +18,18 @@ import sys
19
18
  from unittest import mock
20
19
 
21
20
  from openstackclient.common import module as osc_module
22
- from openstackclient.tests.unit import fakes
23
21
  from openstackclient.tests.unit import utils
24
22
 
25
23
 
24
+ class FakeModule:
25
+ def __init__(self, name, version):
26
+ self.name = name
27
+ self.__version__ = version
28
+ # Workaround for openstacksdk case
29
+ self.version = mock.Mock()
30
+ self.version.__version__ = version
31
+
32
+
26
33
  # NOTE(dtroyer): module_1 must match the version list filter (not --all)
27
34
  # currently == '*client*'
28
35
  module_name_1 = 'fakeclient'
@@ -45,11 +52,11 @@ module_version_5 = '0.0.1'
45
52
 
46
53
  MODULES = {
47
54
  'sys': sys,
48
- module_name_1: fakes.FakeModule(module_name_1, module_version_1),
49
- module_name_2: fakes.FakeModule(module_name_2, module_version_2),
50
- module_name_3: fakes.FakeModule(module_name_3, module_version_3),
51
- module_name_4: fakes.FakeModule(module_name_4, module_version_4),
52
- module_name_5: fakes.FakeModule(module_name_5, module_version_5),
55
+ module_name_1: FakeModule(module_name_1, module_version_1),
56
+ module_name_2: FakeModule(module_name_2, module_version_2),
57
+ module_name_3: FakeModule(module_name_3, module_version_3),
58
+ module_name_4: FakeModule(module_name_4, module_version_4),
59
+ module_name_5: FakeModule(module_name_5, module_version_5),
53
60
  }
54
61
 
55
62
 
@@ -10,6 +10,7 @@
10
10
  # License for the specific language governing permissions and limitations
11
11
  # under the License.
12
12
 
13
+ import copy
13
14
  from unittest import mock
14
15
 
15
16
  from openstack.block_storage.v3 import quota_set as _volume_quota_set
@@ -1041,6 +1042,26 @@ class TestQuotaShow(TestQuota):
1041
1042
  )
1042
1043
  self.assertNotCalled(self.network_client.get_quota_default)
1043
1044
 
1045
+ def test_quota_show__missing_services(self):
1046
+ self.app.client_manager.compute_endpoint_enabled = False
1047
+ self.app.client_manager.volume_endpoint_enabled = False
1048
+ self.app.client_manager.network_endpoint_enabled = False
1049
+
1050
+ arglist = [
1051
+ self.projects[0].name,
1052
+ ]
1053
+ verifylist = [
1054
+ ('service', 'all'),
1055
+ ('project', self.projects[0].name),
1056
+ ]
1057
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1058
+
1059
+ self.cmd.take_action(parsed_args)
1060
+
1061
+ self.compute_client.get_quota_set.assert_not_called()
1062
+ self.volume_sdk_client.get_quota_set.assert_not_called()
1063
+ self.network_client.get_quota.assert_not_called()
1064
+
1044
1065
  def test_quota_show__with_compute(self):
1045
1066
  arglist = [
1046
1067
  '--compute',
@@ -1102,6 +1123,64 @@ class TestQuotaShow(TestQuota):
1102
1123
  )
1103
1124
  self.assertNotCalled(self.network_client.get_quota_default)
1104
1125
 
1126
+ def test_quota_show__with_network_and_usage(self):
1127
+ # ensure we do not interfere with other tests
1128
+ self._network_quota_details = copy.deepcopy(
1129
+ self._network_quota_details
1130
+ )
1131
+ # set a couple of resources
1132
+ self._network_quota_details["floating_ips"].update(
1133
+ limit=30, reserved=20, used=7
1134
+ )
1135
+ self._network_quota_details["security_group_rules"].update(
1136
+ limit=9, reserved=7, used=5
1137
+ )
1138
+
1139
+ arglist = [
1140
+ '--network',
1141
+ '--usage',
1142
+ self.projects[0].name,
1143
+ ]
1144
+ verifylist = [
1145
+ ('service', 'network'),
1146
+ ('project', self.projects[0].name),
1147
+ ]
1148
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1149
+
1150
+ headers, result_gen = self.cmd.take_action(parsed_args)
1151
+
1152
+ self.assertEqual(('Resource', 'Limit', 'In Use', 'Reserved'), headers)
1153
+
1154
+ result = sorted(result_gen)
1155
+
1156
+ self.assertEqual(
1157
+ [
1158
+ ('floating-ips', 30, 7, 20),
1159
+ ('health_monitors', 0, 0, 0),
1160
+ ('l7_policies', 0, 0, 0),
1161
+ ('listeners', 0, 0, 0),
1162
+ ('load_balancers', 0, 0, 0),
1163
+ ('networks', 0, 0, 0),
1164
+ ('pools', 0, 0, 0),
1165
+ ('ports', 0, 0, 0),
1166
+ ('rbac_policies', 0, 0, 0),
1167
+ ('routers', 0, 0, 0),
1168
+ ('secgroup-rules', 9, 5, 7),
1169
+ ('secgroups', 0, 0, 0),
1170
+ ('subnet_pools', 0, 0, 0),
1171
+ ('subnets', 0, 0, 0),
1172
+ ],
1173
+ result,
1174
+ )
1175
+
1176
+ self.compute_client.get_quota_set.assert_not_called()
1177
+ self.volume_sdk_client.get_quota_set.assert_not_called()
1178
+ self.network_client.get_quota.assert_called_once_with(
1179
+ self.projects[0].id,
1180
+ details=True,
1181
+ )
1182
+ self.assertNotCalled(self.network_client.get_quota_default)
1183
+
1105
1184
  def test_quota_show__with_default(self):
1106
1185
  arglist = [
1107
1186
  '--default',
@@ -165,9 +165,11 @@ class TestAggregateDelete(TestAggregate):
165
165
  sdk_fakes.generate_fake_resources(_aggregate.Aggregate, 2)
166
166
  )
167
167
 
168
- self.compute_client.find_aggregate = mock.Mock(
169
- side_effect=[self.fake_ags[0], self.fake_ags[1]]
170
- )
168
+ self.compute_client.find_aggregate.side_effect = [
169
+ self.fake_ags[0],
170
+ self.fake_ags[1],
171
+ ]
172
+
171
173
  self.cmd = aggregate.DeleteAggregate(self.app, None)
172
174
 
173
175
  def test_aggregate_delete(self):
@@ -13,7 +13,6 @@
13
13
  # under the License.
14
14
  #
15
15
 
16
- from unittest import mock
17
16
 
18
17
  from openstack.compute.v2 import server as _server
19
18
  from openstack.test import fakes as sdk_fakes
@@ -90,9 +89,7 @@ class TestConsoleUrlShow(compute_fakes.TestComputev2):
90
89
  'protocol': 'fake_protocol',
91
90
  'type': 'fake_type',
92
91
  }
93
- self.compute_client.create_console = mock.Mock(
94
- return_value=fake_console_data
95
- )
92
+ self.compute_client.create_console.return_value = fake_console_data
96
93
 
97
94
  self.columns = (
98
95
  'protocol',
@@ -680,9 +680,7 @@ class TestFlavorList(TestFlavor):
680
680
  )
681
681
 
682
682
  self.compute_client.flavors.side_effect = [[flavor], []]
683
- self.compute_client.fetch_flavor_extra_specs = mock.Mock(
684
- return_value=None
685
- )
683
+ self.compute_client.fetch_flavor_extra_specs.return_value = None
686
684
 
687
685
  arglist = [
688
686
  '--long',
@@ -12,20 +12,12 @@
12
12
  # License for the specific language governing permissions and limitations
13
13
  # under the License.
14
14
  #
15
- from unittest import mock
16
15
 
17
16
  from openstackclient.compute.v2 import hypervisor_stats
18
17
  from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
19
18
  from openstackclient.tests.unit import fakes
20
19
 
21
20
 
22
- class TestHypervisorStats(compute_fakes.TestComputev2):
23
- def setUp(self):
24
- super().setUp()
25
-
26
- self.compute_client.get = mock.Mock()
27
-
28
-
29
21
  # Not in fakes.py because hypervisor stats has been deprecated
30
22
 
31
23
 
@@ -61,7 +53,7 @@ def create_one_hypervisor_stats(attrs=None):
61
53
  return stats_info
62
54
 
63
55
 
64
- class TestHypervisorStatsShow(TestHypervisorStats):
56
+ class TestHypervisorStatsShow(compute_fakes.TestComputev2):
65
57
  _stats = create_one_hypervisor_stats()
66
58
 
67
59
  def setUp(self):