python-openstackclient 6.3.0__py3-none-any.whl → 6.5.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 (162) hide show
  1. openstackclient/common/availability_zone.py +4 -4
  2. openstackclient/common/pagination.py +82 -0
  3. openstackclient/compute/v2/flavor.py +2 -16
  4. openstackclient/compute/v2/hypervisor.py +2 -21
  5. openstackclient/compute/v2/keypair.py +2 -9
  6. openstackclient/compute/v2/server.py +220 -131
  7. openstackclient/compute/v2/server_event.py +30 -19
  8. openstackclient/compute/v2/server_group.py +2 -23
  9. openstackclient/compute/v2/server_migration.py +2 -22
  10. openstackclient/compute/v2/usage.py +4 -6
  11. openstackclient/identity/v3/mapping.py +25 -3
  12. openstackclient/identity/v3/policy.py +3 -1
  13. openstackclient/image/v2/cache.py +218 -0
  14. openstackclient/image/v2/image.py +40 -17
  15. openstackclient/image/v2/metadef_namespaces.py +25 -21
  16. openstackclient/image/v2/metadef_objects.py +189 -0
  17. openstackclient/image/v2/metadef_properties.py +284 -0
  18. openstackclient/network/utils.py +100 -0
  19. openstackclient/network/v2/default_security_group_rule.py +418 -0
  20. openstackclient/network/v2/local_ip_association.py +1 -1
  21. openstackclient/network/v2/ndp_proxy.py +7 -3
  22. openstackclient/network/v2/network.py +2 -2
  23. openstackclient/network/v2/port.py +65 -19
  24. openstackclient/network/v2/security_group_rule.py +18 -111
  25. openstackclient/network/v2/subnet.py +1 -0
  26. openstackclient/object/v1/container.py +2 -12
  27. openstackclient/object/v1/object.py +2 -11
  28. openstackclient/tests/functional/base.py +13 -6
  29. openstackclient/tests/functional/identity/v3/test_role.py +11 -3
  30. openstackclient/tests/functional/network/v2/common.py +7 -1
  31. openstackclient/tests/functional/network/v2/test_address_group.py +2 -4
  32. openstackclient/tests/functional/network/v2/test_address_scope.py +0 -6
  33. openstackclient/tests/functional/network/v2/test_default_security_group_rule.py +67 -0
  34. openstackclient/tests/functional/network/v2/test_floating_ip.py +3 -6
  35. openstackclient/tests/functional/network/v2/test_ip_availability.py +3 -8
  36. openstackclient/tests/functional/network/v2/test_l3_conntrack_helper.py +3 -4
  37. openstackclient/tests/functional/network/v2/test_local_ip.py +2 -4
  38. openstackclient/tests/functional/network/v2/test_network.py +18 -17
  39. openstackclient/tests/functional/network/v2/test_network_agent.py +24 -21
  40. openstackclient/tests/functional/network/v2/test_network_flavor.py +0 -6
  41. openstackclient/tests/functional/network/v2/test_network_flavor_profile.py +0 -6
  42. openstackclient/tests/functional/network/v2/test_network_meter.py +6 -6
  43. openstackclient/tests/functional/network/v2/test_network_meter_rule.py +7 -8
  44. openstackclient/tests/functional/network/v2/test_network_ndp_proxy.py +1 -3
  45. openstackclient/tests/functional/network/v2/test_network_qos_policy.py +4 -4
  46. openstackclient/tests/functional/network/v2/test_network_qos_rule.py +16 -20
  47. openstackclient/tests/functional/network/v2/test_network_qos_rule_type.py +4 -4
  48. openstackclient/tests/functional/network/v2/test_network_rbac.py +1 -4
  49. openstackclient/tests/functional/network/v2/test_network_segment.py +7 -12
  50. openstackclient/tests/functional/network/v2/test_network_segment_range.py +3 -4
  51. openstackclient/tests/functional/network/v2/test_network_service_provider.py +2 -4
  52. openstackclient/tests/functional/network/v2/test_network_trunk.py +3 -3
  53. openstackclient/tests/functional/network/v2/test_port.py +2 -8
  54. openstackclient/tests/functional/network/v2/test_router.py +0 -6
  55. openstackclient/tests/functional/network/v2/test_security_group.py +1 -4
  56. openstackclient/tests/functional/network/v2/test_security_group_rule.py +1 -4
  57. openstackclient/tests/functional/network/v2/test_subnet.py +4 -22
  58. openstackclient/tests/functional/network/v2/test_subnet_pool.py +0 -6
  59. openstackclient/tests/unit/common/test_availability_zone.py +28 -30
  60. openstackclient/tests/unit/common/test_extension.py +1 -4
  61. openstackclient/tests/unit/common/test_limits.py +2 -4
  62. openstackclient/tests/unit/common/test_project_cleanup.py +3 -10
  63. openstackclient/tests/unit/common/test_quota.py +18 -24
  64. openstackclient/tests/unit/compute/v2/fakes.py +24 -11
  65. openstackclient/tests/unit/compute/v2/test_agent.py +1 -1
  66. openstackclient/tests/unit/compute/v2/test_aggregate.py +62 -72
  67. openstackclient/tests/unit/compute/v2/test_console.py +18 -30
  68. openstackclient/tests/unit/compute/v2/test_flavor.py +85 -89
  69. openstackclient/tests/unit/compute/v2/test_host.py +12 -19
  70. openstackclient/tests/unit/compute/v2/test_hypervisor.py +23 -25
  71. openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py +2 -6
  72. openstackclient/tests/unit/compute/v2/test_keypair.py +25 -39
  73. openstackclient/tests/unit/compute/v2/test_server.py +316 -365
  74. openstackclient/tests/unit/compute/v2/test_server_backup.py +5 -17
  75. openstackclient/tests/unit/compute/v2/test_server_event.py +23 -25
  76. openstackclient/tests/unit/compute/v2/test_server_group.py +41 -33
  77. openstackclient/tests/unit/compute/v2/test_server_image.py +6 -18
  78. openstackclient/tests/unit/compute/v2/test_server_migration.py +45 -45
  79. openstackclient/tests/unit/compute/v2/test_server_volume.py +15 -31
  80. openstackclient/tests/unit/compute/v2/test_service.py +51 -56
  81. openstackclient/tests/unit/compute/v2/test_usage.py +10 -13
  82. openstackclient/tests/unit/fakes.py +4 -0
  83. openstackclient/tests/unit/identity/v3/test_mappings.py +9 -4
  84. openstackclient/tests/unit/identity/v3/test_trust.py +0 -2
  85. openstackclient/tests/unit/image/v1/fakes.py +2 -1
  86. openstackclient/tests/unit/image/v1/test_image.py +1 -1
  87. openstackclient/tests/unit/image/v2/fakes.py +82 -0
  88. openstackclient/tests/unit/image/v2/test_cache.py +214 -0
  89. openstackclient/tests/unit/image/v2/test_image.py +62 -4
  90. openstackclient/tests/unit/image/v2/test_metadef_namespaces.py +5 -19
  91. openstackclient/tests/unit/image/v2/test_metadef_objects.py +162 -0
  92. openstackclient/tests/unit/image/v2/test_metadef_properties.py +227 -0
  93. openstackclient/tests/unit/integ/cli/test_shell.py +0 -2
  94. openstackclient/tests/unit/network/test_common.py +3 -3
  95. openstackclient/tests/unit/network/v2/fakes.py +1 -0
  96. openstackclient/tests/unit/network/v2/test_default_security_group_rule.py +1133 -0
  97. openstackclient/tests/unit/network/v2/test_floating_ip_compute.py +5 -13
  98. openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py +1 -9
  99. openstackclient/tests/unit/network/v2/test_network.py +33 -0
  100. openstackclient/tests/unit/network/v2/test_network_compute.py +5 -11
  101. openstackclient/tests/unit/network/v2/test_network_trunk.py +6 -8
  102. openstackclient/tests/unit/network/v2/test_port.py +83 -38
  103. openstackclient/tests/unit/network/v2/test_security_group_compute.py +7 -15
  104. openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py +19 -27
  105. openstackclient/tests/unit/network/v2/test_security_group_rule_network.py +3 -6
  106. openstackclient/tests/unit/network/v2/test_subnet.py +92 -0
  107. openstackclient/tests/unit/network/v2/test_subnet_pool.py +11 -13
  108. openstackclient/tests/unit/test_shell.py +1 -7
  109. openstackclient/tests/unit/utils.py +10 -4
  110. openstackclient/tests/unit/volume/v1/fakes.py +7 -1
  111. openstackclient/tests/unit/volume/v1/test_qos_specs.py +2 -2
  112. openstackclient/tests/unit/volume/v1/test_service.py +1 -1
  113. openstackclient/tests/unit/volume/v1/test_transfer_request.py +2 -2
  114. openstackclient/tests/unit/volume/v1/test_type.py +2 -4
  115. openstackclient/tests/unit/volume/v1/test_volume.py +5 -7
  116. openstackclient/tests/unit/volume/v1/test_volume_backup.py +4 -4
  117. openstackclient/tests/unit/volume/v2/fakes.py +32 -12
  118. openstackclient/tests/unit/volume/v2/test_backup_record.py +1 -1
  119. openstackclient/tests/unit/volume/v2/test_consistency_group.py +4 -6
  120. openstackclient/tests/unit/volume/v2/test_consistency_group_snapshot.py +2 -4
  121. openstackclient/tests/unit/volume/v2/test_qos_specs.py +2 -2
  122. openstackclient/tests/unit/volume/v2/test_service.py +1 -1
  123. openstackclient/tests/unit/volume/v2/test_volume.py +78 -16
  124. openstackclient/tests/unit/volume/v2/test_volume_backend.py +10 -22
  125. openstackclient/tests/unit/volume/v2/test_volume_backup.py +76 -89
  126. openstackclient/tests/unit/volume/v2/test_volume_host.py +1 -1
  127. openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +5 -7
  128. openstackclient/tests/unit/volume/v2/test_volume_transfer_request.py +4 -8
  129. openstackclient/tests/unit/volume/v2/test_volume_type.py +164 -24
  130. openstackclient/tests/unit/volume/v3/fakes.py +91 -15
  131. openstackclient/tests/unit/volume/v3/test_block_storage_cleanup.py +3 -7
  132. openstackclient/tests/unit/volume/v3/test_block_storage_cluster.py +11 -31
  133. openstackclient/tests/unit/volume/v3/test_block_storage_log_level.py +6 -16
  134. openstackclient/tests/unit/volume/v3/test_block_storage_manage.py +219 -157
  135. openstackclient/tests/unit/volume/v3/test_block_storage_resource_filter.py +32 -23
  136. openstackclient/tests/unit/volume/v3/test_volume.py +50 -48
  137. openstackclient/tests/unit/volume/v3/test_volume_attachment.py +17 -47
  138. openstackclient/tests/unit/volume/v3/test_volume_group.py +23 -65
  139. openstackclient/tests/unit/volume/v3/test_volume_group_snapshot.py +88 -77
  140. openstackclient/tests/unit/volume/v3/test_volume_group_type.py +14 -42
  141. openstackclient/tests/unit/volume/v3/test_volume_message.py +10 -28
  142. openstackclient/volume/v1/volume.py +2 -14
  143. openstackclient/volume/v2/volume.py +30 -15
  144. openstackclient/volume/v2/volume_backend.py +10 -18
  145. openstackclient/volume/v2/volume_backup.py +18 -15
  146. openstackclient/volume/v2/volume_snapshot.py +2 -12
  147. openstackclient/volume/v2/volume_type.py +211 -14
  148. openstackclient/volume/v3/block_storage_manage.py +72 -11
  149. openstackclient/volume/v3/block_storage_resource_filter.py +33 -11
  150. openstackclient/volume/v3/volume_attachment.py +2 -14
  151. openstackclient/volume/v3/volume_group_snapshot.py +27 -27
  152. openstackclient/volume/v3/volume_message.py +2 -13
  153. {python_openstackclient-6.3.0.dist-info → python_openstackclient-6.5.0.dist-info}/AUTHORS +11 -0
  154. {python_openstackclient-6.3.0.dist-info → python_openstackclient-6.5.0.dist-info}/METADATA +6 -5
  155. {python_openstackclient-6.3.0.dist-info → python_openstackclient-6.5.0.dist-info}/RECORD +160 -151
  156. {python_openstackclient-6.3.0.dist-info → python_openstackclient-6.5.0.dist-info}/entry_points.txt +23 -5
  157. python_openstackclient-6.5.0.dist-info/pbr.json +1 -0
  158. openstackclient/tests/unit/common/test_parseractions.py +0 -233
  159. python_openstackclient-6.3.0.dist-info/pbr.json +0 -1
  160. {python_openstackclient-6.3.0.dist-info → python_openstackclient-6.5.0.dist-info}/LICENSE +0 -0
  161. {python_openstackclient-6.3.0.dist-info → python_openstackclient-6.5.0.dist-info}/WHEEL +0 -0
  162. {python_openstackclient-6.3.0.dist-info → python_openstackclient-6.5.0.dist-info}/top_level.txt +0 -0
@@ -11,8 +11,7 @@
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
- import argparse
14
+
16
15
  import collections
17
16
  import copy
18
17
  import getpass
@@ -33,11 +32,11 @@ from openstackclient.compute.v2 import server
33
32
  from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
34
33
  from openstackclient.tests.unit.image.v2 import fakes as image_fakes
35
34
  from openstackclient.tests.unit.network.v2 import fakes as network_fakes
