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.
- openstackclient/common/availability_zone.py +4 -4
- openstackclient/common/pagination.py +82 -0
- openstackclient/compute/v2/flavor.py +2 -16
- openstackclient/compute/v2/hypervisor.py +2 -21
- openstackclient/compute/v2/keypair.py +2 -9
- openstackclient/compute/v2/server.py +220 -131
- openstackclient/compute/v2/server_event.py +30 -19
- openstackclient/compute/v2/server_group.py +2 -23
- openstackclient/compute/v2/server_migration.py +2 -22
- openstackclient/compute/v2/usage.py +4 -6
- openstackclient/identity/v3/mapping.py +25 -3
- openstackclient/identity/v3/policy.py +3 -1
- openstackclient/image/v2/cache.py +218 -0
- openstackclient/image/v2/image.py +40 -17
- openstackclient/image/v2/metadef_namespaces.py +25 -21
- openstackclient/image/v2/metadef_objects.py +189 -0
- openstackclient/image/v2/metadef_properties.py +284 -0
- openstackclient/network/utils.py +100 -0
- openstackclient/network/v2/default_security_group_rule.py +418 -0
- openstackclient/network/v2/local_ip_association.py +1 -1
- openstackclient/network/v2/ndp_proxy.py +7 -3
- openstackclient/network/v2/network.py +2 -2
- openstackclient/network/v2/port.py +65 -19
- openstackclient/network/v2/security_group_rule.py +18 -111
- openstackclient/network/v2/subnet.py +1 -0
- openstackclient/object/v1/container.py +2 -12
- openstackclient/object/v1/object.py +2 -11
- openstackclient/tests/functional/base.py +13 -6
- openstackclient/tests/functional/identity/v3/test_role.py +11 -3
- openstackclient/tests/functional/network/v2/common.py +7 -1
- openstackclient/tests/functional/network/v2/test_address_group.py +2 -4
- openstackclient/tests/functional/network/v2/test_address_scope.py +0 -6
- openstackclient/tests/functional/network/v2/test_default_security_group_rule.py +67 -0
- openstackclient/tests/functional/network/v2/test_floating_ip.py +3 -6
- openstackclient/tests/functional/network/v2/test_ip_availability.py +3 -8
- openstackclient/tests/functional/network/v2/test_l3_conntrack_helper.py +3 -4
- openstackclient/tests/functional/network/v2/test_local_ip.py +2 -4
- openstackclient/tests/functional/network/v2/test_network.py +18 -17
- openstackclient/tests/functional/network/v2/test_network_agent.py +24 -21
- openstackclient/tests/functional/network/v2/test_network_flavor.py +0 -6
- openstackclient/tests/functional/network/v2/test_network_flavor_profile.py +0 -6
- openstackclient/tests/functional/network/v2/test_network_meter.py +6 -6
- openstackclient/tests/functional/network/v2/test_network_meter_rule.py +7 -8
- openstackclient/tests/functional/network/v2/test_network_ndp_proxy.py +1 -3
- openstackclient/tests/functional/network/v2/test_network_qos_policy.py +4 -4
- openstackclient/tests/functional/network/v2/test_network_qos_rule.py +16 -20
- openstackclient/tests/functional/network/v2/test_network_qos_rule_type.py +4 -4
- openstackclient/tests/functional/network/v2/test_network_rbac.py +1 -4
- openstackclient/tests/functional/network/v2/test_network_segment.py +7 -12
- openstackclient/tests/functional/network/v2/test_network_segment_range.py +3 -4
- openstackclient/tests/functional/network/v2/test_network_service_provider.py +2 -4
- openstackclient/tests/functional/network/v2/test_network_trunk.py +3 -3
- openstackclient/tests/functional/network/v2/test_port.py +2 -8
- openstackclient/tests/functional/network/v2/test_router.py +0 -6
- openstackclient/tests/functional/network/v2/test_security_group.py +1 -4
- openstackclient/tests/functional/network/v2/test_security_group_rule.py +1 -4
- openstackclient/tests/functional/network/v2/test_subnet.py +4 -22
- openstackclient/tests/functional/network/v2/test_subnet_pool.py +0 -6
- openstackclient/tests/unit/common/test_availability_zone.py +28 -30
- openstackclient/tests/unit/common/test_extension.py +1 -4
- openstackclient/tests/unit/common/test_limits.py +2 -4
- openstackclient/tests/unit/common/test_project_cleanup.py +3 -10
- openstackclient/tests/unit/common/test_quota.py +18 -24
- openstackclient/tests/unit/compute/v2/fakes.py +24 -11
- openstackclient/tests/unit/compute/v2/test_agent.py +1 -1
- openstackclient/tests/unit/compute/v2/test_aggregate.py +62 -72
- openstackclient/tests/unit/compute/v2/test_console.py +18 -30
- openstackclient/tests/unit/compute/v2/test_flavor.py +85 -89
- openstackclient/tests/unit/compute/v2/test_host.py +12 -19
- openstackclient/tests/unit/compute/v2/test_hypervisor.py +23 -25
- openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py +2 -6
- openstackclient/tests/unit/compute/v2/test_keypair.py +25 -39
- openstackclient/tests/unit/compute/v2/test_server.py +316 -365
- openstackclient/tests/unit/compute/v2/test_server_backup.py +5 -17
- openstackclient/tests/unit/compute/v2/test_server_event.py +23 -25
- openstackclient/tests/unit/compute/v2/test_server_group.py +41 -33
- openstackclient/tests/unit/compute/v2/test_server_image.py +6 -18
- openstackclient/tests/unit/compute/v2/test_server_migration.py +45 -45
- openstackclient/tests/unit/compute/v2/test_server_volume.py +15 -31
- openstackclient/tests/unit/compute/v2/test_service.py +51 -56
- openstackclient/tests/unit/compute/v2/test_usage.py +10 -13
- openstackclient/tests/unit/fakes.py +4 -0
- openstackclient/tests/unit/identity/v3/test_mappings.py +9 -4
- openstackclient/tests/unit/identity/v3/test_trust.py +0 -2
- openstackclient/tests/unit/image/v1/fakes.py +2 -1
- openstackclient/tests/unit/image/v1/test_image.py +1 -1
- openstackclient/tests/unit/image/v2/fakes.py +82 -0
- openstackclient/tests/unit/image/v2/test_cache.py +214 -0
- openstackclient/tests/unit/image/v2/test_image.py +62 -4
- openstackclient/tests/unit/image/v2/test_metadef_namespaces.py +5 -19
- openstackclient/tests/unit/image/v2/test_metadef_objects.py +162 -0
- openstackclient/tests/unit/image/v2/test_metadef_properties.py +227 -0
- openstackclient/tests/unit/integ/cli/test_shell.py +0 -2
- openstackclient/tests/unit/network/test_common.py +3 -3
- openstackclient/tests/unit/network/v2/fakes.py +1 -0
- openstackclient/tests/unit/network/v2/test_default_security_group_rule.py +1133 -0
- openstackclient/tests/unit/network/v2/test_floating_ip_compute.py +5 -13
- openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py +1 -9
- openstackclient/tests/unit/network/v2/test_network.py +33 -0
- openstackclient/tests/unit/network/v2/test_network_compute.py +5 -11
- openstackclient/tests/unit/network/v2/test_network_trunk.py +6 -8
- openstackclient/tests/unit/network/v2/test_port.py +83 -38
- openstackclient/tests/unit/network/v2/test_security_group_compute.py +7 -15
- openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py +19 -27
- openstackclient/tests/unit/network/v2/test_security_group_rule_network.py +3 -6
- openstackclient/tests/unit/network/v2/test_subnet.py +92 -0
- openstackclient/tests/unit/network/v2/test_subnet_pool.py +11 -13
- openstackclient/tests/unit/test_shell.py +1 -7
- openstackclient/tests/unit/utils.py +10 -4
- openstackclient/tests/unit/volume/v1/fakes.py +7 -1
- openstackclient/tests/unit/volume/v1/test_qos_specs.py +2 -2
- openstackclient/tests/unit/volume/v1/test_service.py +1 -1
- openstackclient/tests/unit/volume/v1/test_transfer_request.py +2 -2
- openstackclient/tests/unit/volume/v1/test_type.py +2 -4
- openstackclient/tests/unit/volume/v1/test_volume.py +5 -7
- openstackclient/tests/unit/volume/v1/test_volume_backup.py +4 -4
- openstackclient/tests/unit/volume/v2/fakes.py +32 -12
- openstackclient/tests/unit/volume/v2/test_backup_record.py +1 -1
- openstackclient/tests/unit/volume/v2/test_consistency_group.py +4 -6
- openstackclient/tests/unit/volume/v2/test_consistency_group_snapshot.py +2 -4
- openstackclient/tests/unit/volume/v2/test_qos_specs.py +2 -2
- openstackclient/tests/unit/volume/v2/test_service.py +1 -1
- openstackclient/tests/unit/volume/v2/test_volume.py +78 -16
- openstackclient/tests/unit/volume/v2/test_volume_backend.py +10 -22
- openstackclient/tests/unit/volume/v2/test_volume_backup.py +76 -89
- openstackclient/tests/unit/volume/v2/test_volume_host.py +1 -1
- openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +5 -7
- openstackclient/tests/unit/volume/v2/test_volume_transfer_request.py +4 -8
- openstackclient/tests/unit/volume/v2/test_volume_type.py +164 -24
- openstackclient/tests/unit/volume/v3/fakes.py +91 -15
- openstackclient/tests/unit/volume/v3/test_block_storage_cleanup.py +3 -7
- openstackclient/tests/unit/volume/v3/test_block_storage_cluster.py +11 -31
- openstackclient/tests/unit/volume/v3/test_block_storage_log_level.py +6 -16
- openstackclient/tests/unit/volume/v3/test_block_storage_manage.py +219 -157
- openstackclient/tests/unit/volume/v3/test_block_storage_resource_filter.py +32 -23
- openstackclient/tests/unit/volume/v3/test_volume.py +50 -48
- openstackclient/tests/unit/volume/v3/test_volume_attachment.py +17 -47
- openstackclient/tests/unit/volume/v3/test_volume_group.py +23 -65
- openstackclient/tests/unit/volume/v3/test_volume_group_snapshot.py +88 -77
- openstackclient/tests/unit/volume/v3/test_volume_group_type.py +14 -42
- openstackclient/tests/unit/volume/v3/test_volume_message.py +10 -28
- openstackclient/volume/v1/volume.py +2 -14
- openstackclient/volume/v2/volume.py +30 -15
- openstackclient/volume/v2/volume_backend.py +10 -18
- openstackclient/volume/v2/volume_backup.py +18 -15
- openstackclient/volume/v2/volume_snapshot.py +2 -12
- openstackclient/volume/v2/volume_type.py +211 -14
- openstackclient/volume/v3/block_storage_manage.py +72 -11
- openstackclient/volume/v3/block_storage_resource_filter.py +33 -11
- openstackclient/volume/v3/volume_attachment.py +2 -14
- openstackclient/volume/v3/volume_group_snapshot.py +27 -27
- openstackclient/volume/v3/volume_message.py +2 -13
- {python_openstackclient-6.3.0.dist-info → python_openstackclient-6.5.0.dist-info}/AUTHORS +11 -0
- {python_openstackclient-6.3.0.dist-info → python_openstackclient-6.5.0.dist-info}/METADATA +6 -5
- {python_openstackclient-6.3.0.dist-info → python_openstackclient-6.5.0.dist-info}/RECORD +160 -151
- {python_openstackclient-6.3.0.dist-info → python_openstackclient-6.5.0.dist-info}/entry_points.txt +23 -5
- python_openstackclient-6.5.0.dist-info/pbr.json +1 -0
- openstackclient/tests/unit/common/test_parseractions.py +0 -233
- python_openstackclient-6.3.0.dist-info/pbr.json +0 -1
- {python_openstackclient-6.3.0.dist-info → python_openstackclient-6.5.0.dist-info}/LICENSE +0 -0
- {python_openstackclient-6.3.0.dist-info → python_openstackclient-6.5.0.dist-info}/WHEEL +0 -0
- {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.
|
|
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(
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
('
|
|
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
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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(
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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(
|
|
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(
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
4745
|
+
self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
|
|
4766
4746
|
self.image_client.images.assert_called()
|
|
4767
|
-
self.
|
|
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.
|
|
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.
|
|
4767
|
+
self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
|
|
4788
4768
|
self.image_client.images.assert_not_called()
|
|
4789
|
-
self.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
4884
|
+
self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
|
|
4905
4885
|
self.image_client.images.assert_not_called()
|
|
4906
|
-
self.
|
|
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.
|
|
4915
|
+
self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
|
|
4936
4916
|
self.image_client.images.assert_not_called()
|
|
4937
|
-
self.
|
|
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.
|
|
4932
|
+
self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
|
|
4953
4933
|
self.image_client.images.assert_not_called()
|
|
4954
|
-
self.
|
|
4934
|
+
self.compute_sdk_client.flavors.assert_not_called()
|
|
4955
4935
|
self.image_client.get_image.assert_called()
|
|
4956
|
-
self.
|
|
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.
|
|
4953
|
+
self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
|
|
4974
4954
|
self.image_client.images.assert_not_called()
|
|
4975
|
-
self.
|
|
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.
|
|
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.
|
|
4972
|
+
self.compute_sdk_client.servers.assert_called_with(**self.kwargs)
|
|
4993
4973
|
self.image_client.images.assert_called_once()
|
|
4994
|
-
self.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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.
|
|
5585
|
-
self.
|
|
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.
|
|
5594
|
+
self.compute_sdk_client.find_server.assert_called_with(
|
|
5615
5595
|
self.server.id,
|
|
5616
5596
|
ignore_missing=False,
|
|
5617
5597
|
)
|
|
5618
|
-
self.
|
|
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.
|
|
5640
|
-
self.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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(
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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(
|
|
6102
|
+
self.assertRaises(
|
|
6103
|
+
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
6104
|
+
)
|
|
6131
6105
|
|
|
6132
|
-
self.
|
|
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.
|
|
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.
|
|
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.
|
|
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(
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
7364
|
-
|
|
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(
|
|
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
|
-
|
|
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.
|
|
8141
|
-
self.
|
|
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.
|
|
8099
|
+
self.compute_sdk_client.find_server.assert_called_with(
|
|
8159
8100
|
self.server.name,
|
|
8160
8101
|
ignore_missing=False,
|
|
8161
8102
|
)
|
|
8162
|
-
self.
|
|
8163
|
-
|
|
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.
|
|
8122
|
+
self.compute_sdk_client.find_server.assert_called_with(
|
|
8180
8123
|
self.server.name,
|
|
8181
8124
|
ignore_missing=False,
|
|
8182
8125
|
)
|
|
8183
|
-
self.
|
|
8184
|
-
self.
|
|
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.
|
|
8142
|
+
self.compute_sdk_client.find_server.assert_called_with(
|
|
8200
8143
|
self.server.name,
|
|
8201
8144
|
ignore_missing=False,
|
|
8202
8145
|
)
|
|
8203
|
-
self.
|
|
8204
|
-
|
|
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.
|
|
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
|
-
#
|
|
8226
|
-
|
|
8227
|
-
|
|
8228
|
-
|
|
8229
|
-
|
|
8230
|
-
|
|
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
|
-
|
|
8234
|
-
self.
|
|
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.
|
|
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
|
-
'
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
8726
|
-
self.
|
|
8727
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
8793
|
-
self.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
8950
|
+
self.compute_sdk_client.find_server.assert_called_with(
|
|
9000
8951
|
self.server.name,
|
|
9001
8952
|
ignore_missing=False,
|
|
9002
8953
|
)
|
|
9003
|
-
self.
|
|
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.
|
|
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
|
-
'
|
|
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.
|
|
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.
|
|
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)
|