36
- from openstackclient.tests.unit import utils
37
- from openstackclient.tests.unit.volume.v2 import fakes as volume_fakes
35
+ from openstackclient.tests.unit import utils as test_utils
36
+ from openstackclient.tests.unit.volume.v3 import fakes as volume_fakes
38
37
 
39
38
 
40
- class TestPowerStateColumn(utils.TestCase):
39
+ class TestPowerStateColumn(test_utils.TestCase):
41
40
  def test_human_readable(self):
42
41
  self.assertEqual(
43
42
  'NOSTATE', server.PowerStateColumn(0x00).human_readable()
@@ -67,40 +66,31 @@ class TestServer(compute_fakes.TestComputev2):
67
66
  super(TestServer, self).setUp()
68
67
 
69
68
  # Get a shortcut to the compute client ServerManager Mock
70
- self.servers_mock = self.app.client_manager.compute.servers
69
+ self.servers_mock = self.compute_client.servers
71
70
  self.servers_mock.reset_mock()
72
71
 
73
- self.app.client_manager.sdk_connection = mock.Mock()
74
- self.app.client_manager.sdk_connection.compute = mock.Mock()
75
- self.sdk_client = self.app.client_manager.sdk_connection.compute
76
-
77
72
  # Get a shortcut to the compute client ServerMigrationsManager Mock
78
- self.server_migrations_mock = (
79
- self.app.client_manager.compute.server_migrations
80
- )
73
+ self.server_migrations_mock = self.compute_client.server_migrations
81
74
  self.server_migrations_mock.reset_mock()
82
75
 
83
76
  # Get a shortcut to the compute client VolumeManager mock
84
- self.servers_volumes_mock = self.app.client_manager.compute.volumes
77
+ self.servers_volumes_mock = self.compute_client.volumes
85
78
  self.servers_volumes_mock.reset_mock()
86
79
 
87
80
  # Get a shortcut to the compute client MigrationManager mock
88
- self.migrations_mock = self.app.client_manager.compute.migrations
81
+ self.migrations_mock = self.compute_client.migrations
89
82
  self.migrations_mock.reset_mock()
90
83
 
91
84
  # Get a shortcut to the compute client FlavorManager Mock
92
- self.flavors_mock = self.app.client_manager.compute.flavors
85
+ self.flavors_mock = self.compute_client.flavors
93
86
  self.flavors_mock.reset_mock()
94
87
 
95
88
  # Get a shortcut to the volume client VolumeManager Mock
96
- self.volumes_mock = self.app.client_manager.volume.volumes
89
+ self.volumes_mock = self.volume_client.volumes
97
90
  self.volumes_mock.reset_mock()
98
91
 
99
- self.app.client_manager.sdk_connection.volume = mock.Mock()
100
- self.sdk_volume_client = self.app.client_manager.sdk_connection.volume
101
-
102
92
  # Get a shortcut to the volume client VolumeManager Mock
103
- self.snapshots_mock = self.app.client_manager.volume.volume_snapshots
93
+ self.snapshots_mock = self.volume_client.volume_snapshots
104
94
  self.snapshots_mock.reset_mock()
105
95
 
106
96
  # Set object attributes to be tested. Could be overwritten in subclass.
@@ -115,7 +105,7 @@ class TestServer(compute_fakes.TestComputev2):
115
105
  self.addCleanup(patcher.stop)
116
106
  self.supports_microversion_mock = patcher.start()
117
107
  self._set_mock_microversion(
118
- self.app.client_manager.compute.api_version.get_string()
108
+ self.compute_client.api_version.get_string()
119
109
  )
120
110
 
121
111
  def _set_mock_microversion(self, mock_v):
@@ -155,7 +145,7 @@ class TestServer(compute_fakes.TestComputev2):
155
145
  )
156
146
 
157
147
  # This is the return value for compute_client.find_server()
158
- self.sdk_client.find_server.side_effect = servers
148
+ self.compute_sdk_client.find_server.side_effect = servers
159
149
 
160
150
  return servers
161
151
 
@@ -163,7 +153,7 @@ class TestServer(compute_fakes.TestComputev2):
163
153
  volumes = volume_fakes.create_sdk_volumes(count=count)
164
154
 
165
155
  # This is the return value for volume_client.find_volume()
166
- self.sdk_volume_client.find_volume.side_effect = volumes
156
+ self.volume_sdk_client.find_volume.side_effect = volumes
167
157
 
168
158
  return volumes
169
159
 
@@ -179,7 +169,7 @@ class TestServer(compute_fakes.TestComputev2):
179
169
  result = self.cmd.take_action(parsed_args)
180
170
 
181
171
  calls = [call(s.id) for s in servers]
182
- method = getattr(self.sdk_client, method_name)
172
+ method = getattr(self.compute_sdk_client, method_name)
183
173
  method.assert_has_calls(calls)
184
174
  self.assertIsNone(result)
185
175
 
@@ -237,7 +227,9 @@ class TestServerAddFixedIP(TestServer):
237
227
  servers = self.setup_sdk_servers_mock(count=1)
238
228
  network = compute_fakes.create_one_network()
239
229
  interface = compute_fakes.create_one_server_interface()
240
- self.sdk_client.create_server_interface.return_value = interface
230
+ self.compute_sdk_client.create_server_interface.return_value = (
231
+ interface
232
+ )
241
233
 
242
234
  with mock.patch.object(
243
235
  self.app.client_manager,
@@ -272,7 +264,7 @@ class TestServerAddFixedIP(TestServer):
272
264
 
273
265
  self.assertEqual(expected_columns, columns)
274
266
  self.assertEqual(expected_data, tuple(data))
275
- self.sdk_client.create_server_interface.assert_called_once_with(
267
+ self.compute_sdk_client.create_server_interface.assert_called_once_with(
276
268
  servers[0].id, net_id=network['id']
277
269
  )
278
270
 
@@ -283,7 +275,9 @@ class TestServerAddFixedIP(TestServer):
283
275
  servers = self.setup_sdk_servers_mock(count=1)
284
276
  network = compute_fakes.create_one_network()
285
277
  interface = compute_fakes.create_one_server_interface()
286
- self.sdk_client.create_server_interface.return_value = interface
278
+ self.compute_sdk_client.create_server_interface.return_value = (
279
+ interface
280
+ )
287
281
 
288
282
  with mock.patch.object(
289
283
  self.app.client_manager,
@@ -324,7 +318,7 @@ class TestServerAddFixedIP(TestServer):
324
318
 
325
319
  self.assertEqual(expected_columns, columns)
326
320
  self.assertEqual(expected_data, tuple(data))
327
- self.sdk_client.create_server_interface.assert_called_once_with(
321
+ self.compute_sdk_client.create_server_interface.assert_called_once_with(
328
322
  servers[0].id,
329
323
  net_id=network['id'],
330
324
  fixed_ips=[{'ip_address': '5.6.7.8'}],
@@ -337,7 +331,9 @@ class TestServerAddFixedIP(TestServer):
337
331
  servers = self.setup_sdk_servers_mock(count=1)
338
332
  network = compute_fakes.create_one_network()
339
333
  interface = compute_fakes.create_one_server_interface()
340
- self.sdk_client.create_server_interface.return_value = interface
334
+ self.compute_sdk_client.create_server_interface.return_value = (
335
+ interface
336
+ )
341
337
 
342
338
  with mock.patch.object(
343
339
  self.app.client_manager,
@@ -383,7 +379,7 @@ class TestServerAddFixedIP(TestServer):
383
379
 
384
380
  self.assertEqual(expected_columns, columns)
385
381
  self.assertEqual(expected_data, tuple(data))
386
- self.sdk_client.create_server_interface.assert_called_once_with(
382
+ self.compute_sdk_client.create_server_interface.assert_called_once_with(
387
383
  servers[0].id,
388
384
  net_id=network['id'],
389
385
  fixed_ips=[{'ip_address': '5.6.7.8'}],
@@ -397,7 +393,9 @@ class TestServerAddFixedIP(TestServer):
397
393
  servers = self.setup_sdk_servers_mock(count=1)
398
394
  network = compute_fakes.create_one_network()
399
395
  interface = compute_fakes.create_one_server_interface()
400
- self.sdk_client.create_server_interface.return_value = interface
396
+ self.compute_sdk_client.create_server_interface.return_value = (
397
+ interface
398
+ )
401
399
 
402
400
  with mock.patch.object(
403
401
  self.app.client_manager,
@@ -443,7 +441,7 @@ class TestServerAddFixedIP(TestServer):
443
441
 
444
442
  self.assertEqual(expected_columns, columns)
445
443
  self.assertEqual(expected_data, tuple(data))
446
- self.sdk_client.create_server_interface.assert_called_once_with(
444
+ self.compute_sdk_client.create_server_interface.assert_called_once_with(
447
445
  servers[0].id,
448
446
  net_id=network['id'],
449
447
  fixed_ips=[{'ip_address': '5.6.7.8'}],
@@ -749,7 +747,7 @@ class TestServerAddPort(TestServer):
749
747
 
750
748
  result = self.cmd.take_action(parsed_args)
751
749
 
752
- self.sdk_client.create_server_interface.assert_called_once_with(
750
+ self.compute_sdk_client.create_server_interface.assert_called_once_with(
753
751
  servers[0], port_id=port_id
754
752
  )
755
753
  self.assertIsNone(result)
@@ -767,10 +765,6 @@ class TestServerAddPort(TestServer):
767
765
 
768
766
  @mock.patch.object(sdk_utils, 'supports_microversion', return_value=True)
769
767
  def test_server_add_port_with_tag(self, sm_mock):
770
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
771
- '2.49'
772
- )
773
-
774
768
  servers = self.setup_sdk_servers_mock(count=1)
775
769
  self.find_port.return_value.id = 'fake-port'
776
770
  arglist = [
@@ -789,16 +783,12 @@ class TestServerAddPort(TestServer):
789
783
  result = self.cmd.take_action(parsed_args)
790
784
  self.assertIsNone(result)
791
785
 
792
- self.sdk_client.create_server_interface.assert_called_once_with(
786
+ self.compute_sdk_client.create_server_interface.assert_called_once_with(
793
787
  servers[0], port_id='fake-port', tag='tag1'
794
788
  )
795
789
 
796
790
  @mock.patch.object(sdk_utils, 'supports_microversion', return_value=False)
797
791
  def test_server_add_port_with_tag_pre_v249(self, sm_mock):
798
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
799
- '2.48'
800
- )
801
-
802
792
  servers = self.setup_servers_mock(count=1)
803
793
  self.find_port.return_value.id = 'fake-port'
804
794
  arglist = [
@@ -841,7 +831,7 @@ class TestServerVolume(TestServer):
841
831
  attrs=attrs
842
832
  )
843
833
 
844
- self.sdk_client.create_volume_attachment.return_value = (
834
+ self.compute_sdk_client.create_volume_attachment.return_value = (
845
835
  self.volume_attachment
846
836
  )
847
837
 
@@ -881,7 +871,7 @@ class TestServerAddVolume(TestServerVolume):
881
871
 
882
872
  self.assertEqual(expected_columns, columns)
883
873
  self.assertEqual(expected_data, data)
884
- self.sdk_client.create_volume_attachment.assert_called_once_with(
874
+ self.compute_sdk_client.create_volume_attachment.assert_called_once_with(
885
875
  self.servers[0], volumeId=self.volumes[0].id, device='/dev/sdb'
886
876
  )
887
877
 
@@ -924,7 +914,7 @@ class TestServerAddVolume(TestServerVolume):
924
914
 
925
915
  self.assertEqual(expected_columns, columns)
926
916
  self.assertEqual(expected_data, data)
927
- self.sdk_client.create_volume_attachment.assert_called_once_with(
917
+ self.compute_sdk_client.create_volume_attachment.assert_called_once_with(
928
918
  self.servers[0],
929
919
  volumeId=self.volumes[0].id,
930
920
  device='/dev/sdb',
@@ -995,7 +985,7 @@ class TestServerAddVolume(TestServerVolume):
995
985
  columns, data = self.cmd.take_action(parsed_args)
996
986
  self.assertEqual(expected_columns, columns)
997
987
  self.assertEqual(expected_data, data)
998
- self.sdk_client.create_volume_attachment.assert_called_once_with(
988
+ self.compute_sdk_client.create_volume_attachment.assert_called_once_with(
999
989
  self.servers[0],
1000
990
  volumeId=self.volumes[0].id,
1001
991
  device='/dev/sdb',
@@ -1046,7 +1036,7 @@ class TestServerAddVolume(TestServerVolume):
1046
1036
 
1047
1037
  self.assertEqual(expected_columns, columns)
1048
1038
  self.assertEqual(expected_data, data)
1049
- self.sdk_client.create_volume_attachment.assert_called_once_with(
1039
+ self.compute_sdk_client.create_volume_attachment.assert_called_once_with(
1050
1040
  self.servers[0],
1051
1041
  volumeId=self.volumes[0].id,
1052
1042
  device='/dev/sdb',
@@ -1137,7 +1127,7 @@ class TestServerAddVolume(TestServerVolume):
1137
1127
  ('disable_delete_on_termination', True),
1138
1128
  ]
1139
1129
  ex = self.assertRaises(
1140
- utils.ParserException,
1130
+ test_utils.ParserException,
1141
1131
  self.check_parser,
1142
1132
  self.cmd,
1143
1133
  arglist,
@@ -1173,7 +1163,7 @@ class TestServerRemoveVolume(TestServerVolume):
1173
1163
  result = self.cmd.take_action(parsed_args)
1174
1164
 
1175
1165
  self.assertIsNone(result)
1176
- self.sdk_client.delete_volume_attachment.assert_called_once_with(
1166
+ self.compute_sdk_client.delete_volume_attachment.assert_called_once_with(
1177
1167
  self.volumes[0],
1178
1168
  self.servers[0],
1179
1169
  ignore_missing=False,
@@ -1208,7 +1198,7 @@ class TestServerAddNetwork(TestServer):
1208
1198
 
1209
1199
  result = self.cmd.take_action(parsed_args)
1210
1200
 
1211
- self.sdk_client.create_server_interface.assert_called_once_with(
1201
+ self.compute_sdk_client.create_server_interface.assert_called_once_with(
1212
1202
  servers[0], net_id=net_id
1213
1203
  )
1214
1204
  self.assertIsNone(result)
@@ -1226,10 +1216,6 @@ class TestServerAddNetwork(TestServer):
1226
1216
 
1227
1217
  @mock.patch.object(sdk_utils, 'supports_microversion', return_value=True)
1228
1218
  def test_server_add_network_with_tag(self, sm_mock):
1229
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
1230
- '2.49'
1231
- )
1232
-
1233
1219
  servers = self.setup_sdk_servers_mock(count=1)
1234
1220
  self.find_network.return_value.id = 'fake-network'
1235
1221
 
@@ -1249,16 +1235,12 @@ class TestServerAddNetwork(TestServer):
1249
1235
  result = self.cmd.take_action(parsed_args)
1250
1236
  self.assertIsNone(result)
1251
1237
 
1252
- self.sdk_client.create_server_interface.assert_called_once_with(
1238
+ self.compute_sdk_client.create_server_interface.assert_called_once_with(
1253
1239
  servers[0], net_id='fake-network', tag='tag1'
1254
1240
  )
1255
1241
 
1256
1242
  @mock.patch.object(sdk_utils, 'supports_microversion', return_value=False)
1257
1243
  def test_server_add_network_with_tag_pre_v249(self, sm_mock):
1258
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
1259
- '2.48'
1260
- )
1261
-
1262
1244
  servers = self.setup_sdk_servers_mock(count=1)
1263
1245
  self.find_network.return_value.id = 'fake-network'
1264
1246
 
@@ -1331,7 +1313,6 @@ class TestServerCreate(TestServer):
1331
1313
  'id',
1332
1314
  'image',
1333
1315
  'name',
1334
- 'networks',
1335
1316
  'properties',
1336
1317
  )
1337
1318
 
@@ -1345,7 +1326,6 @@ class TestServerCreate(TestServer):
1345
1326
  self.new_server.id,
1346
1327
  self.image.name + ' (' + self.new_server.image.get('id') + ')',
1347
1328
  self.new_server.name,
1348
- self.new_server.networks,
1349
1329
  format_columns.DictColumn(self.new_server.metadata),
1350
1330
  )
1351
1331
  return datalist
@@ -1390,7 +1370,7 @@ class TestServerCreate(TestServer):
1390
1370
  ]
1391
1371
 
1392
1372
  self.assertRaises(
1393
- utils.ParserException,
1373
+ test_utils.ParserException,
1394
1374
  self.check_parser,
1395
1375
  self.cmd,
1396
1376
  arglist,
@@ -1464,6 +1444,8 @@ class TestServerCreate(TestServer):
1464
1444
  'a=b',
1465
1445
  '--hint',
1466
1446
  'a=c',
1447
+ '--server-group',
1448
+ 'servergroup',
1467
1449
  self.new_server.name,
1468
1450
  ]
1469
1451
  verifylist = [
@@ -1472,22 +1454,26 @@ class TestServerCreate(TestServer):
1472
1454
  ('key_name', 'keyname'),
1473
1455
  ('properties', {'Beta': 'b'}),
1474
1456
  ('security_group', ['securitygroup']),
1475
- ('hint', {'a': ['b', 'c']}),
1457
+ ('hints', {'a': ['b', 'c']}),
1458
+ ('server_group', 'servergroup'),
1476
1459
  ('config_drive', True),
1477
1460
  ('password', 'passw0rd'),
1478
1461
  ('server_name', self.new_server.name),
1479
1462
  ]
1480
1463
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
1481
1464
 
1482
- # In base command class ShowOne in cliff, abstract method take_action()
1483
- # returns a two-part tuple with a tuple of column names and a tuple of
1484
- # data to be shown.
1465
+ fake_server_group = compute_fakes.create_one_server_group()
1466
+ self.compute_client.server_groups.get.return_value = fake_server_group
1467
+
1485
1468
  fake_sg = network_fakes.FakeSecurityGroup.create_security_groups()
1486
1469
  mock_find_sg = network_fakes.FakeSecurityGroup.get_security_groups(
1487
1470
  fake_sg
1488
1471
  )
1489
1472
  self.app.client_manager.network.find_security_group = mock_find_sg
1490
1473
 
1474
+ # In base command class ShowOne in cliff, abstract method take_action()
1475
+ # returns a two-part tuple with a tuple of column names and a tuple of
1476
+ # data to be shown.
1491
1477
  columns, data = self.cmd.take_action(parsed_args)
1492
1478
 
1493
1479
  mock_find_sg.assert_called_once_with(
@@ -1507,7 +1493,7 @@ class TestServerCreate(TestServer):
1507
1493
  admin_pass='passw0rd',
1508
1494
  block_device_mapping_v2=[],
1509
1495
  nics=[],
1510
- scheduler_hints={'a': ['b', 'c']},
1496
+ scheduler_hints={'a': ['b', 'c'], 'group': fake_server_group.id},
1511
1497
  config_drive=True,
1512
1498
  )
1513
1499
  # ServerManager.create(name, image, flavor, **kwargs)
@@ -1582,7 +1568,7 @@ class TestServerCreate(TestServer):
1582
1568
  return_value=False,
1583
1569
  ):
1584
1570
  with mock.patch.object(
1585
- self.app.client_manager.compute.api,
1571
+ self.compute_client.api,
1586
1572
  'security_group_find',
1587
1573
  return_value={'name': 'fake_sg'},
1588
1574
  ) as mock_find:
@@ -1788,9 +1774,7 @@ class TestServerCreate(TestServer):
1788
1774
  self.assertEqual(self.datalist(), data)
1789
1775
 
1790
1776
  def test_server_create_with_network_tag(self):
1791
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
1792
- '2.43'
1793
- )
1777
+ self.compute_client.api_version = api_versions.APIVersion('2.43')
1794
1778
 
1795
1779
  arglist = [
1796
1780
  '--image',
@@ -1866,9 +1850,7 @@ class TestServerCreate(TestServer):
1866
1850
  self.app.client_manager.network.find_network.assert_called_once()
1867
1851
 
1868
1852
  def test_server_create_with_network_tag_pre_v243(self):
1869
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
1870
- '2.42'
1871
- )
1853
+ self.compute_client.api_version = api_versions.APIVersion('2.42')
1872
1854
 
1873
1855
  arglist = [
1874
1856
  '--image',
@@ -1904,9 +1886,7 @@ class TestServerCreate(TestServer):
1904
1886
 
1905
1887
  def _test_server_create_with_auto_network(self, arglist):
1906
1888
  # requires API microversion 2.37 or later
1907
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
1908
- '2.37'
1909
- )
1889
+ self.compute_client.api_version = api_versions.APIVersion('2.37')
1910
1890
 
1911
1891
  verifylist = [
1912
1892
  ('image', 'image1'),
@@ -1972,9 +1952,7 @@ class TestServerCreate(TestServer):
1972
1952
 
1973
1953
  def test_server_create_with_auto_network_pre_v237(self):
1974
1954
  # use an API microversion that's too old
1975
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
1976
- '2.36'
1977
- )
1955
+ self.compute_client.api_version = api_versions.APIVersion('2.36')
1978
1956
 
1979
1957
  arglist = [
1980
1958
  '--image',
@@ -2010,9 +1988,7 @@ class TestServerCreate(TestServer):
2010
1988
  def test_server_create_with_auto_network_default_v2_37(self):
2011
1989
  """Tests creating a server without specifying --nic using 2.37."""
2012
1990
  # requires API microversion 2.37 or later
2013
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
2014
- '2.37'
2015
- )
1991
+ self.compute_client.api_version = api_versions.APIVersion('2.37')
2016
1992
 
2017
1993
  arglist = [
2018
1994
  '--image',
@@ -2058,9 +2034,7 @@ class TestServerCreate(TestServer):
2058
2034
 
2059
2035
  def _test_server_create_with_none_network(self, arglist):
2060
2036
  # requires API microversion 2.37 or later
2061
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
2062
- '2.37'
2063
- )
2037
+ self.compute_client.api_version = api_versions.APIVersion('2.37')
2064
2038
 
2065
2039
  verifylist = [
2066
2040
  ('image', 'image1'),
@@ -2126,9 +2100,7 @@ class TestServerCreate(TestServer):
2126
2100
 
2127
2101
  def test_server_create_with_none_network_pre_v237(self):
2128
2102
  # use an API microversion that's too old
2129
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
2130
- '2.36'
2131
- )
2103
+ self.compute_client.api_version = api_versions.APIVersion('2.36')
2132
2104
 
2133
2105
  arglist = [
2134
2106
  '--image',
@@ -2224,7 +2196,7 @@ class TestServerCreate(TestServer):
2224
2196
  self.new_server.name,
2225
2197
  ]
2226
2198
  self.assertRaises(
2227
- argparse.ArgumentTypeError,
2199
+ test_utils.ParserException,
2228
2200
  self.check_parser,
2229
2201
  self.cmd,
2230
2202
  arglist,
@@ -2243,7 +2215,7 @@ class TestServerCreate(TestServer):
2243
2215
  self.new_server.name,
2244
2216
  ]
2245
2217
  self.assertRaises(
2246
- argparse.ArgumentTypeError,
2218
+ test_utils.ParserException,
2247
2219
  self.check_parser,
2248
2220
  self.cmd,
2249
2221
  arglist,
@@ -2262,7 +2234,7 @@ class TestServerCreate(TestServer):
2262
2234
  self.new_server.name,
2263
2235
  ]
2264
2236
  self.assertRaises(
2265
- argparse.ArgumentTypeError,
2237
+ test_utils.ParserException,
2266
2238
  self.check_parser,
2267
2239
  self.cmd,
2268
2240
  arglist,
@@ -2281,7 +2253,7 @@ class TestServerCreate(TestServer):
2281
2253
  self.new_server.name,
2282
2254
  ]
2283
2255
  self.assertRaises(
2284
- argparse.ArgumentTypeError,
2256
+ test_utils.ParserException,
2285
2257
  self.check_parser,
2286
2258
  self.cmd,
2287
2259
  arglist,
@@ -2336,7 +2308,7 @@ class TestServerCreate(TestServer):
2336
2308
  self.new_server.name, self.image, self.flavor, **kwargs
2337
2309
  )
2338
2310
  self.assertEqual(self.columns, columns)
2339
- self.assertEqual(self.datalist(), data)
2311
+ self.assertTupleEqual(self.datalist(), data)
2340
2312
 
2341
2313
  @mock.patch.object(common_utils, 'wait_for_status', return_value=False)
2342
2314
  def test_server_create_with_wait_fails(self, mock_wait_for_status):
@@ -2358,7 +2330,9 @@ class TestServerCreate(TestServer):
2358
2330
 
2359
2331
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
2360
2332
 
2361
- self.assertRaises(SystemExit, self.cmd.take_action, parsed_args)
2333
+ self.assertRaises(
2334
+ exceptions.CommandError, self.cmd.take_action, parsed_args
2335
+ )
2362
2336
 
2363
2337
  mock_wait_for_status.assert_called_once_with(
2364
2338
  self.servers_mock.get,
@@ -2611,9 +2585,7 @@ class TestServerCreate(TestServer):
2611
2585
  self.assertEqual(self.datalist(), data)
2612
2586
 
2613
2587
  def test_server_create_with_block_device_full(self):
2614
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
2615
- '2.67'
2616
- )
2588
+ self.compute_client.api_version = api_versions.APIVersion('2.67')
2617
2589
 
2618
2590
  block_device = (
2619
2591
  f'uuid={self.volume.id},source_type=volume,'
@@ -2714,9 +2686,7 @@ class TestServerCreate(TestServer):
2714
2686
  self.assertEqual(self.datalist(), data)
2715
2687
 
2716
2688
  def test_server_create_with_block_device_from_file(self):
2717
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
2718
- '2.67'
2719
- )
2689
+ self.compute_client.api_version = api_versions.APIVersion('2.67')
2720
2690
 
2721
2691
  block_device = {
2722
2692
  'uuid': self.volume.id,
@@ -2870,9 +2840,7 @@ class TestServerCreate(TestServer):
2870
2840
  )
2871
2841
 
2872
2842
  def test_server_create_with_block_device_tag_pre_v242(self):
2873
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
2874
- '2.41'
2875
- )
2843
+ self.compute_client.api_version = api_versions.APIVersion('2.41')
2876
2844
 
2877
2845
  block_device = f'uuid={self.volume.name},tag=foo'
2878
2846
  arglist = [
@@ -2893,9 +2861,7 @@ class TestServerCreate(TestServer):
2893
2861
  )
2894
2862
 
2895
2863
  def test_server_create_with_block_device_volume_type_pre_v267(self):
2896
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
2897
- '2.66'
2898
- )
2864
+ self.compute_client.api_version = api_versions.APIVersion('2.66')
2899
2865
 
2900
2866
  block_device = f'uuid={self.volume.name},volume_type=foo'
2901
2867
  arglist = [
@@ -3339,7 +3305,7 @@ class TestServerCreate(TestServer):
3339
3305
  self.new_server.name,
3340
3306
  ]
3341
3307
  self.assertRaises(
3342
- argparse.ArgumentTypeError,
3308
+ test_utils.ParserException,
3343
3309
  self.check_parser,
3344
3310
  self.cmd,
3345
3311
  arglist,
@@ -3357,7 +3323,7 @@ class TestServerCreate(TestServer):
3357
3323
  self.new_server.name,
3358
3324
  ]
3359
3325
  self.assertRaises(
3360
- argparse.ArgumentTypeError,
3326
+ test_utils.ParserException,
3361
3327
  self.check_parser,
3362
3328
  self.cmd,
3363
3329
  arglist,
@@ -3375,7 +3341,7 @@ class TestServerCreate(TestServer):
3375
3341
  self.new_server.name,
3376
3342
  ]
3377
3343
  self.assertRaises(
3378
- argparse.ArgumentTypeError,
3344
+ test_utils.ParserException,
3379
3345
  self.check_parser,
3380
3346
  self.cmd,
3381
3347
  arglist,
@@ -3414,6 +3380,34 @@ class TestServerCreate(TestServer):
3414
3380
  '--volume is not allowed with --boot-from-volume', str(ex)
3415
3381
  )
3416
3382
 
3383
+ def test_server_create_boot_from_volume_no_image(self):
3384
+ # Test --boot-from-volume option without --image or
3385
+ # --image-property.
3386
+ arglist = [
3387
+ '--flavor',
3388
+ self.flavor.id,
3389
+ '--boot-from-volume',
3390
+ '1',
3391
+ self.new_server.name,
3392
+ ]
3393
+ verifylist = [
3394
+ ('flavor', self.flavor.id),
3395
+ ('boot_from_volume', 1),
3396
+ ('config_drive', False),
3397
+ ('server_name', self.new_server.name),
3398
+ ]
3399
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
3400
+
3401
+ ex = self.assertRaises(
3402
+ exceptions.CommandError, self.cmd.take_action, parsed_args
3403
+ )
3404
+ # Assert it is the error we expect.
3405
+ self.assertIn(
3406
+ 'An image (--image or --image-property) is required '
3407
+ 'to support --boot-from-volume option',
3408
+ str(ex),
3409
+ )
3410
+
3417
3411
  def test_server_create_image_property(self):
3418
3412
  arglist = [
3419
3413
  '--image-property',
@@ -3768,7 +3762,7 @@ class TestServerCreate(TestServer):
3768
3762
  self.new_server.name,
3769
3763
  ]
3770
3764
  self.assertRaises(
3771
- argparse.ArgumentTypeError,
3765
+ test_utils.ParserException,
3772
3766
  self.check_parser,
3773
3767
  self.cmd,
3774
3768
  arglist,
@@ -3786,7 +3780,7 @@ class TestServerCreate(TestServer):
3786
3780
  self.new_server.name,
3787
3781
  ]
3788
3782
  self.assertRaises(
3789
- argparse.ArgumentTypeError,
3783
+ test_utils.ParserException,
3790
3784
  self.check_parser,
3791
3785
  self.cmd,
3792
3786
  arglist,
@@ -3805,7 +3799,7 @@ class TestServerCreate(TestServer):
3805
3799
  self.new_server.name,
3806
3800
  ]
3807
3801
  self.assertRaises(
3808
- argparse.ArgumentTypeError,
3802
+ test_utils.ParserException,
3809
3803
  self.check_parser,
3810
3804
  self.cmd,
3811
3805
  arglist,
@@ -3823,7 +3817,7 @@ class TestServerCreate(TestServer):
3823
3817
  self.new_server.name,
3824
3818
  ]
3825
3819
  self.assertRaises(
3826
- argparse.ArgumentTypeError,
3820
+ test_utils.ParserException,
3827
3821
  self.check_parser,
3828
3822
  self.cmd,
3829
3823
  arglist,
@@ -3832,7 +3826,7 @@ class TestServerCreate(TestServer):
3832
3826
 
3833
3827
  def test_server_create_with_description_api_newer(self):
3834
3828
  # Description is supported for nova api version 2.19 or above
3835
- self.app.client_manager.compute.api_version = 2.19
3829
+ self.compute_client.api_version = 2.19
3836
3830
 
3837
3831
  arglist = [
3838
3832
  '--image',
@@ -3888,7 +3882,7 @@ class TestServerCreate(TestServer):
3888
3882
 
3889
3883
  def test_server_create_with_description_api_older(self):
3890
3884
  # Description is not supported for nova api version below 2.19
3891
- self.app.client_manager.compute.api_version = 2.18
3885
+ self.compute_client.api_version = 2.18
3892
3886
 
3893
3887
  arglist = [
3894
3888
  '--image',
@@ -3914,9 +3908,7 @@ class TestServerCreate(TestServer):
3914
3908
  )
3915
3909
 
3916
3910
  def test_server_create_with_tag(self):
3917
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
3918
- '2.52'
3919
- )
3911
+ self.compute_client.api_version = api_versions.APIVersion('2.52')
3920
3912
 
3921
3913
  arglist = [
3922
3914
  '--image',
@@ -3969,9 +3961,7 @@ class TestServerCreate(TestServer):
3969
3961
  self.assertFalse(self.flavors_mock.called)
3970
3962
 
3971
3963
  def test_server_create_with_tag_pre_v252(self):
3972
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
3973
- '2.51'
3974
- )
3964
+ self.compute_client.api_version = api_versions.APIVersion('2.51')
3975
3965
 
3976
3966
  arglist = [
3977
3967
  '--image',
@@ -4002,7 +3992,7 @@ class TestServerCreate(TestServer):
4002
3992
 
4003
3993
  def test_server_create_with_host_v274(self):
4004
3994
  # Explicit host is supported for nova api version 2.74 or above
4005
- self.app.client_manager.compute.api_version = 2.74
3995
+ self.compute_client.api_version = 2.74
4006
3996
 
4007
3997
  arglist = [
4008
3998
  '--image',
@@ -4058,7 +4048,7 @@ class TestServerCreate(TestServer):
4058
4048
 
4059
4049
  def test_server_create_with_host_pre_v274(self):
4060
4050
  # Host is not supported for nova api version below 2.74
4061
- self.app.client_manager.compute.api_version = 2.73
4051
+ self.compute_client.api_version = 2.73
4062
4052
 
4063
4053
  arglist = [
4064
4054
  '--image',
@@ -4086,7 +4076,7 @@ class TestServerCreate(TestServer):
4086
4076
  def test_server_create_with_hypervisor_hostname_v274(self):
4087
4077
  # Explicit hypervisor_hostname is supported for nova api version
4088
4078
  # 2.74 or above
4089
- self.app.client_manager.compute.api_version = 2.74
4079
+ self.compute_client.api_version = 2.74
4090
4080
 
4091
4081
  arglist = [
4092
4082
  '--image',
@@ -4142,7 +4132,7 @@ class TestServerCreate(TestServer):
4142
4132
 
4143
4133
  def test_server_create_with_hypervisor_hostname_pre_v274(self):
4144
4134
  # Hypervisor_hostname is not supported for nova api version below 2.74
4145
- self.app.client_manager.compute.api_version = 2.73
4135
+ self.compute_client.api_version = 2.73
4146
4136
 
4147
4137
  arglist = [
4148
4138
  '--image',
@@ -4170,7 +4160,7 @@ class TestServerCreate(TestServer):
4170
4160
  def test_server_create_with_host_and_hypervisor_hostname_v274(self):
4171
4161
  # Explicit host and hypervisor_hostname is supported for nova api
4172
4162
  # version 2.74 or above
4173
- self.app.client_manager.compute.api_version = 2.74
4163
+ self.compute_client.api_version = 2.74
4174
4164
 
4175
4165
  arglist = [
4176
4166
  '--image',
@@ -4229,9 +4219,7 @@ class TestServerCreate(TestServer):
4229
4219
  self.assertFalse(self.flavors_mock.called)
4230
4220
 
4231
4221
  def test_server_create_with_hostname_v290(self):
4232
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
4233
- '2.90'
4234
- )
4222
+ self.compute_client.api_version = api_versions.APIVersion('2.90')
4235
4223
 
4236
4224
  arglist = [
4237
4225
  '--image',
@@ -4280,9 +4268,7 @@ class TestServerCreate(TestServer):
4280
4268
  self.assertFalse(self.flavors_mock.called)
4281
4269
 
4282
4270
  def test_server_create_with_hostname_pre_v290(self):
4283
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
4284
- '2.89'
4285
- )
4271
+ self.compute_client.api_version = api_versions.APIVersion('2.89')
4286
4272
 
4287
4273
  arglist = [
4288
4274
  '--image',
@@ -4307,9 +4293,7 @@ class TestServerCreate(TestServer):
4307
4293
  )
4308
4294
 
4309
4295
  def test_server_create_with_trusted_image_cert(self):
4310
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
4311
- '2.63'
4312
- )
4296
+ self.compute_client.api_version = api_versions.APIVersion('2.63')
4313
4297
 
4314
4298
  arglist = [
4315
4299
  '--image',
@@ -4360,9 +4344,7 @@ class TestServerCreate(TestServer):
4360
4344
  self.assertFalse(self.flavors_mock.called)
4361
4345
 
4362
4346
  def test_server_create_with_trusted_image_cert_prev263(self):
4363
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
4364
- '2.62'
4365
- )
4347
+ self.compute_client.api_version = api_versions.APIVersion('2.62')
4366
4348
 
4367
4349
  arglist = [
4368
4350
  '--image',
@@ -4389,9 +4371,7 @@ class TestServerCreate(TestServer):
4389
4371
  )
4390
4372
 
4391
4373
  def test_server_create_with_trusted_image_cert_from_volume(self):
4392
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
4393
- '2.63'
4394
- )
4374
+ self.compute_client.api_version = api_versions.APIVersion('2.63')
4395
4375
  arglist = [
4396
4376
  '--volume',
4397
4377
  'volume1',
@@ -4417,9 +4397,7 @@ class TestServerCreate(TestServer):
4417
4397
  )
4418
4398
 
4419
4399
  def test_server_create_with_trusted_image_cert_from_snapshot(self):
4420
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
4421
- '2.63'
4422
- )
4400
+ self.compute_client.api_version = api_versions.APIVersion('2.63')
4423
4401
  arglist = [
4424
4402
  '--snapshot',
4425
4403
  'snapshot1',
@@ -4445,9 +4423,7 @@ class TestServerCreate(TestServer):
4445
4423
  )
4446
4424
 
4447
4425
  def test_server_create_with_trusted_image_cert_boot_from_volume(self):
4448
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
4449
- '2.63'
4450
- )
4426
+ self.compute_client.api_version = api_versions.APIVersion('2.63')
4451
4427
  arglist = [
4452
4428
  '--image',
4453
4429
  'image1',
@@ -4598,7 +4574,9 @@ class TestServerDelete(TestServer):
4598
4574
  ]
4599
4575
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
4600
4576
 
4601
- self.assertRaises(SystemExit, self.cmd.take_action, parsed_args)
4577
+ self.assertRaises(
4578
+ exceptions.CommandError, self.cmd.take_action, parsed_args
4579
+ )
4602
4580
 
4603
4581
  self.servers_mock.delete.assert_called_with(servers[0].id)
4604
4582
  mock_wait_for_delete.assert_called_once_with(
@@ -4633,7 +4611,9 @@ class TestServerDumpCreate(TestServer):
4633
4611
 
4634
4612
  self.assertIsNone(result)
4635
4613
  for s in servers:
4636
- s.trigger_crash_dump.assert_called_once_with(self.sdk_client)
4614
+ s.trigger_crash_dump.assert_called_once_with(
4615
+ self.compute_sdk_client
4616
+ )
4637
4617
 
4638
4618
  def test_server_dump_one_server(self):
4639
4619
  self.run_test_server_dump(1)
@@ -4708,12 +4688,12 @@ class _TestServerList(TestServer):
4708
4688
  self.image_client.get_image.return_value = self.image
4709
4689
 
4710
4690
  self.flavor = compute_fakes.create_one_flavor()
4711
- self.sdk_client.find_flavor.return_value = self.flavor
4691
+ self.compute_sdk_client.find_flavor.return_value = self.flavor
4712
4692
  self.attrs['flavor'] = {'original_name': self.flavor.name}
4713
4693
 
4714
4694
  # The servers to be listed.
4715
4695
  self.servers = self.setup_sdk_servers_mock(3)
4716
- self.sdk_client.servers.return_value = self.servers
4696
+ self.compute_sdk_client.servers.return_value = self.servers
4717
4697
 
4718
4698
  # Get the command object to test
4719
4699
  self.cmd = server.ListServer(self.app, None)
@@ -4732,7 +4712,7 @@ class TestServerList(_TestServerList):
4732
4712
  ]
4733
4713
 
4734
4714
  Flavor = collections.namedtuple('Flavor', 'id name')
4735
- self.sdk_client.flavors.return_value = [
4715
+ self.compute_sdk_client.flavors.return_value = [
4736
4716
  Flavor(id=s.flavor['id'], name=self.flavor.name)
4737
4717
  for s in self.servers
4738
4718
  ]
@@ -4762,9 +4742,9 @@ class TestServerList(_TestServerList):
4762
4742
 
4763
4743
  columns, data = self.cmd.take_action(parsed_args)
4764
4744
 
4765
- self.sdk_client.servers.assert_called_with(**self.kwargs)
4745
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
4766
4746
  self.image_client.images.assert_called()
4767
- self.sdk_client.flavors.assert_called()
4747
+ self.compute_sdk_client.flavors.assert_called()
4768
4748
  # we did not pass image or flavor, so gets on those must be absent
4769
4749
  self.assertFalse(self.flavors_mock.get.call_count)
4770
4750
  self.assertFalse(self.image_client.get_image.call_count)
@@ -4779,14 +4759,14 @@ class TestServerList(_TestServerList):
4779
4759
  ('deleted', False),
4780
4760
  ]
4781
4761
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
4782
- self.sdk_client.servers.return_value = []
4762
+ self.compute_sdk_client.servers.return_value = []
4783
4763
  self.data = ()
4784
4764
 
4785
4765
  columns, data = self.cmd.take_action(parsed_args)
4786
4766
 
4787
- self.sdk_client.servers.assert_called_with(**self.kwargs)
4767
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
4788
4768
  self.image_client.images.assert_not_called()
4789
- self.sdk_client.flavors.assert_not_called()
4769
+ self.compute_sdk_client.flavors.assert_not_called()
4790
4770
  self.assertEqual(self.columns, columns)
4791
4771
  self.assertEqual(self.data, tuple(data))
4792
4772
 
@@ -4820,12 +4800,12 @@ class TestServerList(_TestServerList):
4820
4800
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
4821
4801
 
4822
4802
  columns, data = self.cmd.take_action(parsed_args)
4823
- self.sdk_client.servers.assert_called_with(**self.kwargs)
4803
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
4824
4804
  image_ids = {s.image['id'] for s in self.servers if s.image}
4825
4805
  self.image_client.images.assert_called_once_with(
4826
4806
  id=f'in:{",".join(image_ids)}',
4827
4807
  )
4828
- self.sdk_client.flavors.assert_called_once_with(is_public=None)
4808
+ self.compute_sdk_client.flavors.assert_called_once_with(is_public=None)
4829
4809
  self.assertEqual(self.columns_long, columns)
4830
4810
  self.assertEqual(self.data, tuple(data))
4831
4811
 
@@ -4862,7 +4842,7 @@ class TestServerList(_TestServerList):
4862
4842
 
4863
4843
  columns, data = self.cmd.take_action(parsed_args)
4864
4844
 
4865
- self.sdk_client.servers.assert_called_with(**self.kwargs)
4845
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
4866
4846
  self.assertIn('Project ID', columns)
4867
4847
  self.assertIn('User ID', columns)
4868
4848
  self.assertIn('Created At', columns)
@@ -4901,9 +4881,9 @@ class TestServerList(_TestServerList):
4901
4881
 
4902
4882
  columns, data = self.cmd.take_action(parsed_args)
4903
4883
 
4904
- self.sdk_client.servers.assert_called_with(**self.kwargs)
4884
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
4905
4885
  self.image_client.images.assert_not_called()
4906
- self.sdk_client.flavors.assert_not_called()
4886
+ self.compute_sdk_client.flavors.assert_not_called()
4907
4887
  self.assertEqual(self.columns, columns)
4908
4888
  self.assertEqual(self.data, tuple(data))
4909
4889
 
@@ -4932,9 +4912,9 @@ class TestServerList(_TestServerList):
4932
4912
 
4933
4913
  columns, data = self.cmd.take_action(parsed_args)
4934
4914
 
4935
- self.sdk_client.servers.assert_called_with(**self.kwargs)
4915
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
4936
4916
  self.image_client.images.assert_not_called()
4937
- self.sdk_client.flavors.assert_not_called()
4917
+ self.compute_sdk_client.flavors.assert_not_called()
4938
4918
  self.assertEqual(self.columns, columns)
4939
4919
  self.assertEqual(self.data, tuple(data))
4940
4920
 
@@ -4949,11 +4929,11 @@ class TestServerList(_TestServerList):
4949
4929
 
4950
4930
  columns, data = self.cmd.take_action(parsed_args)
4951
4931
 
4952
- self.sdk_client.servers.assert_called_with(**self.kwargs)
4932
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
4953
4933
  self.image_client.images.assert_not_called()
4954
- self.sdk_client.flavors.assert_not_called()
4934
+ self.compute_sdk_client.flavors.assert_not_called()
4955
4935
  self.image_client.get_image.assert_called()
4956
- self.sdk_client.find_flavor.assert_called()
4936
+ self.compute_sdk_client.find_flavor.assert_called()
4957
4937
 
4958
4938
  self.assertEqual(self.columns, columns)
4959
4939
  self.assertEqual(self.data, tuple(data))
@@ -4970,9 +4950,9 @@ class TestServerList(_TestServerList):
4970
4950
  )
4971
4951
 
4972
4952
  self.kwargs['image'] = self.image.id
4973
- self.sdk_client.servers.assert_called_with(**self.kwargs)
4953
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
4974
4954
  self.image_client.images.assert_not_called()
4975
- self.sdk_client.flavors.assert_called_once()
4955
+ self.compute_sdk_client.flavors.assert_called_once()
4976
4956
 
4977
4957
  self.assertEqual(self.columns, columns)
4978
4958
  self.assertEqual(self.data, tuple(data))
@@ -4984,14 +4964,14 @@ class TestServerList(_TestServerList):
4984
4964
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
4985
4965
  columns, data = self.cmd.take_action(parsed_args)
4986
4966
 
4987
- self.sdk_client.find_flavor.assert_has_calls(
4967
+ self.compute_sdk_client.find_flavor.assert_has_calls(
4988
4968
  [mock.call(self.flavor.id)]
4989
4969
  )
4990
4970
 
4991
4971
  self.kwargs['flavor'] = self.flavor.id
4992
- self.sdk_client.servers.assert_called_with(**self.kwargs)
4972
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
4993
4973
  self.image_client.images.assert_called_once()
4994
- self.sdk_client.flavors.assert_not_called()
4974
+ self.compute_sdk_client.flavors.assert_not_called()
4995
4975
 
4996
4976
  self.assertEqual(self.columns, columns)
4997
4977
  self.assertEqual(self.data, tuple(data))
@@ -5008,7 +4988,7 @@ class TestServerList(_TestServerList):
5008
4988
 
5009
4989
  self.kwargs['changes-since'] = '2016-03-04T06:27:59Z'
5010
4990
  self.kwargs['deleted'] = True
5011
- self.sdk_client.servers.assert_called_with(**self.kwargs)
4991
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
5012
4992
 
5013
4993
  self.assertEqual(self.columns, columns)
5014
4994
  self.assertEqual(self.data, tuple(data))
@@ -5051,7 +5031,7 @@ class TestServerList(_TestServerList):
5051
5031
 
5052
5032
  self.kwargs['tags'] = 'tag1,tag2'
5053
5033
 
5054
- self.sdk_client.servers.assert_called_with(**self.kwargs)
5034
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
5055
5035
 
5056
5036
  self.assertEqual(self.columns, columns)
5057
5037
  self.assertEqual(self.data, tuple(data))
@@ -5094,7 +5074,7 @@ class TestServerList(_TestServerList):
5094
5074
 
5095
5075
  self.kwargs['not-tags'] = 'tag1,tag2'
5096
5076
 
5097
- self.sdk_client.servers.assert_called_with(**self.kwargs)
5077
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
5098
5078
 
5099
5079
  self.assertEqual(self.columns, columns)
5100
5080
  self.assertEqual(self.data, tuple(data))
@@ -5133,7 +5113,7 @@ class TestServerList(_TestServerList):
5133
5113
  columns, data = self.cmd.take_action(parsed_args)
5134
5114
 
5135
5115
  self.kwargs['availability_zone'] = 'test-az'
5136
- self.sdk_client.servers.assert_called_with(**self.kwargs)
5116
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
5137
5117
  self.assertEqual(self.columns, columns)
5138
5118
  self.assertEqual(tuple(self.data), tuple(data))
5139
5119
 
@@ -5150,7 +5130,7 @@ class TestServerList(_TestServerList):
5150
5130
  columns, data = self.cmd.take_action(parsed_args)
5151
5131
 
5152
5132
  self.kwargs['key_name'] = 'test-key'
5153
- self.sdk_client.servers.assert_called_with(**self.kwargs)
5133
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
5154
5134
  self.assertEqual(self.columns, columns)
5155
5135
  self.assertEqual(tuple(self.data), tuple(data))
5156
5136
 
@@ -5166,7 +5146,7 @@ class TestServerList(_TestServerList):
5166
5146
  columns, data = self.cmd.take_action(parsed_args)
5167
5147
 
5168
5148
  self.kwargs['config_drive'] = True
5169
- self.sdk_client.servers.assert_called_with(**self.kwargs)
5149
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
5170
5150
  self.assertEqual(self.columns, columns)
5171
5151
  self.assertEqual(tuple(self.data), tuple(data))
5172
5152
 
@@ -5182,7 +5162,7 @@ class TestServerList(_TestServerList):
5182
5162
  columns, data = self.cmd.take_action(parsed_args)
5183
5163
 
5184
5164
  self.kwargs['config_drive'] = False
5185
- self.sdk_client.servers.assert_called_with(**self.kwargs)
5165
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
5186
5166
  self.assertEqual(self.columns, columns)
5187
5167
  self.assertEqual(tuple(self.data), tuple(data))
5188
5168
 
@@ -5199,7 +5179,7 @@ class TestServerList(_TestServerList):
5199
5179
  columns, data = self.cmd.take_action(parsed_args)
5200
5180
 
5201
5181
  self.kwargs['progress'] = '100'
5202
- self.sdk_client.servers.assert_called_with(**self.kwargs)
5182
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
5203
5183
  self.assertEqual(self.columns, columns)
5204
5184
  self.assertEqual(tuple(self.data), tuple(data))
5205
5185
 
@@ -5210,7 +5190,7 @@ class TestServerList(_TestServerList):
5210
5190
  ]
5211
5191
 
5212
5192
  self.assertRaises(
5213
- utils.ParserException,
5193
+ test_utils.ParserException,
5214
5194
  self.check_parser,
5215
5195
  self.cmd,
5216
5196
  arglist,
@@ -5230,7 +5210,7 @@ class TestServerList(_TestServerList):
5230
5210
  columns, data = self.cmd.take_action(parsed_args)
5231
5211
 
5232
5212
  self.kwargs['vm_state'] = 'active'
5233
- self.sdk_client.servers.assert_called_with(**self.kwargs)
5213
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
5234
5214
  self.assertEqual(self.columns, columns)
5235
5215
  self.assertEqual(tuple(self.data), tuple(data))
5236
5216
 
@@ -5247,7 +5227,7 @@ class TestServerList(_TestServerList):
5247
5227
  columns, data = self.cmd.take_action(parsed_args)
5248
5228
 
5249
5229
  self.kwargs['task_state'] = 'deleting'
5250
- self.sdk_client.servers.assert_called_with(**self.kwargs)
5230
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
5251
5231
  self.assertEqual(self.columns, columns)
5252
5232
  self.assertEqual(tuple(self.data), tuple(data))
5253
5233
 
@@ -5264,7 +5244,7 @@ class TestServerList(_TestServerList):
5264
5244
  columns, data = self.cmd.take_action(parsed_args)
5265
5245
 
5266
5246
  self.kwargs['power_state'] = 1
5267
- self.sdk_client.servers.assert_called_with(**self.kwargs)
5247
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
5268
5248
  self.assertEqual(self.columns, columns)
5269
5249
  self.assertEqual(tuple(self.data), tuple(data))
5270
5250
 
@@ -5300,18 +5280,18 @@ class TestServerList(_TestServerList):
5300
5280
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
5301
5281
  columns, data = self.cmd.take_action(parsed_args)
5302
5282
 
5303
- self.sdk_client.servers.assert_called_with(**self.kwargs)
5283
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
5304
5284
 
5305
5285
  self.assertEqual(self.columns_long, columns)
5306
5286
  self.assertEqual(tuple(self.data1), tuple(data))
5307
5287
 
5308
5288
  # Next test with host_status in the data -- the column should be
5309
5289
  # present in this case.
5310
- self.sdk_client.servers.reset_mock()
5290
+ self.compute_sdk_client.servers.reset_mock()
5311
5291
 
5312
5292
  self.attrs['host_status'] = 'UP'
5313
5293
  servers = self.setup_sdk_servers_mock(3)
5314
- self.sdk_client.servers.return_value = servers
5294
+ self.compute_sdk_client.servers.return_value = servers
5315
5295
 
5316
5296
  # Make sure the returned image and flavor IDs match the servers.
5317
5297
  Image = collections.namedtuple('Image', 'id name')
@@ -5347,7 +5327,7 @@ class TestServerList(_TestServerList):
5347
5327
 
5348
5328
  columns, data = self.cmd.take_action(parsed_args)
5349
5329
 
5350
- self.sdk_client.servers.assert_called_with(**self.kwargs)
5330
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
5351
5331
 
5352
5332
  self.assertEqual(columns_long, columns)
5353
5333
  self.assertEqual(tuple(self.data2), tuple(data))
@@ -5395,7 +5375,7 @@ class TestServerListV273(_TestServerList):
5395
5375
 
5396
5376
  # The servers to be listed.
5397
5377
  self.servers = self.setup_sdk_servers_mock(3)
5398
- self.sdk_client.servers.return_value = self.servers
5378
+ self.compute_sdk_client.servers.return_value = self.servers
5399
5379
 
5400
5380
  Image = collections.namedtuple('Image', 'id name')
5401
5381
  self.image_client.images.return_value = [
@@ -5407,7 +5387,7 @@ class TestServerListV273(_TestServerList):
5407
5387
 
5408
5388
  # The flavor information is embedded, so now reason for this to be
5409
5389
  # called
5410
- self.sdk_client.flavors = mock.NonCallableMock()
5390
+ self.compute_sdk_client.flavors = mock.NonCallableMock()
5411
5391
 
5412
5392
  self.data = tuple(
5413
5393
  (
@@ -5443,7 +5423,7 @@ class TestServerListV273(_TestServerList):
5443
5423
  columns, data = self.cmd.take_action(parsed_args)
5444
5424
 
5445
5425
  self.kwargs['locked'] = True
5446
- self.sdk_client.servers.assert_called_with(**self.kwargs)
5426
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
5447
5427
 
5448
5428
  self.assertCountEqual(self.columns, columns)
5449
5429
  self.assertCountEqual(self.data, tuple(data))
@@ -5458,7 +5438,7 @@ class TestServerListV273(_TestServerList):
5458
5438
  columns, data = self.cmd.take_action(parsed_args)
5459
5439
 
5460
5440
  self.kwargs['locked'] = False
5461
- self.sdk_client.servers.assert_called_with(**self.kwargs)
5441
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
5462
5442
 
5463
5443
  self.assertCountEqual(self.columns, columns)
5464
5444
  self.assertCountEqual(self.data, tuple(data))
@@ -5469,7 +5449,7 @@ class TestServerListV273(_TestServerList):
5469
5449
  verifylist = [('locked', True), ('unlocked', True)]
5470
5450
 
5471
5451
  ex = self.assertRaises(
5472
- utils.ParserException,
5452
+ test_utils.ParserException,
5473
5453
  self.check_parser,
5474
5454
  self.cmd,
5475
5455
  arglist,
@@ -5491,7 +5471,7 @@ class TestServerListV273(_TestServerList):
5491
5471
  self.kwargs['changes-before'] = '2016-03-05T06:27:59Z'
5492
5472
  self.kwargs['deleted'] = True
5493
5473
 
5494
- self.sdk_client.servers.assert_called_with(**self.kwargs)
5474
+ self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
5495
5475
 
5496
5476
  self.assertCountEqual(self.columns, columns)
5497
5477
  self.assertCountEqual(self.data, tuple(data))
@@ -5581,8 +5561,8 @@ class TestServerLock(TestServer):
5581
5561
 
5582
5562
  self.server = compute_fakes.create_one_sdk_server()
5583
5563
 
5584
- self.sdk_client.find_server.return_value = self.server
5585
- self.sdk_client.lock_server.return_value = None
5564
+ self.compute_sdk_client.find_server.return_value = self.server
5565
+ self.compute_sdk_client.lock_server.return_value = None
5586
5566
 
5587
5567
  # Get the command object to test
5588
5568
  self.cmd = server.LockServer(self.app, None)
@@ -5611,11 +5591,11 @@ class TestServerLock(TestServer):
5611
5591
  ]
5612
5592
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
5613
5593
  self.cmd.take_action(parsed_args)
5614
- self.sdk_client.find_server.assert_called_with(
5594
+ self.compute_sdk_client.find_server.assert_called_with(
5615
5595
  self.server.id,
5616
5596
  ignore_missing=False,
5617
5597
  )
5618
- self.sdk_client.lock_server.assert_called_with(
5598
+ self.compute_sdk_client.lock_server.assert_called_with(
5619
5599
  self.server.id,
5620
5600
  locked_reason="blah",
5621
5601
  )
@@ -5636,12 +5616,12 @@ class TestServerLock(TestServer):
5636
5616
  ]
5637
5617
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
5638
5618
  self.cmd.take_action(parsed_args)
5639
- self.assertEqual(2, self.sdk_client.find_server.call_count)
5640
- self.sdk_client.lock_server.assert_called_with(
5619
+ self.assertEqual(2, self.compute_sdk_client.find_server.call_count)
5620
+ self.compute_sdk_client.lock_server.assert_called_with(
5641
5621
  self.server.id,
5642
5622
  locked_reason="choo..choo",
5643
5623
  )
5644
- self.assertEqual(2, self.sdk_client.lock_server.call_count)
5624
+ self.assertEqual(2, self.compute_sdk_client.lock_server.call_count)
5645
5625
 
5646
5626
  @mock.patch.object(sdk_utils, 'supports_microversion')
5647
5627
  def test_server_lock_with_reason_pre_v273(self, sm_mock):
@@ -5723,9 +5703,7 @@ class TestServerMigrate(TestServer):
5723
5703
  ]
5724
5704
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
5725
5705
 
5726
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
5727
- '2.56'
5728
- )
5706
+ self.compute_client.api_version = api_versions.APIVersion('2.56')
5729
5707
 
5730
5708
  result = self.cmd.take_action(parsed_args)
5731
5709
 
@@ -5849,9 +5827,7 @@ class TestServerMigrate(TestServer):
5849
5827
  ]
5850
5828
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
5851
5829
 
5852
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
5853
- '2.30'
5854
- )
5830
+ self.compute_client.api_version = api_versions.APIVersion('2.30')
5855
5831
 
5856
5832
  result = self.cmd.take_action(parsed_args)
5857
5833
 
@@ -5911,9 +5887,7 @@ class TestServerMigrate(TestServer):
5911
5887
  ]
5912
5888
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
5913
5889
 
5914
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
5915
- '2.24'
5916
- )
5890
+ self.compute_client.api_version = api_versions.APIVersion('2.24')
5917
5891
 
5918
5892
  result = self.cmd.take_action(parsed_args)
5919
5893
 
@@ -5938,9 +5912,7 @@ class TestServerMigrate(TestServer):
5938
5912
  ]
5939
5913
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
5940
5914
 
5941
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
5942
- '2.24'
5943
- )
5915
+ self.compute_client.api_version = api_versions.APIVersion('2.24')
5944
5916
 
5945
5917
  result = self.cmd.take_action(parsed_args)
5946
5918
 
@@ -5965,9 +5937,7 @@ class TestServerMigrate(TestServer):
5965
5937
  ]
5966
5938
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
5967
5939
 
5968
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
5969
- '2.25'
5970
- )
5940
+ self.compute_client.api_version = api_versions.APIVersion('2.25')
5971
5941
 
5972
5942
  with mock.patch.object(self.cmd.log, 'warning') as mock_warning:
5973
5943
  result = self.cmd.take_action(parsed_args)
@@ -6021,7 +5991,9 @@ class TestServerMigrate(TestServer):
6021
5991
  ]
6022
5992
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
6023
5993
 
6024
- self.assertRaises(SystemExit, self.cmd.take_action, parsed_args)
5994
+ self.assertRaises(
5995
+ exceptions.CommandError, self.cmd.take_action, parsed_args
5996
+ )
6025
5997
 
6026
5998
  self.servers_mock.get.assert_called_with(self.server.id)
6027
5999
  self.server.migrate.assert_called_with()
@@ -6032,7 +6004,7 @@ class TestServerReboot(TestServer):
6032
6004
  def setUp(self):
6033
6005
  super().setUp()
6034
6006
 
6035
- self.sdk_client.reboot_server.return_value = None
6007
+ self.compute_sdk_client.reboot_server.return_value = None
6036
6008
 
6037
6009
  self.cmd = server.RebootServer(self.app, None)
6038
6010
 
@@ -6051,7 +6023,7 @@ class TestServerReboot(TestServer):
6051
6023
 
6052
6024
  result = self.cmd.take_action(parsed_args)
6053
6025
 
6054
- self.sdk_client.reboot_server.assert_called_once_with(
6026
+ self.compute_sdk_client.reboot_server.assert_called_once_with(
6055
6027
  servers[0].id,
6056
6028
  'SOFT',
6057
6029
  )
@@ -6073,7 +6045,7 @@ class TestServerReboot(TestServer):
6073
6045
 
6074
6046
  result = self.cmd.take_action(parsed_args)
6075
6047
 
6076
- self.sdk_client.reboot_server.assert_called_once_with(
6048
+ self.compute_sdk_client.reboot_server.assert_called_once_with(
6077
6049
  servers[0].id,
6078
6050
  'HARD',
6079
6051
  )
@@ -6097,12 +6069,12 @@ class TestServerReboot(TestServer):
6097
6069
  result = self.cmd.take_action(parsed_args)
6098
6070
 
6099
6071
  self.assertIsNone(result)
6100
- self.sdk_client.reboot_server.assert_called_once_with(
6072
+ self.compute_sdk_client.reboot_server.assert_called_once_with(
6101
6073
  servers[0].id,
6102
6074
  'SOFT',
6103
6075
  )
6104
6076
  mock_wait_for_status.assert_called_once_with(
6105
- self.sdk_client.get_server,
6077
+ self.compute_sdk_client.get_server,
6106
6078
  servers[0].id,
6107
6079
  callback=mock.ANY,
6108
6080
  )
@@ -6127,15 +6099,16 @@ class TestServerReboot(TestServer):
6127
6099
  ]
6128
6100
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
6129
6101
 
6130
- self.assertRaises(SystemExit, self.cmd.take_action, parsed_args)
6102
+ self.assertRaises(
6103
+ exceptions.CommandError, self.cmd.take_action, parsed_args
6104
+ )
6131
6105
 
6132
- self.assertIn('Error rebooting server', mock_log.call_args[0][0])
6133
- self.sdk_client.reboot_server.assert_called_once_with(
6106
+ self.compute_sdk_client.reboot_server.assert_called_once_with(
6134
6107
  servers[0].id,
6135
6108
  'SOFT',
6136
6109
  )
6137
6110
  mock_wait_for_status.assert_called_once_with(
6138
- self.sdk_client.get_server,
6111
+ self.compute_sdk_client.get_server,
6139
6112
  servers[0].id,
6140
6113
  callback=mock.ANY,
6141
6114
  )
@@ -6320,9 +6293,7 @@ class TestServerRebuild(TestServer):
6320
6293
  self.server.rebuild.assert_called_with(self.image, password)
6321
6294
 
6322
6295
  def test_rebuild_with_description(self):
6323
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
6324
- '2.19'
6325
- )
6296
+ self.compute_client.api_version = api_versions.APIVersion('2.19')
6326
6297
 
6327
6298
  description = 'description1'
6328
6299
  arglist = [self.server.id, '--description', description]
@@ -6338,9 +6309,7 @@ class TestServerRebuild(TestServer):
6338
6309
  )
6339
6310
 
6340
6311
  def test_rebuild_with_description_pre_v219(self):
6341
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
6342
- '2.18'
6343
- )
6312
+ self.compute_client.api_version = api_versions.APIVersion('2.18')
6344
6313
 
6345
6314
  description = 'description1'
6346
6315
  arglist = [self.server.id, '--description', description]
@@ -6392,7 +6361,9 @@ class TestServerRebuild(TestServer):
6392
6361
  ]
6393
6362
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
6394
6363
 
6395
- self.assertRaises(SystemExit, self.cmd.take_action, parsed_args)
6364
+ self.assertRaises(
6365
+ exceptions.CommandError, self.cmd.take_action, parsed_args
6366
+ )
6396
6367
 
6397
6368
  mock_wait_for_status.assert_called_once_with(
6398
6369
  self.servers_mock.get,
@@ -6508,9 +6479,7 @@ class TestServerRebuild(TestServer):
6508
6479
  )
6509
6480
 
6510
6481
  def test_rebuild_with_keypair_name(self):
6511
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
6512
- '2.54'
6513
- )
6482
+ self.compute_client.api_version = api_versions.APIVersion('2.54')
6514
6483
 
6515
6484
  self.server.key_name = 'mykey'
6516
6485
  arglist = [
@@ -6533,9 +6502,7 @@ class TestServerRebuild(TestServer):
6533
6502
  )
6534
6503
 
6535
6504
  def test_rebuild_with_keypair_name_pre_v254(self):
6536
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
6537
- '2.53'
6538
- )
6505
+ self.compute_client.api_version = api_versions.APIVersion('2.53')
6539
6506
 
6540
6507
  self.server.key_name = 'mykey'
6541
6508
  arglist = [
@@ -6554,9 +6521,7 @@ class TestServerRebuild(TestServer):
6554
6521
  )
6555
6522
 
6556
6523
  def test_rebuild_with_no_keypair_name(self):
6557
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
6558
- '2.54'
6559
- )
6524
+ self.compute_client.api_version = api_versions.APIVersion('2.54')
6560
6525
 
6561
6526
  self.server.key_name = 'mykey'
6562
6527
  arglist = [
@@ -6586,7 +6551,7 @@ class TestServerRebuild(TestServer):
6586
6551
  ('key_name', self.server.key_name),
6587
6552
  ]
6588
6553
  self.assertRaises(
6589
- utils.ParserException,
6554
+ test_utils.ParserException,
6590
6555
  self.check_parser,
6591
6556
  self.cmd,
6592
6557
  arglist,
@@ -6595,9 +6560,7 @@ class TestServerRebuild(TestServer):
6595
6560
 
6596
6561
  @mock.patch('openstackclient.compute.v2.server.io.open')
6597
6562
  def test_rebuild_with_user_data(self, mock_open):
6598
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
6599
- '2.57'
6600
- )
6563
+ self.compute_client.api_version = api_versions.APIVersion('2.57')
6601
6564
 
6602
6565
  mock_file = mock.Mock(name='File')
6603
6566
  mock_open.return_value = mock_file
@@ -6631,9 +6594,7 @@ class TestServerRebuild(TestServer):
6631
6594
  )
6632
6595
 
6633
6596
  def test_rebuild_with_user_data_pre_v257(self):
6634
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
6635
- '2.56'
6636
- )
6597
+ self.compute_client.api_version = api_versions.APIVersion('2.56')
6637
6598
 
6638
6599
  arglist = [
6639
6600
  self.server.id,
@@ -6651,9 +6612,7 @@ class TestServerRebuild(TestServer):
6651
6612
  )
6652
6613
 
6653
6614
  def test_rebuild_with_no_user_data(self):
6654
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
6655
- '2.54'
6656
- )
6615
+ self.compute_client.api_version = api_versions.APIVersion('2.54')
6657
6616
 
6658
6617
  self.server.key_name = 'mykey'
6659
6618
  arglist = [
@@ -6672,9 +6631,7 @@ class TestServerRebuild(TestServer):
6672
6631
  self.server.rebuild.assert_called_with(self.image, None, userdata=None)
6673
6632
 
6674
6633
  def test_rebuild_with_no_user_data_pre_v254(self):
6675
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
6676
- '2.53'
6677
- )
6634
+ self.compute_client.api_version = api_versions.APIVersion('2.53')
6678
6635
 
6679
6636
  arglist = [
6680
6637
  self.server.id,
@@ -6698,13 +6655,15 @@ class TestServerRebuild(TestServer):
6698
6655
  '--no-user-data',
6699
6656
  ]
6700
6657
  self.assertRaises(
6701
- utils.ParserException, self.check_parser, self.cmd, arglist, None
6658
+ test_utils.ParserException,
6659
+ self.check_parser,
6660
+ self.cmd,
6661
+ arglist,
6662
+ None,
6702
6663
  )
6703
6664
 
6704
6665
  def test_rebuild_with_trusted_image_cert(self):
6705
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
6706
- '2.63'
6707
- )
6666
+ self.compute_client.api_version = api_versions.APIVersion('2.63')
6708
6667
 
6709
6668
  arglist = [
6710
6669
  self.server.id,
@@ -6728,9 +6687,7 @@ class TestServerRebuild(TestServer):
6728
6687
  )
6729
6688
 
6730
6689
  def test_rebuild_with_trusted_image_cert_pre_v263(self):
6731
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
6732
- '2.62'
6733
- )
6690
+ self.compute_client.api_version = api_versions.APIVersion('2.62')
6734
6691
 
6735
6692
  arglist = [
6736
6693
  self.server.id,
@@ -6750,9 +6707,7 @@ class TestServerRebuild(TestServer):
6750
6707
  )
6751
6708
 
6752
6709
  def test_rebuild_with_no_trusted_image_cert(self):
6753
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
6754
- '2.63'
6755
- )
6710
+ self.compute_client.api_version = api_versions.APIVersion('2.63')
6756
6711
 
6757
6712
  arglist = [
6758
6713
  self.server.id,
@@ -6772,9 +6727,7 @@ class TestServerRebuild(TestServer):
6772
6727
  )
6773
6728
 
6774
6729
  def test_rebuild_with_no_trusted_image_cert_pre_v263(self):
6775
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
6776
- '2.62'
6777
- )
6730
+ self.compute_client.api_version = api_versions.APIVersion('2.62')
6778
6731
 
6779
6732
  arglist = [
6780
6733
  self.server.id,
@@ -6791,9 +6744,7 @@ class TestServerRebuild(TestServer):
6791
6744
  )
6792
6745
 
6793
6746
  def test_rebuild_with_hostname(self):
6794
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
6795
- '2.90'
6796
- )
6747
+ self.compute_client.api_version = api_versions.APIVersion('2.90')
6797
6748
 
6798
6749
  arglist = [self.server.id, '--hostname', 'new-hostname']
6799
6750
  verifylist = [('server', self.server.id), ('hostname', 'new-hostname')]
@@ -6808,9 +6759,7 @@ class TestServerRebuild(TestServer):
6808
6759
  )
6809
6760
 
6810
6761
  def test_rebuild_with_hostname_pre_v290(self):
6811
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
6812
- '2.89'
6813
- )
6762
+ self.compute_client.api_version = api_versions.APIVersion('2.89')
6814
6763
 
6815
6764
  arglist = [
6816
6765
  self.server.id,
@@ -6855,9 +6804,7 @@ class TestServerRebuildVolumeBacked(TestServer):
6855
6804
  self.cmd = server.RebuildServer(self.app, None)
6856
6805
 
6857
6806
  def test_rebuild_with_reimage_boot_volume(self):
6858
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
6859
- '2.93'
6860
- )
6807
+ self.compute_client.api_version = api_versions.APIVersion('2.93')
6861
6808
 
6862
6809
  arglist = [
6863
6810
  self.server.id,
@@ -6878,9 +6825,7 @@ class TestServerRebuildVolumeBacked(TestServer):
6878
6825
  self.server.rebuild.assert_called_with(self.new_image, None)
6879
6826
 
6880
6827
  def test_rebuild_with_no_reimage_boot_volume(self):
6881
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
6882
- '2.93'
6883
- )
6828
+ self.compute_client.api_version = api_versions.APIVersion('2.93')
6884
6829
 
6885
6830
  arglist = [
6886
6831
  self.server.id,
@@ -6901,9 +6846,7 @@ class TestServerRebuildVolumeBacked(TestServer):
6901
6846
  self.assertIn('--reimage-boot-volume is required', str(exc))
6902
6847
 
6903
6848
  def test_rebuild_with_reimage_boot_volume_pre_v293(self):
6904
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
6905
- '2.92'
6906
- )
6849
+ self.compute_client.api_version = api_versions.APIVersion('2.92')
6907
6850
 
6908
6851
  arglist = [
6909
6852
  self.server.id,
@@ -6996,9 +6939,7 @@ class TestEvacuateServer(TestServer):
6996
6939
  self._test_evacuate(args, verify_args, evac_args)
6997
6940
 
6998
6941
  def test_evacuate_with_host(self):
6999
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
7000
- '2.29'
7001
- )
6942
+ self.compute_client.api_version = api_versions.APIVersion('2.29')
7002
6943
 
7003
6944
  host = 'target-host'
7004
6945
  args = [
@@ -7015,9 +6956,7 @@ class TestEvacuateServer(TestServer):
7015
6956
  self._test_evacuate(args, verify_args, evac_args)
7016
6957
 
7017
6958
  def test_evacuate_with_host_pre_v229(self):
7018
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
7019
- '2.28'
7020
- )
6959
+ self.compute_client.api_version = api_versions.APIVersion('2.28')
7021
6960
 
7022
6961
  args = [
7023
6962
  self.server.id,
@@ -7035,9 +6974,7 @@ class TestEvacuateServer(TestServer):
7035
6974
  )
7036
6975
 
7037
6976
  def test_evacuate_without_share_storage(self):
7038
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
7039
- '2.13'
7040
- )
6977
+ self.compute_client.api_version = api_versions.APIVersion('2.13')
7041
6978
 
7042
6979
  args = [self.server.id, '--shared-storage']
7043
6980
  verify_args = [
@@ -7052,9 +6989,7 @@ class TestEvacuateServer(TestServer):
7052
6989
  self._test_evacuate(args, verify_args, evac_args)
7053
6990
 
7054
6991
  def test_evacuate_without_share_storage_post_v213(self):
7055
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
7056
- '2.14'
7057
- )
6992
+ self.compute_client.api_version = api_versions.APIVersion('2.14')
7058
6993
 
7059
6994
  args = [self.server.id, '--shared-storage']
7060
6995
  verify_args = [
@@ -7307,7 +7242,7 @@ class TestServerRemovePort(TestServer):
7307
7242
 
7308
7243
  result = self.cmd.take_action(parsed_args)
7309
7244
 
7310
- self.sdk_client.delete_server_interface.assert_called_with(
7245
+ self.compute_sdk_client.delete_server_interface.assert_called_with(
7311
7246
  port_id, server=servers[0], ignore_missing=False
7312
7247
  )
7313
7248
  self.assertIsNone(result)
@@ -7340,7 +7275,9 @@ class TestServerRemoveNetwork(TestServer):
7340
7275
 
7341
7276
  self.find_network = mock.Mock()
7342
7277
  self.app.client_manager.network.find_network = self.find_network
7343
- self.sdk_client.server_interfaces.return_value = [self.fake_inf]
7278
+ self.compute_sdk_client.server_interfaces.return_value = [
7279
+ self.fake_inf
7280
+ ]
7344
7281
 
7345
7282
  def _test_server_remove_network(self, network_id):
7346
7283
  self.fake_inf.net_id = network_id
@@ -7360,8 +7297,10 @@ class TestServerRemoveNetwork(TestServer):
7360
7297
 
7361
7298
  result = self.cmd.take_action(parsed_args)
7362
7299
 
7363
- self.sdk_client.server_interfaces.assert_called_once_with(servers[0])
7364
- self.sdk_client.delete_server_interface.assert_called_once_with(
7300
+ self.compute_sdk_client.server_interfaces.assert_called_once_with(
7301
+ servers[0]
7302
+ )
7303
+ self.compute_sdk_client.delete_server_interface.assert_called_once_with(
7365
7304
  'fake-port', server=servers[0]
7366
7305
  )
7367
7306
  self.assertIsNone(result)
@@ -7596,7 +7535,9 @@ class TestServerResize(TestServer):
7596
7535
  ]
7597
7536
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
7598
7537
 
7599
- self.assertRaises(SystemExit, self.cmd.take_action, parsed_args)
7538
+ self.assertRaises(
7539
+ exceptions.CommandError, self.cmd.take_action, parsed_args
7540
+ )
7600
7541
 
7601
7542
  self.servers_mock.get.assert_called_with(
7602
7543
  self.server.id,
@@ -7913,7 +7854,7 @@ class TestServerSet(TestServer):
7913
7854
  ('server', 'foo_vm'),
7914
7855
  ]
7915
7856
  self.assertRaises(
7916
- utils.ParserException,
7857
+ test_utils.ParserException,
7917
7858
  self.check_parser,
7918
7859
  self.cmd,
7919
7860
  arglist,
@@ -8137,8 +8078,8 @@ class TestServerShelve(TestServer):
8137
8078
  attrs={'status': 'ACTIVE'},
8138
8079
  )
8139
8080
 
8140
- self.sdk_client.find_server.return_value = self.server
8141
- self.sdk_client.shelve_server.return_value = None
8081
+ self.compute_sdk_client.find_server.return_value = self.server
8082
+ self.compute_sdk_client.shelve_server.return_value = None
8142
8083
 
8143
8084
  # Get the command object to test
8144
8085
  self.cmd = server.ShelveServer(self.app, None)
@@ -8155,12 +8096,14 @@ class TestServerShelve(TestServer):
8155
8096
  result = self.cmd.take_action(parsed_args)
8156
8097
  self.assertIsNone(result)
8157
8098
 
8158
- self.sdk_client.find_server.assert_called_with(
8099
+ self.compute_sdk_client.find_server.assert_called_with(
8159
8100
  self.server.name,
8160
8101
  ignore_missing=False,
8161
8102
  )
8162
- self.sdk_client.shelve_server.assert_called_with(self.server.id)
8163
- self.sdk_client.shelve_offload_server.assert_not_called()
8103
+ self.compute_sdk_client.shelve_server.assert_called_with(
8104
+ self.server.id
8105
+ )
8106
+ self.compute_sdk_client.shelve_offload_server.assert_not_called()
8164
8107
 
8165
8108
  def test_shelve_already_shelved(self):
8166
8109
  self.server.status = 'SHELVED'
@@ -8176,12 +8119,12 @@ class TestServerShelve(TestServer):
8176
8119
  result = self.cmd.take_action(parsed_args)
8177
8120
  self.assertIsNone(result)
8178
8121
 
8179
- self.sdk_client.find_server.assert_called_with(
8122
+ self.compute_sdk_client.find_server.assert_called_with(
8180
8123
  self.server.name,
8181
8124
  ignore_missing=False,
8182
8125
  )
8183
- self.sdk_client.shelve_server.assert_not_called()
8184
- self.sdk_client.shelve_offload_server.assert_not_called()
8126
+ self.compute_sdk_client.shelve_server.assert_not_called()
8127
+ self.compute_sdk_client.shelve_offload_server.assert_not_called()
8185
8128
 
8186
8129
  @mock.patch.object(common_utils, 'wait_for_status', return_value=True)
8187
8130
  def test_shelve_with_wait(self, mock_wait_for_status):
@@ -8196,14 +8139,16 @@ class TestServerShelve(TestServer):
8196
8139
  result = self.cmd.take_action(parsed_args)
8197
8140
  self.assertIsNone(result)
8198
8141
 
8199
- self.sdk_client.find_server.assert_called_with(
8142
+ self.compute_sdk_client.find_server.assert_called_with(
8200
8143
  self.server.name,
8201
8144
  ignore_missing=False,
8202
8145
  )
8203
- self.sdk_client.shelve_server.assert_called_with(self.server.id)
8204
- self.sdk_client.shelve_offload_server.assert_not_called()
8146
+ self.compute_sdk_client.shelve_server.assert_called_with(
8147
+ self.server.id
8148
+ )
8149
+ self.compute_sdk_client.shelve_offload_server.assert_not_called()
8205
8150
  mock_wait_for_status.assert_called_once_with(
8206
- self.sdk_client.get_server,
8151
+ self.compute_sdk_client.get_server,
8207
8152
  self.server.id,
8208
8153
  callback=mock.ANY,
8209
8154
  success_status=('shelved', 'shelved_offloaded'),
@@ -8222,20 +8167,26 @@ class TestServerShelve(TestServer):
8222
8167
  result = self.cmd.take_action(parsed_args)
8223
8168
  self.assertIsNone(result)
8224
8169
 
8225
- # two calls - one to retrieve the server state before shelving and
8226
- # another to do this before offloading
8227
- self.sdk_client.find_server.assert_has_calls(
8228
- [
8229
- mock.call(self.server.name, ignore_missing=False),
8230
- mock.call(self.server.name, ignore_missing=False),
8231
- ]
8170
+ # one call to retrieve to retrieve the server state before shelving
8171
+ self.compute_sdk_client.find_server.assert_called_once_with(
8172
+ self.server.name,
8173
+ ignore_missing=False,
8174
+ )
8175
+ # one call to retrieve the server state before offloading
8176
+ self.compute_sdk_client.get_server.assert_called_once_with(
8177
+ self.server.id
8178
+ )
8179
+ # one call to shelve the server
8180
+ self.compute_sdk_client.shelve_server.assert_called_with(
8181
+ self.server.id
8232
8182
  )
8233
- self.sdk_client.shelve_server.assert_called_with(self.server.id)
8234
- self.sdk_client.shelve_offload_server.assert_called_once_with(
8183
+ # one call to shelve offload the server
8184
+ self.compute_sdk_client.shelve_offload_server.assert_called_once_with(
8235
8185
  self.server.id,
8236
8186
  )
8187
+ # one call to wait for the shelve offload to complete
8237
8188
  mock_wait_for_status.assert_called_once_with(
8238
- self.sdk_client.get_server,
8189
+ self.compute_sdk_client.get_server,
8239
8190
  self.server.id,
8240
8191
  callback=mock.ANY,
8241
8192
  success_status=('shelved', 'shelved_offloaded'),
@@ -8256,9 +8207,11 @@ class TestServerShow(TestServer):
8256
8207
  'image': {'id': self.image.id},
8257
8208
  'flavor': {'id': self.flavor.id},
8258
8209
  'tenant_id': 'tenant-id-xxx',
8259
- 'networks': {'public': ['10.20.30.40', '2001:db8::f']},
8210
+ 'addresses': {'public': ['10.20.30.40', '2001:db8::f']},
8211
+ }
8212
+ self.compute_sdk_client.get_server_diagnostics.return_value = {
8213
+ 'test': 'test'
8260
8214
  }
8261
- self.sdk_client.get_server_diagnostics.return_value = {'test': 'test'}
8262
8215
  server_method = {
8263
8216
  'fetch_topology': self.topology,
8264
8217
  }
@@ -8267,7 +8220,7 @@ class TestServerShow(TestServer):
8267
8220
  )
8268
8221
 
8269
8222
  # This is the return value for utils.find_resource()
8270
- self.sdk_client.get_server.return_value = self.server
8223
+ self.compute_sdk_client.get_server.return_value = self.server
8271
8224
  self.image_client.get_image.return_value = self.image
8272
8225
  self.flavors_mock.get.return_value = self.flavor
8273
8226
 
@@ -8281,7 +8234,6 @@ class TestServerShow(TestServer):
8281
8234
  'id',
8282
8235
  'image',
8283
8236
  'name',
8284
- 'networks',
8285
8237
  'project_id',
8286
8238
  'properties',
8287
8239
  )
@@ -8290,12 +8242,11 @@ class TestServerShow(TestServer):
8290
8242
  server.PowerStateColumn(
8291
8243
  getattr(self.server, 'OS-EXT-STS:power_state')
8292
8244
  ),
8293
- format_columns.DictListColumn(self.server.networks),
8294
8245
  self.flavor.name + " (" + self.flavor.id + ")",
8295
8246
  self.server.id,
8296
8247
  self.image.name + " (" + self.image.id + ")",
8297
8248
  self.server.name,
8298
- {'public': ['10.20.30.40', '2001:db8::f']},
8249
+ server.AddressesColumn({'public': ['10.20.30.40', '2001:db8::f']}),
8299
8250
  'tenant-id-xxx',
8300
8251
  format_columns.DictColumn({}),
8301
8252
  )
@@ -8305,7 +8256,7 @@ class TestServerShow(TestServer):
8305
8256
  verifylist = []
8306
8257
 
8307
8258
  self.assertRaises(
8308
- utils.ParserException,
8259
+ test_utils.ParserException,
8309
8260
  self.check_parser,
8310
8261
  self.cmd,
8311
8262
  arglist,
@@ -8562,7 +8513,7 @@ class TestServerStart(TestServer):
8562
8513
 
8563
8514
  self.cmd.take_action(parsed_args)
8564
8515
 
8565
- self.sdk_client.find_server.assert_called_once_with(
8516
+ self.compute_sdk_client.find_server.assert_called_once_with(
8566
8517
  servers[0].id,
8567
8518
  ignore_missing=False,
8568
8519
  details=False,
@@ -8597,7 +8548,7 @@ class TestServerStop(TestServer):
8597
8548
 
8598
8549
  self.cmd.take_action(parsed_args)
8599
8550
 
8600
- self.sdk_client.find_server.assert_called_once_with(
8551
+ self.compute_sdk_client.find_server.assert_called_once_with(
8601
8552
  servers[0].id,
8602
8553
  ignore_missing=False,
8603
8554
  details=False,
@@ -8689,7 +8640,7 @@ class TestServerUnset(TestServer):
8689
8640
 
8690
8641
  def test_server_unset_with_description_api_newer(self):
8691
8642
  # Description is supported for nova api version 2.19 or above
8692
- self.app.client_manager.compute.api_version = 2.19
8643
+ self.compute_client.api_version = 2.19
8693
8644
 
8694
8645
  arglist = [
8695
8646
  '--description',
@@ -8710,7 +8661,7 @@ class TestServerUnset(TestServer):
8710
8661
 
8711
8662
  def test_server_unset_with_description_api_older(self):
8712
8663
  # Description is not supported for nova api version below 2.19
8713
- self.app.client_manager.compute.api_version = 2.18
8664
+ self.compute_client.api_version = api_versions.APIVersion('2.18')
8714
8665
 
8715
8666
  arglist = [
8716
8667
  '--description',
@@ -8722,15 +8673,15 @@ class TestServerUnset(TestServer):
8722
8673
  ]
8723
8674
  parsed_args = self.check_parser(self.cmd, arglist, verifylist)
8724
8675
 
8725
- with mock.patch.object(api_versions, 'APIVersion', return_value=2.19):
8726
- self.assertRaises(
8727
- exceptions.CommandError, self.cmd.take_action, parsed_args
8728
- )
8676
+ ex = self.assertRaises(
8677
+ exceptions.CommandError, self.cmd.take_action, parsed_args
8678
+ )
8679
+ self.assertIn(
8680
+ '--os-compute-api-version 2.19 or greater is required', str(ex)
8681
+ )
8729
8682
 
8730
8683
  def test_server_unset_with_tag(self):
8731
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
8732
- '2.26'
8733
- )
8684
+ self.compute_client.api_version = api_versions.APIVersion('2.26')
8734
8685
 
8735
8686
  arglist = [
8736
8687
  '--tag',
@@ -8756,9 +8707,7 @@ class TestServerUnset(TestServer):
8756
8707
  )
8757
8708
 
8758
8709
  def test_server_unset_with_tag_pre_v226(self):
8759
- self.app.client_manager.compute.api_version = api_versions.APIVersion(
8760
- '2.25'
8761
- )
8710
+ self.compute_client.api_version = api_versions.APIVersion('2.25')
8762
8711
 
8763
8712
  arglist = [
8764
8713
  '--tag',
@@ -8789,8 +8738,8 @@ class TestServerUnshelve(TestServer):
8789
8738
  attrs={'status': 'SHELVED'},
8790
8739
  )
8791
8740
 
8792
- self.sdk_client.find_server.return_value = self.server
8793
- self.sdk_client.unshelve_server.return_value = None
8741
+ self.compute_sdk_client.find_server.return_value = self.server
8742
+ self.compute_sdk_client.unshelve_server.return_value = None
8794
8743
 
8795
8744
  # Get the command object to test
8796
8745
  self.cmd = server.UnshelveServer(self.app, None)
@@ -8806,11 +8755,13 @@ class TestServerUnshelve(TestServer):
8806
8755
 
8807
8756
  self.cmd.take_action(parsed_args)
8808
8757
 
8809
- self.sdk_client.find_server.assert_called_once_with(
8758
+ self.compute_sdk_client.find_server.assert_called_once_with(
8810
8759
  self.server.id,
8811
8760
  ignore_missing=False,
8812
8761
  )
8813
- self.sdk_client.unshelve_server.assert_called_once_with(self.server.id)
8762
+ self.compute_sdk_client.unshelve_server.assert_called_once_with(
8763
+ self.server.id
8764
+ )
8814
8765
 
8815
8766
  def test_unshelve_with_az(self):
8816
8767
  self._set_mock_microversion('2.77')
@@ -8828,11 +8779,11 @@ class TestServerUnshelve(TestServer):
8828
8779
 
8829
8780
  self.cmd.take_action(parsed_args)
8830
8781
 
8831
- self.sdk_client.find_server.assert_called_once_with(
8782
+ self.compute_sdk_client.find_server.assert_called_once_with(
8832
8783
  self.server.id,
8833
8784
  ignore_missing=False,
8834
8785
  )
8835
- self.sdk_client.unshelve_server.assert_called_once_with(
8786
+ self.compute_sdk_client.unshelve_server.assert_called_once_with(
8836
8787
  self.server.id,
8837
8788
  availability_zone='foo-az',
8838
8789
  )
@@ -8874,11 +8825,11 @@ class TestServerUnshelve(TestServer):
8874
8825
 
8875
8826
  self.cmd.take_action(parsed_args)
8876
8827
 
8877
- self.sdk_client.find_server.assert_called_once_with(
8828
+ self.compute_sdk_client.find_server.assert_called_once_with(
8878
8829
  self.server.id,
8879
8830
  ignore_missing=False,
8880
8831
  )
8881
- self.sdk_client.unshelve_server.assert_called_once_with(
8832
+ self.compute_sdk_client.unshelve_server.assert_called_once_with(
8882
8833
  self.server.id,
8883
8834
  host='server1',
8884
8835
  )
@@ -8920,11 +8871,11 @@ class TestServerUnshelve(TestServer):
8920
8871
 
8921
8872
  self.cmd.take_action(parsed_args)
8922
8873
 
8923
- self.sdk_client.find_server.assert_called_once_with(
8874
+ self.compute_sdk_client.find_server.assert_called_once_with(
8924
8875
  self.server.id,
8925
8876
  ignore_missing=False,
8926
8877
  )
8927
- self.sdk_client.unshelve_server.assert_called_once_with(
8878
+ self.compute_sdk_client.unshelve_server.assert_called_once_with(
8928
8879
  self.server.id,
8929
8880
  availability_zone=None,
8930
8881
  )
@@ -8969,7 +8920,7 @@ class TestServerUnshelve(TestServer):
8969
8920
  ]
8970
8921
 
8971
8922
  ex = self.assertRaises(
8972
- utils.ParserException,
8923
+ test_utils.ParserException,
8973
8924
  self.check_parser,
8974
8925
  self.cmd,
8975
8926
  arglist,
@@ -8996,13 +8947,15 @@ class TestServerUnshelve(TestServer):
8996
8947
  result = self.cmd.take_action(parsed_args)
8997
8948
  self.assertIsNone(result)
8998
8949
 
8999
- self.sdk_client.find_server.assert_called_with(
8950
+ self.compute_sdk_client.find_server.assert_called_with(
9000
8951
  self.server.name,
9001
8952
  ignore_missing=False,
9002
8953
  )
9003
- self.sdk_client.unshelve_server.assert_called_with(self.server.id)
8954
+ self.compute_sdk_client.unshelve_server.assert_called_with(
8955
+ self.server.id
8956
+ )
9004
8957
  mock_wait_for_status.assert_called_once_with(
9005
- self.sdk_client.get_server,
8958
+ self.compute_sdk_client.get_server,
9006
8959
  self.server.id,
9007
8960
  callback=mock.ANY,
9008
8961
  success_status=('active', 'shutoff'),
@@ -9102,7 +9055,7 @@ class TestServerGeneral(TestServer):
9102
9055
  'image': {u'id': _image.id},
9103
9056
  'flavor': {u'id': _flavor.id},
9104
9057
  'tenant_id': u'tenant-id-xxx',
9105
- 'networks': {u'public': [u'10.20.30.40', u'2001:db8::f']},
9058
+ 'addresses': {u'public': [u'10.20.30.40', u'2001:db8::f']},
9106
9059
  'links': u'http://xxx.yyy.com',
9107
9060
  'properties': '',
9108
9061
  'volumes_attached': [{"id": "6344fe9d-ef20-45b2-91a6"}],
@@ -9122,18 +9075,16 @@ class TestServerGeneral(TestServer):
9122
9075
  ),
9123
9076
  'properties': '',
9124
9077
  'volumes_attached': [{"id": "6344fe9d-ef20-45b2-91a6"}],
9125
- 'addresses': format_columns.DictListColumn(_server.networks),
9078
+ 'addresses': format_columns.DictListColumn(_server.addresses),
9126
9079
  'project_id': 'tenant-id-xxx',
9127
9080
  }
9128
9081
 
9129
9082
  # Call _prep_server_detail().
9130
9083
  server_detail = server._prep_server_detail(
9131
- self.app.client_manager.compute,
9084
+ self.compute_client,
9132
9085
  self.image_client,
9133
9086
  _server,
9134
9087
  )
9135
- # 'networks' is used to create _server. Remove it.
9136
- server_detail.pop('networks')
9137
9088
 
9138
9089
  # Check the results.
9139
9090
  self.assertCountEqual(info, server_detail)