python-openstackclient 7.4.0__py3-none-any.whl → 8.1.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 +3 -6
- openstackclient/common/clientmanager.py +2 -1
- openstackclient/common/envvars.py +57 -0
- openstackclient/common/extension.py +3 -11
- openstackclient/common/limits.py +1 -1
- openstackclient/common/project_cleanup.py +3 -2
- openstackclient/common/quota.py +54 -28
- openstackclient/compute/client.py +7 -5
- openstackclient/compute/v2/agent.py +5 -5
- openstackclient/compute/v2/aggregate.py +17 -15
- openstackclient/compute/v2/console.py +10 -4
- openstackclient/compute/v2/console_connection.py +48 -0
- openstackclient/compute/v2/flavor.py +14 -18
- openstackclient/compute/v2/host.py +3 -3
- openstackclient/compute/v2/hypervisor.py +10 -4
- openstackclient/compute/v2/hypervisor_stats.py +1 -1
- openstackclient/compute/v2/keypair.py +18 -13
- openstackclient/compute/v2/server.py +144 -121
- openstackclient/compute/v2/server_backup.py +1 -1
- openstackclient/compute/v2/server_event.py +8 -17
- openstackclient/compute/v2/server_group.py +6 -6
- openstackclient/compute/v2/server_image.py +1 -1
- openstackclient/compute/v2/server_migration.py +6 -6
- openstackclient/compute/v2/server_volume.py +4 -4
- openstackclient/compute/v2/service.py +9 -13
- openstackclient/compute/v2/usage.py +4 -6
- openstackclient/identity/client.py +2 -4
- openstackclient/identity/common.py +95 -17
- openstackclient/identity/v2_0/ec2creds.py +4 -3
- openstackclient/identity/v2_0/endpoint.py +12 -10
- openstackclient/identity/v2_0/project.py +6 -6
- openstackclient/identity/v2_0/role.py +1 -1
- openstackclient/identity/v2_0/service.py +7 -7
- openstackclient/identity/v2_0/user.py +6 -21
- openstackclient/identity/v3/access_rule.py +2 -5
- openstackclient/identity/v3/application_credential.py +2 -2
- openstackclient/identity/v3/consumer.py +4 -3
- openstackclient/identity/v3/credential.py +6 -7
- openstackclient/identity/v3/domain.py +63 -44
- openstackclient/identity/v3/ec2creds.py +4 -3
- openstackclient/identity/v3/endpoint.py +104 -88
- openstackclient/identity/v3/endpoint_group.py +1 -1
- openstackclient/identity/v3/group.py +116 -72
- openstackclient/identity/v3/identity_provider.py +1 -2
- openstackclient/identity/v3/limit.py +4 -9
- openstackclient/identity/v3/mapping.py +4 -3
- openstackclient/identity/v3/policy.py +5 -8
- openstackclient/identity/v3/project.py +23 -6
- openstackclient/identity/v3/region.py +2 -5
- openstackclient/identity/v3/registered_limit.py +4 -8
- openstackclient/identity/v3/role.py +15 -16
- openstackclient/identity/v3/service.py +8 -8
- openstackclient/identity/v3/service_provider.py +3 -6
- openstackclient/identity/v3/tag.py +2 -2
- openstackclient/identity/v3/token.py +1 -2
- openstackclient/identity/v3/trust.py +74 -25
- openstackclient/identity/v3/user.py +47 -11
- openstackclient/image/client.py +7 -5
- openstackclient/image/v1/image.py +11 -15
- openstackclient/image/v2/cache.py +2 -4
- openstackclient/image/v2/image.py +41 -48
- openstackclient/image/v2/metadef_namespaces.py +4 -3
- openstackclient/image/v2/metadef_resource_type_association.py +1 -2
- openstackclient/image/v2/metadef_resource_types.py +1 -2
- openstackclient/locale/tr_TR/LC_MESSAGES/openstackclient.po +9 -1370
- openstackclient/network/client.py +4 -16
- openstackclient/network/common.py +16 -12
- openstackclient/network/utils.py +3 -3
- openstackclient/network/v2/address_group.py +5 -9
- openstackclient/network/v2/address_scope.py +2 -3
- openstackclient/network/v2/default_security_group_rule.py +1 -2
- openstackclient/network/v2/floating_ip.py +69 -47
- openstackclient/network/v2/floating_ip_port_forwarding.py +7 -7
- openstackclient/network/v2/ip_availability.py +1 -2
- openstackclient/network/v2/l3_conntrack_helper.py +8 -12
- openstackclient/network/v2/local_ip.py +24 -26
- openstackclient/network/v2/local_ip_association.py +4 -5
- openstackclient/network/v2/ndp_proxy.py +9 -10
- openstackclient/network/v2/network.py +12 -16
- openstackclient/network/v2/network_agent.py +29 -37
- openstackclient/network/v2/network_auto_allocated_topology.py +4 -5
- openstackclient/network/v2/network_flavor.py +1 -1
- openstackclient/network/v2/network_flavor_profile.py +5 -5
- openstackclient/network/v2/network_meter.py +3 -3
- openstackclient/network/v2/network_meter_rule.py +5 -8
- openstackclient/network/v2/network_qos_policy.py +4 -4
- openstackclient/network/v2/network_qos_rule.py +7 -16
- openstackclient/network/v2/network_rbac.py +4 -4
- openstackclient/network/v2/network_segment.py +6 -7
- openstackclient/network/v2/network_segment_range.py +16 -20
- openstackclient/network/v2/network_trunk.py +24 -16
- openstackclient/network/v2/port.py +28 -29
- openstackclient/network/v2/router.py +53 -42
- openstackclient/network/v2/security_group.py +13 -19
- openstackclient/network/v2/security_group_rule.py +10 -11
- openstackclient/network/v2/subnet.py +31 -30
- openstackclient/network/v2/subnet_pool.py +4 -4
- openstackclient/object/client.py +2 -3
- openstackclient/object/v1/container.py +2 -3
- openstackclient/object/v1/object.py +2 -9
- openstackclient/shell.py +22 -5
- openstackclient/tests/functional/base.py +7 -3
- openstackclient/tests/functional/common/test_quota.py +3 -1
- openstackclient/tests/functional/compute/v2/common.py +12 -6
- openstackclient/tests/functional/compute/v2/test_keypair.py +41 -5
- openstackclient/tests/functional/compute/v2/test_server.py +2 -3
- openstackclient/tests/functional/compute/v2/test_server_event.py +1 -1
- openstackclient/tests/functional/identity/v2/test_user.py +1 -1
- openstackclient/tests/functional/identity/v3/common.py +3 -8
- openstackclient/tests/functional/identity/v3/test_application_credential.py +10 -10
- openstackclient/tests/functional/identity/v3/test_endpoint.py +3 -3
- openstackclient/tests/functional/identity/v3/test_group.py +3 -3
- openstackclient/tests/functional/identity/v3/test_idp.py +3 -7
- openstackclient/tests/functional/identity/v3/test_limit.py +4 -4
- openstackclient/tests/functional/identity/v3/test_project.py +5 -14
- openstackclient/tests/functional/identity/v3/test_region.py +1 -3
- openstackclient/tests/functional/identity/v3/test_registered_limit.py +3 -3
- openstackclient/tests/functional/identity/v3/test_role.py +1 -1
- openstackclient/tests/functional/identity/v3/test_role_assignment.py +13 -31
- openstackclient/tests/functional/identity/v3/test_service_provider.py +3 -7
- openstackclient/tests/functional/identity/v3/test_user.py +8 -8
- openstackclient/tests/functional/network/v2/common.py +7 -3
- openstackclient/tests/functional/network/v2/test_address_group.py +4 -0
- openstackclient/tests/functional/network/v2/test_l3_conntrack_helper.py +15 -11
- openstackclient/tests/functional/network/v2/test_local_ip.py +4 -0
- openstackclient/tests/functional/network/v2/test_network_meter_rule.py +2 -2
- openstackclient/tests/functional/network/v2/test_network_ndp_proxy.py +2 -3
- openstackclient/tests/functional/network/v2/test_network_rbac.py +2 -2
- openstackclient/tests/functional/network/v2/test_network_trunk.py +1 -1
- openstackclient/tests/functional/network/v2/test_port.py +17 -7
- openstackclient/tests/functional/network/v2/test_router.py +42 -0
- openstackclient/tests/functional/network/v2/test_subnet_pool.py +4 -0
- openstackclient/tests/unit/api/test_compute_v2.py +67 -87
- openstackclient/tests/unit/common/test_availability_zone.py +6 -14
- openstackclient/tests/unit/common/test_command.py +1 -1
- openstackclient/tests/unit/common/test_extension.py +5 -7
- openstackclient/tests/unit/common/test_limits.py +1 -1
- openstackclient/tests/unit/common/test_project_cleanup.py +5 -6
- openstackclient/tests/unit/common/test_quota.py +51 -28
- openstackclient/tests/unit/compute/v2/fakes.py +85 -315
- openstackclient/tests/unit/compute/v2/test_agent.py +16 -16
- openstackclient/tests/unit/compute/v2/test_aggregate.py +56 -60
- openstackclient/tests/unit/compute/v2/test_console.py +34 -17
- openstackclient/tests/unit/compute/v2/test_console_connection.py +72 -0
- openstackclient/tests/unit/compute/v2/test_flavor.py +72 -72
- openstackclient/tests/unit/compute/v2/test_host.py +8 -8
- openstackclient/tests/unit/compute/v2/test_hypervisor.py +22 -30
- openstackclient/tests/unit/compute/v2/test_hypervisor_stats.py +2 -2
- openstackclient/tests/unit/compute/v2/test_keypair.py +36 -29
- openstackclient/tests/unit/compute/v2/test_server.py +693 -606
- openstackclient/tests/unit/compute/v2/test_server_backup.py +36 -77
- openstackclient/tests/unit/compute/v2/test_server_event.py +18 -20
- openstackclient/tests/unit/compute/v2/test_server_group.py +25 -31
- openstackclient/tests/unit/compute/v2/test_server_image.py +37 -78
- openstackclient/tests/unit/compute/v2/test_server_migration.py +41 -41
- openstackclient/tests/unit/compute/v2/test_server_volume.py +12 -12
- openstackclient/tests/unit/compute/v2/test_service.py +39 -45
- openstackclient/tests/unit/compute/v2/test_usage.py +5 -5
- openstackclient/tests/unit/identity/v2_0/fakes.py +1 -1
- openstackclient/tests/unit/identity/v3/test_access_rule.py +1 -3
- openstackclient/tests/unit/identity/v3/test_application_credential.py +48 -26
- openstackclient/tests/unit/identity/v3/test_domain.py +115 -105
- openstackclient/tests/unit/identity/v3/test_endpoint.py +167 -172
- openstackclient/tests/unit/identity/v3/test_group.py +353 -202
- openstackclient/tests/unit/identity/v3/test_mappings.py +2 -2
- openstackclient/tests/unit/identity/v3/test_project.py +16 -0
- openstackclient/tests/unit/identity/v3/test_trust.py +5 -2
- openstackclient/tests/unit/identity/v3/test_user.py +102 -6
- openstackclient/tests/unit/image/v1/fakes.py +2 -2
- openstackclient/tests/unit/image/v1/test_image.py +8 -9
- openstackclient/tests/unit/image/v2/test_image.py +84 -46
- openstackclient/tests/unit/integ/cli/test_shell.py +1 -2
- openstackclient/tests/unit/network/test_common.py +2 -2
- openstackclient/tests/unit/network/v2/fakes.py +405 -485
- openstackclient/tests/unit/network/v2/test_floating_ip_compute.py +8 -14
- openstackclient/tests/unit/network/v2/test_floating_ip_network.py +62 -54
- openstackclient/tests/unit/network/v2/test_floating_ip_pool_compute.py +1 -1
- openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py +2 -2
- openstackclient/tests/unit/network/v2/test_ndp_proxy.py +1 -3
- openstackclient/tests/unit/network/v2/test_network.py +4 -4
- openstackclient/tests/unit/network/v2/test_network_agent.py +15 -29
- openstackclient/tests/unit/network/v2/test_network_compute.py +11 -11
- openstackclient/tests/unit/network/v2/test_network_qos_policy.py +16 -19
- openstackclient/tests/unit/network/v2/test_network_qos_rule.py +79 -152
- openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py +4 -6
- openstackclient/tests/unit/network/v2/test_network_rbac.py +2 -2
- openstackclient/tests/unit/network/v2/test_network_trunk.py +2 -2
- openstackclient/tests/unit/network/v2/test_port.py +21 -22
- openstackclient/tests/unit/network/v2/test_router.py +130 -51
- openstackclient/tests/unit/network/v2/test_security_group_compute.py +11 -19
- openstackclient/tests/unit/network/v2/test_security_group_network.py +25 -27
- openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py +15 -17
- openstackclient/tests/unit/network/v2/test_security_group_rule_network.py +33 -39
- openstackclient/tests/unit/object/v1/test_object_all.py +4 -3
- openstackclient/tests/unit/test_shell.py +16 -13
- openstackclient/tests/unit/volume/v2/fakes.py +1 -2
- openstackclient/tests/unit/volume/v2/test_service.py +57 -91
- openstackclient/tests/unit/volume/v2/test_volume.py +109 -106
- openstackclient/tests/unit/volume/v2/test_volume_backup.py +141 -148
- openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +293 -283
- openstackclient/tests/unit/volume/v2/test_volume_transfer_request.py +1 -1
- openstackclient/tests/unit/volume/v3/fakes.py +2 -8
- openstackclient/tests/unit/volume/v3/test_block_storage_log_level.py +61 -71
- openstackclient/tests/unit/volume/v3/test_service.py +221 -141
- openstackclient/tests/unit/volume/v3/test_volume.py +131 -120
- openstackclient/tests/unit/volume/v3/test_volume_attachment.py +4 -4
- openstackclient/tests/unit/volume/v3/test_volume_backup.py +198 -203
- openstackclient/tests/unit/volume/v3/test_volume_snapshot.py +683 -49
- openstackclient/tests/unit/volume/v3/test_volume_transfer_request.py +1 -1
- openstackclient/volume/client.py +1 -3
- openstackclient/volume/v2/consistency_group.py +4 -8
- openstackclient/volume/v2/consistency_group_snapshot.py +1 -2
- openstackclient/volume/v2/qos_specs.py +1 -2
- openstackclient/volume/v2/service.py +41 -38
- openstackclient/volume/v2/volume.py +71 -53
- openstackclient/volume/v2/volume_backup.py +15 -10
- openstackclient/volume/v2/volume_snapshot.py +129 -93
- openstackclient/volume/v2/volume_transfer_request.py +0 -3
- openstackclient/volume/v2/volume_type.py +10 -21
- openstackclient/volume/v3/block_storage_cluster.py +3 -3
- openstackclient/volume/v3/block_storage_log_level.py +22 -28
- openstackclient/volume/v3/block_storage_manage.py +1 -3
- openstackclient/volume/v3/service.py +105 -14
- openstackclient/volume/v3/volume.py +218 -58
- openstackclient/volume/v3/volume_attachment.py +3 -2
- openstackclient/volume/v3/volume_backup.py +31 -27
- openstackclient/volume/v3/volume_group.py +2 -1
- openstackclient/volume/v3/volume_group_snapshot.py +2 -1
- openstackclient/volume/v3/volume_snapshot.py +489 -13
- openstackclient/volume/v3/volume_type.py +10 -21
- {python_openstackclient-7.4.0.dist-info → python_openstackclient-8.1.0.dist-info}/AUTHORS +11 -0
- python_openstackclient-8.1.0.dist-info/METADATA +264 -0
- {python_openstackclient-7.4.0.dist-info → python_openstackclient-8.1.0.dist-info}/RECORD +238 -259
- {python_openstackclient-7.4.0.dist-info → python_openstackclient-8.1.0.dist-info}/WHEEL +1 -1
- {python_openstackclient-7.4.0.dist-info → python_openstackclient-8.1.0.dist-info}/entry_points.txt +7 -47
- python_openstackclient-8.1.0.dist-info/pbr.json +1 -0
- openstackclient/tests/functional/volume/v1/__init__.py +0 -0
- openstackclient/tests/functional/volume/v1/common.py +0 -35
- openstackclient/tests/functional/volume/v1/test_qos.py +0 -100
- openstackclient/tests/functional/volume/v1/test_service.py +0 -76
- openstackclient/tests/functional/volume/v1/test_snapshot.py +0 -232
- openstackclient/tests/functional/volume/v1/test_transfer_request.py +0 -111
- openstackclient/tests/functional/volume/v1/test_volume.py +0 -228
- openstackclient/tests/functional/volume/v1/test_volume_type.py +0 -213
- openstackclient/tests/unit/volume/v1/__init__.py +0 -0
- openstackclient/tests/unit/volume/v1/fakes.py +0 -615
- openstackclient/tests/unit/volume/v1/test_qos_specs.py +0 -471
- openstackclient/tests/unit/volume/v1/test_service.py +0 -295
- openstackclient/tests/unit/volume/v1/test_transfer_request.py +0 -380
- openstackclient/tests/unit/volume/v1/test_type.py +0 -633
- openstackclient/tests/unit/volume/v1/test_volume.py +0 -1447
- openstackclient/tests/unit/volume/v1/test_volume_backup.py +0 -435
- openstackclient/volume/v1/__init__.py +0 -0
- openstackclient/volume/v1/qos_specs.py +0 -377
- openstackclient/volume/v1/service.py +0 -136
- openstackclient/volume/v1/volume.py +0 -734
- openstackclient/volume/v1/volume_backup.py +0 -302
- openstackclient/volume/v1/volume_snapshot.py +0 -433
- openstackclient/volume/v1/volume_transfer_request.py +0 -200
- openstackclient/volume/v1/volume_type.py +0 -520
- python_openstackclient-7.4.0.dist-info/METADATA +0 -172
- python_openstackclient-7.4.0.dist-info/pbr.json +0 -1
- {python_openstackclient-7.4.0.dist-info → python_openstackclient-8.1.0.dist-info}/LICENSE +0 -0
- {python_openstackclient-7.4.0.dist-info → python_openstackclient-8.1.0.dist-info}/top_level.txt +0 -0
|
@@ -21,6 +21,7 @@ from unittest import mock
|
|
|
21
21
|
import uuid
|
|
22
22
|
|
|
23
23
|
import iso8601
|
|
24
|
+
from openstack.compute.v2 import server as _server
|
|
24
25
|
from openstack.compute.v2 import server_group as _server_group
|
|
25
26
|
from openstack import exceptions as sdk_exceptions
|
|
26
27
|
from openstack.test import fakes as sdk_fakes
|
|
@@ -70,13 +71,13 @@ class TestServer(compute_fakes.TestComputev2):
|
|
|
70
71
|
self.attrs = {}
|
|
71
72
|
|
|
72
73
|
def setup_sdk_servers_mock(self, count):
|
|
73
|
-
servers = compute_fakes.
|
|
74
|
+
servers = compute_fakes.create_servers(
|
|
74
75
|
attrs=self.attrs,
|
|
75
76
|
count=count,
|
|
76
77
|
)
|
|
77
78
|
|
|
78
79
|
# This is the return value for compute_client.find_server()
|
|
79
|
-
self.
|
|
80
|
+
self.compute_client.find_server.side_effect = servers
|
|
80
81
|
|
|
81
82
|
return servers
|
|
82
83
|
|
|
@@ -132,9 +133,7 @@ class TestServerAddFixedIP(TestServer):
|
|
|
132
133
|
servers = self.setup_sdk_servers_mock(count=1)
|
|
133
134
|
network = compute_fakes.create_one_network()
|
|
134
135
|
interface = compute_fakes.create_one_server_interface()
|
|
135
|
-
self.
|
|
136
|
-
interface
|
|
137
|
-
)
|
|
136
|
+
self.compute_client.create_server_interface.return_value = interface
|
|
138
137
|
|
|
139
138
|
with mock.patch.object(
|
|
140
139
|
self.app.client_manager,
|
|
@@ -169,7 +168,7 @@ class TestServerAddFixedIP(TestServer):
|
|
|
169
168
|
|
|
170
169
|
self.assertEqual(expected_columns, columns)
|
|
171
170
|
self.assertEqual(expected_data, tuple(data))
|
|
172
|
-
self.
|
|
171
|
+
self.compute_client.create_server_interface.assert_called_once_with(
|
|
173
172
|
servers[0].id, net_id=network['id']
|
|
174
173
|
)
|
|
175
174
|
|
|
@@ -179,9 +178,7 @@ class TestServerAddFixedIP(TestServer):
|
|
|
179
178
|
servers = self.setup_sdk_servers_mock(count=1)
|
|
180
179
|
network = compute_fakes.create_one_network()
|
|
181
180
|
interface = compute_fakes.create_one_server_interface()
|
|
182
|
-
self.
|
|
183
|
-
interface
|
|
184
|
-
)
|
|
181
|
+
self.compute_client.create_server_interface.return_value = interface
|
|
185
182
|
|
|
186
183
|
with mock.patch.object(
|
|
187
184
|
self.app.client_manager,
|
|
@@ -222,7 +219,7 @@ class TestServerAddFixedIP(TestServer):
|
|
|
222
219
|
|
|
223
220
|
self.assertEqual(expected_columns, columns)
|
|
224
221
|
self.assertEqual(expected_data, tuple(data))
|
|
225
|
-
self.
|
|
222
|
+
self.compute_client.create_server_interface.assert_called_once_with(
|
|
226
223
|
servers[0].id,
|
|
227
224
|
net_id=network['id'],
|
|
228
225
|
fixed_ips=[{'ip_address': '5.6.7.8'}],
|
|
@@ -234,9 +231,7 @@ class TestServerAddFixedIP(TestServer):
|
|
|
234
231
|
servers = self.setup_sdk_servers_mock(count=1)
|
|
235
232
|
network = compute_fakes.create_one_network()
|
|
236
233
|
interface = compute_fakes.create_one_server_interface()
|
|
237
|
-
self.
|
|
238
|
-
interface
|
|
239
|
-
)
|
|
234
|
+
self.compute_client.create_server_interface.return_value = interface
|
|
240
235
|
|
|
241
236
|
with mock.patch.object(
|
|
242
237
|
self.app.client_manager,
|
|
@@ -282,7 +277,7 @@ class TestServerAddFixedIP(TestServer):
|
|
|
282
277
|
|
|
283
278
|
self.assertEqual(expected_columns, columns)
|
|
284
279
|
self.assertEqual(expected_data, tuple(data))
|
|
285
|
-
self.
|
|
280
|
+
self.compute_client.create_server_interface.assert_called_once_with(
|
|
286
281
|
servers[0].id,
|
|
287
282
|
net_id=network['id'],
|
|
288
283
|
fixed_ips=[{'ip_address': '5.6.7.8'}],
|
|
@@ -295,9 +290,7 @@ class TestServerAddFixedIP(TestServer):
|
|
|
295
290
|
servers = self.setup_sdk_servers_mock(count=1)
|
|
296
291
|
network = compute_fakes.create_one_network()
|
|
297
292
|
interface = compute_fakes.create_one_server_interface()
|
|
298
|
-
self.
|
|
299
|
-
interface
|
|
300
|
-
)
|
|
293
|
+
self.compute_client.create_server_interface.return_value = interface
|
|
301
294
|
|
|
302
295
|
with mock.patch.object(
|
|
303
296
|
self.app.client_manager,
|
|
@@ -343,7 +336,7 @@ class TestServerAddFixedIP(TestServer):
|
|
|
343
336
|
|
|
344
337
|
self.assertEqual(expected_columns, columns)
|
|
345
338
|
self.assertEqual(expected_data, tuple(data))
|
|
346
|
-
self.
|
|
339
|
+
self.compute_client.create_server_interface.assert_called_once_with(
|
|
347
340
|
servers[0].id,
|
|
348
341
|
net_id=network['id'],
|
|
349
342
|
fixed_ips=[{'ip_address': '5.6.7.8'}],
|
|
@@ -356,8 +349,8 @@ class TestServerAddFloatingIPCompute(compute_fakes.TestComputev2):
|
|
|
356
349
|
super().setUp()
|
|
357
350
|
|
|
358
351
|
self.app.client_manager.network_endpoint_enabled = False
|
|
359
|
-
self.server = compute_fakes.
|
|
360
|
-
self.
|
|
352
|
+
self.server = compute_fakes.create_one_server()
|
|
353
|
+
self.compute_client.find_server.return_value = self.server
|
|
361
354
|
|
|
362
355
|
self.cmd = server.AddFloatingIP(self.app, None)
|
|
363
356
|
|
|
@@ -374,10 +367,10 @@ class TestServerAddFloatingIPCompute(compute_fakes.TestComputev2):
|
|
|
374
367
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
375
368
|
self.cmd.take_action(parsed_args)
|
|
376
369
|
|
|
377
|
-
self.
|
|
370
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
378
371
|
self.server.name, ignore_missing=False
|
|
379
372
|
)
|
|
380
|
-
self.
|
|
373
|
+
self.compute_client.add_floating_ip_to_server.assert_called_once_with(
|
|
381
374
|
self.server, '1.2.3.4', fixed_address=None
|
|
382
375
|
)
|
|
383
376
|
|
|
@@ -397,10 +390,10 @@ class TestServerAddFloatingIPCompute(compute_fakes.TestComputev2):
|
|
|
397
390
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
398
391
|
self.cmd.take_action(parsed_args)
|
|
399
392
|
|
|
400
|
-
self.
|
|
393
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
401
394
|
self.server.name, ignore_missing=False
|
|
402
395
|
)
|
|
403
|
-
self.
|
|
396
|
+
self.compute_client.add_floating_ip_to_server.assert_called_once_with(
|
|
404
397
|
self.server, '1.2.3.4', fixed_address='5.6.7.8'
|
|
405
398
|
)
|
|
406
399
|
|
|
@@ -412,8 +405,8 @@ class TestServerAddFloatingIPNetwork(
|
|
|
412
405
|
def setUp(self):
|
|
413
406
|
super().setUp()
|
|
414
407
|
|
|
415
|
-
self.server = compute_fakes.
|
|
416
|
-
self.
|
|
408
|
+
self.server = compute_fakes.create_one_server()
|
|
409
|
+
self.compute_client.find_server.return_value = self.server
|
|
417
410
|
|
|
418
411
|
self.network_client.update_ip = mock.Mock(return_value=None)
|
|
419
412
|
|
|
@@ -637,7 +630,7 @@ class TestServerAddPort(TestServer):
|
|
|
637
630
|
|
|
638
631
|
result = self.cmd.take_action(parsed_args)
|
|
639
632
|
|
|
640
|
-
self.
|
|
633
|
+
self.compute_client.create_server_interface.assert_called_once_with(
|
|
641
634
|
servers[0], port_id=port_id
|
|
642
635
|
)
|
|
643
636
|
self.assertIsNone(result)
|
|
@@ -674,7 +667,7 @@ class TestServerAddPort(TestServer):
|
|
|
674
667
|
result = self.cmd.take_action(parsed_args)
|
|
675
668
|
self.assertIsNone(result)
|
|
676
669
|
|
|
677
|
-
self.
|
|
670
|
+
self.compute_client.create_server_interface.assert_called_once_with(
|
|
678
671
|
servers[0], port_id='fake-port', tag='tag1'
|
|
679
672
|
)
|
|
680
673
|
|
|
@@ -708,8 +701,8 @@ class TestServerVolume(TestServer):
|
|
|
708
701
|
def setUp(self):
|
|
709
702
|
super().setUp()
|
|
710
703
|
|
|
711
|
-
self.server = compute_fakes.
|
|
712
|
-
self.
|
|
704
|
+
self.server = compute_fakes.create_one_server()
|
|
705
|
+
self.compute_client.find_server.return_value = self.server
|
|
713
706
|
|
|
714
707
|
self.volume = volume_fakes.create_one_sdk_volume()
|
|
715
708
|
self.volume_sdk_client.find_volume.return_value = self.volume
|
|
@@ -722,7 +715,7 @@ class TestServerVolume(TestServer):
|
|
|
722
715
|
attrs=attrs
|
|
723
716
|
)
|
|
724
717
|
|
|
725
|
-
self.
|
|
718
|
+
self.compute_client.create_volume_attachment.return_value = (
|
|
726
719
|
self.volume_attachment
|
|
727
720
|
)
|
|
728
721
|
|
|
@@ -762,7 +755,7 @@ class TestServerAddVolume(TestServerVolume):
|
|
|
762
755
|
|
|
763
756
|
self.assertEqual(expected_columns, columns)
|
|
764
757
|
self.assertEqual(expected_data, data)
|
|
765
|
-
self.
|
|
758
|
+
self.compute_client.create_volume_attachment.assert_called_once_with(
|
|
766
759
|
self.server, volumeId=self.volume.id, device='/dev/sdb'
|
|
767
760
|
)
|
|
768
761
|
|
|
@@ -799,7 +792,7 @@ class TestServerAddVolume(TestServerVolume):
|
|
|
799
792
|
|
|
800
793
|
self.assertEqual(expected_columns, columns)
|
|
801
794
|
self.assertEqual(expected_data, data)
|
|
802
|
-
self.
|
|
795
|
+
self.compute_client.create_volume_attachment.assert_called_once_with(
|
|
803
796
|
self.server,
|
|
804
797
|
volumeId=self.volume.id,
|
|
805
798
|
device='/dev/sdb',
|
|
@@ -869,7 +862,7 @@ class TestServerAddVolume(TestServerVolume):
|
|
|
869
862
|
columns, data = self.cmd.take_action(parsed_args)
|
|
870
863
|
self.assertEqual(expected_columns, columns)
|
|
871
864
|
self.assertEqual(expected_data, data)
|
|
872
|
-
self.
|
|
865
|
+
self.compute_client.create_volume_attachment.assert_called_once_with(
|
|
873
866
|
self.server,
|
|
874
867
|
volumeId=self.volume.id,
|
|
875
868
|
device='/dev/sdb',
|
|
@@ -918,7 +911,7 @@ class TestServerAddVolume(TestServerVolume):
|
|
|
918
911
|
|
|
919
912
|
self.assertEqual(expected_columns, columns)
|
|
920
913
|
self.assertEqual(expected_data, data)
|
|
921
|
-
self.
|
|
914
|
+
self.compute_client.create_volume_attachment.assert_called_once_with(
|
|
922
915
|
self.server,
|
|
923
916
|
volumeId=self.volume.id,
|
|
924
917
|
device='/dev/sdb',
|
|
@@ -1031,7 +1024,7 @@ class TestServerRemoveVolume(TestServerVolume):
|
|
|
1031
1024
|
result = self.cmd.take_action(parsed_args)
|
|
1032
1025
|
|
|
1033
1026
|
self.assertIsNone(result)
|
|
1034
|
-
self.
|
|
1027
|
+
self.compute_client.delete_volume_attachment.assert_called_once_with(
|
|
1035
1028
|
self.volume,
|
|
1036
1029
|
self.server,
|
|
1037
1030
|
ignore_missing=False,
|
|
@@ -1061,7 +1054,7 @@ class TestServerAddNetwork(TestServer):
|
|
|
1061
1054
|
|
|
1062
1055
|
result = self.cmd.take_action(parsed_args)
|
|
1063
1056
|
|
|
1064
|
-
self.
|
|
1057
|
+
self.compute_client.create_server_interface.assert_called_once_with(
|
|
1065
1058
|
servers[0], net_id=net_id
|
|
1066
1059
|
)
|
|
1067
1060
|
self.assertIsNone(result)
|
|
@@ -1099,7 +1092,7 @@ class TestServerAddNetwork(TestServer):
|
|
|
1099
1092
|
result = self.cmd.take_action(parsed_args)
|
|
1100
1093
|
self.assertIsNone(result)
|
|
1101
1094
|
|
|
1102
|
-
self.
|
|
1095
|
+
self.compute_client.create_server_interface.assert_called_once_with(
|
|
1103
1096
|
servers[0], net_id='fake-network', tag='tag1'
|
|
1104
1097
|
)
|
|
1105
1098
|
|
|
@@ -1134,11 +1127,9 @@ class TestServerAddSecurityGroup(compute_fakes.TestComputev2):
|
|
|
1134
1127
|
def setUp(self):
|
|
1135
1128
|
super().setUp()
|
|
1136
1129
|
|
|
1137
|
-
self.server = compute_fakes.
|
|
1138
|
-
self.
|
|
1139
|
-
self.
|
|
1140
|
-
None
|
|
1141
|
-
)
|
|
1130
|
+
self.server = compute_fakes.create_one_server()
|
|
1131
|
+
self.compute_client.find_server.return_value = self.server
|
|
1132
|
+
self.compute_client.add_security_group_to_server.return_value = None
|
|
1142
1133
|
|
|
1143
1134
|
# Get the command object to test
|
|
1144
1135
|
self.cmd = server.AddServerSecurityGroup(self.app, None)
|
|
@@ -1163,14 +1154,14 @@ class TestServerAddSecurityGroup(compute_fakes.TestComputev2):
|
|
|
1163
1154
|
) as mock_find_nova_net_sg:
|
|
1164
1155
|
result = self.cmd.take_action(parsed_args)
|
|
1165
1156
|
|
|
1166
|
-
self.
|
|
1157
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
1167
1158
|
self.server.id, ignore_missing=False
|
|
1168
1159
|
)
|
|
1169
|
-
self.
|
|
1160
|
+
self.compute_client.add_security_group_to_server.assert_called_once_with(
|
|
1170
1161
|
self.server, {'name': 'fake_sg'}
|
|
1171
1162
|
)
|
|
1172
1163
|
mock_find_nova_net_sg.assert_called_once_with(
|
|
1173
|
-
self.
|
|
1164
|
+
self.compute_client, 'fake_sg'
|
|
1174
1165
|
)
|
|
1175
1166
|
self.assertIsNone(result)
|
|
1176
1167
|
|
|
@@ -1184,10 +1175,10 @@ class TestServerAddSecurityGroup(compute_fakes.TestComputev2):
|
|
|
1184
1175
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
1185
1176
|
result = self.cmd.take_action(parsed_args)
|
|
1186
1177
|
|
|
1187
|
-
self.
|
|
1178
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
1188
1179
|
self.server.id, ignore_missing=False
|
|
1189
1180
|
)
|
|
1190
|
-
self.
|
|
1181
|
+
self.compute_client.add_security_group_to_server.assert_called_once_with(
|
|
1191
1182
|
self.server, {'name': 'fake_sg'}
|
|
1192
1183
|
)
|
|
1193
1184
|
self.assertIsNone(result)
|
|
@@ -1297,7 +1288,7 @@ class TestServerCreate(TestServer):
|
|
|
1297
1288
|
self.image_client.get_image.return_value = self.image
|
|
1298
1289
|
|
|
1299
1290
|
self.flavor = compute_fakes.create_one_flavor()
|
|
1300
|
-
self.
|
|
1291
|
+
self.compute_client.find_flavor.return_value = self.flavor
|
|
1301
1292
|
|
|
1302
1293
|
attrs = {
|
|
1303
1294
|
'addresses': {},
|
|
@@ -1305,10 +1296,10 @@ class TestServerCreate(TestServer):
|
|
|
1305
1296
|
'image': self.image,
|
|
1306
1297
|
'flavor': self.flavor,
|
|
1307
1298
|
}
|
|
1308
|
-
self.server = compute_fakes.
|
|
1299
|
+
self.server = compute_fakes.create_one_server(attrs=attrs)
|
|
1309
1300
|
|
|
1310
|
-
self.
|
|
1311
|
-
self.
|
|
1301
|
+
self.compute_client.create_server.return_value = self.server
|
|
1302
|
+
self.compute_client.get_server.return_value = self.server
|
|
1312
1303
|
|
|
1313
1304
|
self.volume = volume_fakes.create_one_volume()
|
|
1314
1305
|
self.snapshot = volume_fakes.create_one_snapshot()
|
|
@@ -1350,13 +1341,13 @@ class TestServerCreate(TestServer):
|
|
|
1350
1341
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
1351
1342
|
columns, data = self.cmd.take_action(parsed_args)
|
|
1352
1343
|
|
|
1353
|
-
self.
|
|
1344
|
+
self.compute_client.find_flavor.assert_has_calls(
|
|
1354
1345
|
[mock.call(self.flavor.id, ignore_missing=False)] * 2
|
|
1355
1346
|
)
|
|
1356
1347
|
self.image_client.find_image.assert_called_once_with(
|
|
1357
1348
|
self.image.id, ignore_missing=False
|
|
1358
1349
|
)
|
|
1359
|
-
self.
|
|
1350
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
1360
1351
|
name=self.server.name,
|
|
1361
1352
|
image_id=self.image.id,
|
|
1362
1353
|
flavor_id=self.flavor.id,
|
|
@@ -1380,7 +1371,7 @@ class TestServerCreate(TestServer):
|
|
|
1380
1371
|
server_group = sdk_fakes.generate_fake_resource(
|
|
1381
1372
|
_server_group.ServerGroup
|
|
1382
1373
|
)
|
|
1383
|
-
self.
|
|
1374
|
+
self.compute_client.find_server_group.return_value = server_group
|
|
1384
1375
|
|
|
1385
1376
|
security_group = network_fakes.create_one_security_group()
|
|
1386
1377
|
self.network_client.find_security_group.return_value = security_group
|
|
@@ -1423,7 +1414,7 @@ class TestServerCreate(TestServer):
|
|
|
1423
1414
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
1424
1415
|
columns, data = self.cmd.take_action(parsed_args)
|
|
1425
1416
|
|
|
1426
|
-
self.
|
|
1417
|
+
self.compute_client.find_flavor.assert_has_calls(
|
|
1427
1418
|
[mock.call(self.flavor.id, ignore_missing=False)] * 2
|
|
1428
1419
|
)
|
|
1429
1420
|
self.network_client.find_security_group.assert_called_once_with(
|
|
@@ -1432,10 +1423,10 @@ class TestServerCreate(TestServer):
|
|
|
1432
1423
|
self.image_client.find_image.assert_called_once_with(
|
|
1433
1424
|
self.image.id, ignore_missing=False
|
|
1434
1425
|
)
|
|
1435
|
-
self.
|
|
1426
|
+
self.compute_client.find_server_group.assert_called_once_with(
|
|
1436
1427
|
server_group.id, ignore_missing=False
|
|
1437
1428
|
)
|
|
1438
|
-
self.
|
|
1429
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
1439
1430
|
name=self.server.name,
|
|
1440
1431
|
image_id=self.image.id,
|
|
1441
1432
|
flavor_id=self.flavor.id,
|
|
@@ -1525,8 +1516,8 @@ class TestServerCreate(TestServer):
|
|
|
1525
1516
|
) as mock_find:
|
|
1526
1517
|
columns, data = self.cmd.take_action(parsed_args)
|
|
1527
1518
|
|
|
1528
|
-
mock_find.assert_called_once_with(self.
|
|
1529
|
-
self.
|
|
1519
|
+
mock_find.assert_called_once_with(self.compute_client, sg_name)
|
|
1520
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
1530
1521
|
name=self.server.name,
|
|
1531
1522
|
image_id=self.image.id,
|
|
1532
1523
|
flavor_id=self.flavor.id,
|
|
@@ -1573,14 +1564,14 @@ class TestServerCreate(TestServer):
|
|
|
1573
1564
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
1574
1565
|
columns, data = self.cmd.take_action(parsed_args)
|
|
1575
1566
|
|
|
1576
|
-
self.
|
|
1567
|
+
self.compute_client.find_flavor.assert_has_calls(
|
|
1577
1568
|
[mock.call(self.flavor.id, ignore_missing=False)] * 2
|
|
1578
1569
|
)
|
|
1579
1570
|
self.network_client.find_security_group.assert_not_called()
|
|
1580
1571
|
self.image_client.find_image.assert_called_once_with(
|
|
1581
1572
|
self.image.id, ignore_missing=False
|
|
1582
1573
|
)
|
|
1583
|
-
self.
|
|
1574
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
1584
1575
|
name=self.server.name,
|
|
1585
1576
|
image_id=self.image.id,
|
|
1586
1577
|
flavor_id=self.flavor.id,
|
|
@@ -1702,7 +1693,7 @@ class TestServerCreate(TestServer):
|
|
|
1702
1693
|
mock.call(port_port2.id, ignore_missing=False),
|
|
1703
1694
|
]
|
|
1704
1695
|
)
|
|
1705
|
-
self.
|
|
1696
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
1706
1697
|
name=self.server.name,
|
|
1707
1698
|
image_id=self.image.id,
|
|
1708
1699
|
flavor_id=self.flavor.id,
|
|
@@ -1714,7 +1705,7 @@ class TestServerCreate(TestServer):
|
|
|
1714
1705
|
},
|
|
1715
1706
|
{
|
|
1716
1707
|
'uuid': network_net2.id,
|
|
1717
|
-
'
|
|
1708
|
+
'fixed_ip': '10.0.0.2',
|
|
1718
1709
|
},
|
|
1719
1710
|
{
|
|
1720
1711
|
'port': port_port1.id,
|
|
@@ -1778,7 +1769,7 @@ class TestServerCreate(TestServer):
|
|
|
1778
1769
|
self.network_client.find_network.assert_called_once_with(
|
|
1779
1770
|
network.id, ignore_missing=False
|
|
1780
1771
|
)
|
|
1781
|
-
self.
|
|
1772
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
1782
1773
|
name=self.server.name,
|
|
1783
1774
|
image_id=self.image.id,
|
|
1784
1775
|
flavor_id=self.flavor.id,
|
|
@@ -1839,7 +1830,7 @@ class TestServerCreate(TestServer):
|
|
|
1839
1830
|
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
1840
1831
|
)
|
|
1841
1832
|
self.network_client.find_network.assert_not_called()
|
|
1842
|
-
self.
|
|
1833
|
+
self.compute_client.create_server.assert_not_called()
|
|
1843
1834
|
|
|
1844
1835
|
def _test_server_create_with_auto_network(self, arglist):
|
|
1845
1836
|
# requires API microversion 2.37 or later
|
|
@@ -1857,7 +1848,7 @@ class TestServerCreate(TestServer):
|
|
|
1857
1848
|
columns, data = self.cmd.take_action(parsed_args)
|
|
1858
1849
|
|
|
1859
1850
|
self.network_client.find_network.assert_not_called()
|
|
1860
|
-
self.
|
|
1851
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
1861
1852
|
name=self.server.name,
|
|
1862
1853
|
image_id=self.image.id,
|
|
1863
1854
|
flavor_id=self.flavor.id,
|
|
@@ -1937,7 +1928,7 @@ class TestServerCreate(TestServer):
|
|
|
1937
1928
|
'allocation',
|
|
1938
1929
|
str(exc),
|
|
1939
1930
|
)
|
|
1940
|
-
self.
|
|
1931
|
+
self.compute_client.create_server.assert_not_called()
|
|
1941
1932
|
|
|
1942
1933
|
def test_server_create_with_auto_network_default(self):
|
|
1943
1934
|
"""Tests creating a server without specifying --nic using 2.37."""
|
|
@@ -1963,7 +1954,7 @@ class TestServerCreate(TestServer):
|
|
|
1963
1954
|
columns, data = self.cmd.take_action(parsed_args)
|
|
1964
1955
|
|
|
1965
1956
|
self.network_client.find_network.assert_not_called()
|
|
1966
|
-
self.
|
|
1957
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
1967
1958
|
name=self.server.name,
|
|
1968
1959
|
image_id=self.image.id,
|
|
1969
1960
|
flavor_id=self.flavor.id,
|
|
@@ -2000,7 +1991,7 @@ class TestServerCreate(TestServer):
|
|
|
2000
1991
|
columns, data = self.cmd.take_action(parsed_args)
|
|
2001
1992
|
|
|
2002
1993
|
self.network_client.find_network.assert_not_called()
|
|
2003
|
-
self.
|
|
1994
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
2004
1995
|
name=self.server.name,
|
|
2005
1996
|
image_id=self.image.id,
|
|
2006
1997
|
flavor_id=self.flavor.id,
|
|
@@ -2080,7 +2071,7 @@ class TestServerCreate(TestServer):
|
|
|
2080
2071
|
'allocation',
|
|
2081
2072
|
str(exc),
|
|
2082
2073
|
)
|
|
2083
|
-
self.
|
|
2074
|
+
self.compute_client.create_server.assert_not_called()
|
|
2084
2075
|
|
|
2085
2076
|
def test_server_create_with_conflicting_network_options(self):
|
|
2086
2077
|
arglist = [
|
|
@@ -2125,7 +2116,7 @@ class TestServerCreate(TestServer):
|
|
|
2125
2116
|
'other --nic, --network or --port value.',
|
|
2126
2117
|
str(exc),
|
|
2127
2118
|
)
|
|
2128
|
-
self.
|
|
2119
|
+
self.compute_client.create_server.assert_not_called()
|
|
2129
2120
|
|
|
2130
2121
|
def test_server_create_with_invalid_network_options(self):
|
|
2131
2122
|
arglist = [
|
|
@@ -2148,7 +2139,7 @@ class TestServerCreate(TestServer):
|
|
|
2148
2139
|
'Invalid argument abcdefgh; argument must be of form ',
|
|
2149
2140
|
str(exc),
|
|
2150
2141
|
)
|
|
2151
|
-
self.
|
|
2142
|
+
self.compute_client.create_server.assert_not_called()
|
|
2152
2143
|
|
|
2153
2144
|
def test_server_create_with_invalid_network_key(self):
|
|
2154
2145
|
arglist = [
|
|
@@ -2171,7 +2162,7 @@ class TestServerCreate(TestServer):
|
|
|
2171
2162
|
'Invalid argument abcdefgh=12324; argument must be of form ',
|
|
2172
2163
|
str(exc),
|
|
2173
2164
|
)
|
|
2174
|
-
self.
|
|
2165
|
+
self.compute_client.create_server.assert_not_called()
|
|
2175
2166
|
|
|
2176
2167
|
def test_server_create_with_empty_network_key_value(self):
|
|
2177
2168
|
arglist = [
|
|
@@ -2194,7 +2185,7 @@ class TestServerCreate(TestServer):
|
|
|
2194
2185
|
'Invalid argument net-id=; argument must be of form ',
|
|
2195
2186
|
str(exc),
|
|
2196
2187
|
)
|
|
2197
|
-
self.
|
|
2188
|
+
self.compute_client.create_server.assert_not_called()
|
|
2198
2189
|
|
|
2199
2190
|
def test_server_create_with_only_network_key(self):
|
|
2200
2191
|
arglist = [
|
|
@@ -2217,7 +2208,7 @@ class TestServerCreate(TestServer):
|
|
|
2217
2208
|
'Invalid argument net-id; argument must be of form ',
|
|
2218
2209
|
str(exc),
|
|
2219
2210
|
)
|
|
2220
|
-
self.
|
|
2211
|
+
self.compute_client.create_server.assert_not_called()
|
|
2221
2212
|
|
|
2222
2213
|
def test_server_create_with_network_in_nova_network(self):
|
|
2223
2214
|
net_name = 'nova-net-net'
|
|
@@ -2263,8 +2254,8 @@ class TestServerCreate(TestServer):
|
|
|
2263
2254
|
) as mock_find:
|
|
2264
2255
|
columns, data = self.cmd.take_action(parsed_args)
|
|
2265
2256
|
|
|
2266
|
-
mock_find.assert_called_once_with(self.
|
|
2267
|
-
self.
|
|
2257
|
+
mock_find.assert_called_once_with(self.compute_client, net_name)
|
|
2258
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
2268
2259
|
name=self.server.name,
|
|
2269
2260
|
image_id=self.image.id,
|
|
2270
2261
|
flavor_id=self.flavor.id,
|
|
@@ -2307,7 +2298,7 @@ class TestServerCreate(TestServer):
|
|
|
2307
2298
|
[],
|
|
2308
2299
|
)
|
|
2309
2300
|
self.assertIn("either 'network' or 'port'", str(exc))
|
|
2310
|
-
self.
|
|
2301
|
+
self.compute_client.create_server.assert_not_called()
|
|
2311
2302
|
|
|
2312
2303
|
def test_server_create_with_conflicting_fixed_ip_filters(self):
|
|
2313
2304
|
arglist = [
|
|
@@ -2327,7 +2318,7 @@ class TestServerCreate(TestServer):
|
|
|
2327
2318
|
[],
|
|
2328
2319
|
)
|
|
2329
2320
|
self.assertIn("either 'v4-fixed-ip' or 'v6-fixed-ip'", str(exc))
|
|
2330
|
-
self.
|
|
2321
|
+
self.compute_client.create_server.assert_not_called()
|
|
2331
2322
|
|
|
2332
2323
|
@mock.patch.object(common_utils, 'wait_for_status', return_value=True)
|
|
2333
2324
|
def test_server_create_with_wait_ok(self, mock_wait_for_status):
|
|
@@ -2350,7 +2341,7 @@ class TestServerCreate(TestServer):
|
|
|
2350
2341
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
2351
2342
|
columns, data = self.cmd.take_action(parsed_args)
|
|
2352
2343
|
|
|
2353
|
-
self.
|
|
2344
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
2354
2345
|
name=self.server.name,
|
|
2355
2346
|
image_id=self.image.id,
|
|
2356
2347
|
flavor_id=self.flavor.id,
|
|
@@ -2368,7 +2359,7 @@ class TestServerCreate(TestServer):
|
|
|
2368
2359
|
],
|
|
2369
2360
|
)
|
|
2370
2361
|
mock_wait_for_status.assert_called_once_with(
|
|
2371
|
-
self.
|
|
2362
|
+
self.compute_client.get_server,
|
|
2372
2363
|
self.server.id,
|
|
2373
2364
|
callback=mock.ANY,
|
|
2374
2365
|
)
|
|
@@ -2399,7 +2390,7 @@ class TestServerCreate(TestServer):
|
|
|
2399
2390
|
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
2400
2391
|
)
|
|
2401
2392
|
|
|
2402
|
-
self.
|
|
2393
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
2403
2394
|
name=self.server.name,
|
|
2404
2395
|
image_id=self.image.id,
|
|
2405
2396
|
flavor_id=self.flavor.id,
|
|
@@ -2417,7 +2408,7 @@ class TestServerCreate(TestServer):
|
|
|
2417
2408
|
],
|
|
2418
2409
|
)
|
|
2419
2410
|
mock_wait_for_status.assert_called_once_with(
|
|
2420
|
-
self.
|
|
2411
|
+
self.compute_client.get_server,
|
|
2421
2412
|
self.server.id,
|
|
2422
2413
|
callback=mock.ANY,
|
|
2423
2414
|
)
|
|
@@ -2449,7 +2440,7 @@ class TestServerCreate(TestServer):
|
|
|
2449
2440
|
columns, data = self.cmd.take_action(parsed_args)
|
|
2450
2441
|
|
|
2451
2442
|
mock_file.assert_called_with('userdata.sh', 'rb')
|
|
2452
|
-
self.
|
|
2443
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
2453
2444
|
name=self.server.name,
|
|
2454
2445
|
image_id=self.image.id,
|
|
2455
2446
|
flavor_id=self.flavor.id,
|
|
@@ -2493,7 +2484,7 @@ class TestServerCreate(TestServer):
|
|
|
2493
2484
|
self.volume_client.volumes.get.assert_called_once_with(
|
|
2494
2485
|
self.volume.name
|
|
2495
2486
|
)
|
|
2496
|
-
self.
|
|
2487
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
2497
2488
|
name=self.server.name,
|
|
2498
2489
|
image_id='',
|
|
2499
2490
|
flavor_id=self.flavor.id,
|
|
@@ -2535,7 +2526,7 @@ class TestServerCreate(TestServer):
|
|
|
2535
2526
|
self.volume_client.volume_snapshots.get.assert_called_once_with(
|
|
2536
2527
|
self.snapshot.name
|
|
2537
2528
|
)
|
|
2538
|
-
self.
|
|
2529
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
2539
2530
|
name=self.server.name,
|
|
2540
2531
|
image_id='',
|
|
2541
2532
|
flavor_id=self.flavor.id,
|
|
@@ -2586,7 +2577,7 @@ class TestServerCreate(TestServer):
|
|
|
2586
2577
|
|
|
2587
2578
|
# we don't do any validation of IDs when using the legacy option
|
|
2588
2579
|
self.volume_client.volumes.get.assert_not_called()
|
|
2589
|
-
self.
|
|
2580
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
2590
2581
|
name=self.server.name,
|
|
2591
2582
|
image_id='',
|
|
2592
2583
|
flavor_id=self.flavor.id,
|
|
@@ -2664,7 +2655,7 @@ class TestServerCreate(TestServer):
|
|
|
2664
2655
|
|
|
2665
2656
|
# we don't do any validation of IDs when using the legacy option
|
|
2666
2657
|
self.volume_client.volumes.get.assert_not_called()
|
|
2667
|
-
self.
|
|
2658
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
2668
2659
|
name=self.server.name,
|
|
2669
2660
|
image_id=self.image.id,
|
|
2670
2661
|
flavor_id=self.flavor.id,
|
|
@@ -2746,7 +2737,7 @@ class TestServerCreate(TestServer):
|
|
|
2746
2737
|
|
|
2747
2738
|
# we don't do any validation of IDs when using the legacy option
|
|
2748
2739
|
self.volume_client.volumes.get.assert_not_called()
|
|
2749
|
-
self.
|
|
2740
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
2750
2741
|
name=self.server.name,
|
|
2751
2742
|
image_id=self.image.id,
|
|
2752
2743
|
flavor_id=self.flavor.id,
|
|
@@ -2799,7 +2790,7 @@ class TestServerCreate(TestServer):
|
|
|
2799
2790
|
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
2800
2791
|
)
|
|
2801
2792
|
self.assertIn('The boot_index key of --block-device ', str(ex))
|
|
2802
|
-
self.
|
|
2793
|
+
self.compute_client.create_server.assert_not_called()
|
|
2803
2794
|
|
|
2804
2795
|
def test_server_create_with_block_device_invalid_source_type(self):
|
|
2805
2796
|
block_device = f'uuid={self.volume.name},source_type=foo'
|
|
@@ -2817,7 +2808,7 @@ class TestServerCreate(TestServer):
|
|
|
2817
2808
|
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
2818
2809
|
)
|
|
2819
2810
|
self.assertIn('The source_type key of --block-device ', str(ex))
|
|
2820
|
-
self.
|
|
2811
|
+
self.compute_client.create_server.assert_not_called()
|
|
2821
2812
|
|
|
2822
2813
|
def test_server_create_with_block_device_invalid_destination_type(self):
|
|
2823
2814
|
block_device = f'uuid={self.volume.name},destination_type=foo'
|
|
@@ -2835,7 +2826,7 @@ class TestServerCreate(TestServer):
|
|
|
2835
2826
|
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
2836
2827
|
)
|
|
2837
2828
|
self.assertIn('The destination_type key of --block-device ', str(ex))
|
|
2838
|
-
self.
|
|
2829
|
+
self.compute_client.create_server.assert_not_called()
|
|
2839
2830
|
|
|
2840
2831
|
def test_server_create_with_block_device_invalid_shutdown(self):
|
|
2841
2832
|
block_device = f'uuid={self.volume.name},delete_on_termination=foo'
|
|
@@ -2855,7 +2846,7 @@ class TestServerCreate(TestServer):
|
|
|
2855
2846
|
self.assertIn(
|
|
2856
2847
|
'The delete_on_termination key of --block-device ', str(ex)
|
|
2857
2848
|
)
|
|
2858
|
-
self.
|
|
2849
|
+
self.compute_client.create_server.assert_not_called()
|
|
2859
2850
|
|
|
2860
2851
|
def test_server_create_with_block_device_tag_pre_v242(self):
|
|
2861
2852
|
self.set_compute_api_version('2.41')
|
|
@@ -2877,7 +2868,7 @@ class TestServerCreate(TestServer):
|
|
|
2877
2868
|
self.assertIn(
|
|
2878
2869
|
'--os-compute-api-version 2.42 or greater is required', str(ex)
|
|
2879
2870
|
)
|
|
2880
|
-
self.
|
|
2871
|
+
self.compute_client.create_server.assert_not_called()
|
|
2881
2872
|
|
|
2882
2873
|
def test_server_create_with_block_device_volume_type_pre_v267(self):
|
|
2883
2874
|
self.set_compute_api_version('2.66')
|
|
@@ -2899,7 +2890,7 @@ class TestServerCreate(TestServer):
|
|
|
2899
2890
|
self.assertIn(
|
|
2900
2891
|
'--os-compute-api-version 2.67 or greater is required', str(ex)
|
|
2901
2892
|
)
|
|
2902
|
-
self.
|
|
2893
|
+
self.compute_client.create_server.assert_not_called()
|
|
2903
2894
|
|
|
2904
2895
|
def test_server_create_with_block_device_mapping(self):
|
|
2905
2896
|
self.volume_client.volumes.get.return_value = self.volume
|
|
@@ -2938,7 +2929,7 @@ class TestServerCreate(TestServer):
|
|
|
2938
2929
|
self.volume_client.volumes.get.assert_called_once_with(
|
|
2939
2930
|
self.volume.name
|
|
2940
2931
|
)
|
|
2941
|
-
self.
|
|
2932
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
2942
2933
|
name=self.server.name,
|
|
2943
2934
|
image_id=self.image.id,
|
|
2944
2935
|
flavor_id=self.flavor.id,
|
|
@@ -3002,7 +2993,7 @@ class TestServerCreate(TestServer):
|
|
|
3002
2993
|
self.volume_client.volumes.get.assert_called_once_with(
|
|
3003
2994
|
self.volume.name
|
|
3004
2995
|
)
|
|
3005
|
-
self.
|
|
2996
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
3006
2997
|
name=self.server.name,
|
|
3007
2998
|
image_id=self.image.id,
|
|
3008
2999
|
flavor_id=self.flavor.id,
|
|
@@ -3065,7 +3056,7 @@ class TestServerCreate(TestServer):
|
|
|
3065
3056
|
self.volume_client.volumes.get.assert_called_once_with(
|
|
3066
3057
|
self.volume.name
|
|
3067
3058
|
)
|
|
3068
|
-
self.
|
|
3059
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
3069
3060
|
name=self.server.name,
|
|
3070
3061
|
image_id=self.image.id,
|
|
3071
3062
|
flavor_id=self.flavor.id,
|
|
@@ -3130,7 +3121,7 @@ class TestServerCreate(TestServer):
|
|
|
3130
3121
|
self.volume_client.volumes.get.assert_called_once_with(
|
|
3131
3122
|
self.volume.name
|
|
3132
3123
|
)
|
|
3133
|
-
self.
|
|
3124
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
3134
3125
|
name=self.server.name,
|
|
3135
3126
|
image_id=self.image.id,
|
|
3136
3127
|
flavor_id=self.flavor.id,
|
|
@@ -3198,7 +3189,7 @@ class TestServerCreate(TestServer):
|
|
|
3198
3189
|
self.volume_client.volume_snapshots.get.assert_called_once_with(
|
|
3199
3190
|
self.snapshot.name
|
|
3200
3191
|
)
|
|
3201
|
-
self.
|
|
3192
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
3202
3193
|
name=self.server.name,
|
|
3203
3194
|
image_id=self.image.id,
|
|
3204
3195
|
flavor_id=self.flavor.id,
|
|
@@ -3273,7 +3264,7 @@ class TestServerCreate(TestServer):
|
|
|
3273
3264
|
self.volume_client.volumes.get.assert_has_calls(
|
|
3274
3265
|
[mock.call(self.volume.name)] * 2
|
|
3275
3266
|
)
|
|
3276
|
-
self.
|
|
3267
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
3277
3268
|
name=self.server.name,
|
|
3278
3269
|
image_id=self.image.id,
|
|
3279
3270
|
flavor_id=self.flavor.id,
|
|
@@ -3329,7 +3320,7 @@ class TestServerCreate(TestServer):
|
|
|
3329
3320
|
self.assertIn(
|
|
3330
3321
|
'argument --block-device-mapping: Invalid argument ', str(exc)
|
|
3331
3322
|
)
|
|
3332
|
-
self.
|
|
3323
|
+
self.compute_client.create_server.assert_not_called()
|
|
3333
3324
|
|
|
3334
3325
|
# block device mapping don't contain device name "=uuid:::true"
|
|
3335
3326
|
arglist = [
|
|
@@ -3351,7 +3342,7 @@ class TestServerCreate(TestServer):
|
|
|
3351
3342
|
self.assertIn(
|
|
3352
3343
|
'argument --block-device-mapping: Invalid argument ', str(exc)
|
|
3353
3344
|
)
|
|
3354
|
-
self.
|
|
3345
|
+
self.compute_client.create_server.assert_not_called()
|
|
3355
3346
|
|
|
3356
3347
|
def test_server_create_with_block_device_mapping_no_uuid(self):
|
|
3357
3348
|
arglist = [
|
|
@@ -3373,7 +3364,7 @@ class TestServerCreate(TestServer):
|
|
|
3373
3364
|
self.assertIn(
|
|
3374
3365
|
'argument --block-device-mapping: Invalid argument ', str(exc)
|
|
3375
3366
|
)
|
|
3376
|
-
self.
|
|
3367
|
+
self.compute_client.create_server.assert_not_called()
|
|
3377
3368
|
|
|
3378
3369
|
def test_server_create_volume_boot_from_volume_conflict(self):
|
|
3379
3370
|
# Tests that specifying --volume and --boot-from-volume results in
|
|
@@ -3406,7 +3397,7 @@ class TestServerCreate(TestServer):
|
|
|
3406
3397
|
self.assertIn(
|
|
3407
3398
|
'--volume is not allowed with --boot-from-volume', str(ex)
|
|
3408
3399
|
)
|
|
3409
|
-
self.
|
|
3400
|
+
self.compute_client.create_server.assert_not_called()
|
|
3410
3401
|
|
|
3411
3402
|
def test_server_create_boot_from_volume_no_image(self):
|
|
3412
3403
|
# Test --boot-from-volume option without --image or
|
|
@@ -3434,7 +3425,7 @@ class TestServerCreate(TestServer):
|
|
|
3434
3425
|
'to support --boot-from-volume option',
|
|
3435
3426
|
str(ex),
|
|
3436
3427
|
)
|
|
3437
|
-
self.
|
|
3428
|
+
self.compute_client.create_server.assert_not_called()
|
|
3438
3429
|
|
|
3439
3430
|
def test_server_create_image_property(self):
|
|
3440
3431
|
image = image_fakes.create_one_image({'hypervisor_type': 'qemu'})
|
|
@@ -3458,7 +3449,7 @@ class TestServerCreate(TestServer):
|
|
|
3458
3449
|
columns, data = self.cmd.take_action(parsed_args)
|
|
3459
3450
|
|
|
3460
3451
|
self.image_client.images.assert_called_once_with()
|
|
3461
|
-
self.
|
|
3452
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
3462
3453
|
name=self.server.name,
|
|
3463
3454
|
image_id=image.id,
|
|
3464
3455
|
flavor_id=self.flavor.id,
|
|
@@ -3508,7 +3499,7 @@ class TestServerCreate(TestServer):
|
|
|
3508
3499
|
columns, data = self.cmd.take_action(parsed_args)
|
|
3509
3500
|
|
|
3510
3501
|
self.image_client.images.assert_called_once_with()
|
|
3511
|
-
self.
|
|
3502
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
3512
3503
|
name=self.server.name,
|
|
3513
3504
|
image_id=image.id,
|
|
3514
3505
|
flavor_id=self.flavor.id,
|
|
@@ -3563,7 +3554,7 @@ class TestServerCreate(TestServer):
|
|
|
3563
3554
|
'No images match the property expected by --image-property',
|
|
3564
3555
|
str(exc),
|
|
3565
3556
|
)
|
|
3566
|
-
self.
|
|
3557
|
+
self.compute_client.create_server.assert_not_called()
|
|
3567
3558
|
|
|
3568
3559
|
def test_server_create_image_property_with_image_list(self):
|
|
3569
3560
|
target_image = image_fakes.create_one_image(
|
|
@@ -3596,7 +3587,7 @@ class TestServerCreate(TestServer):
|
|
|
3596
3587
|
columns, data = self.cmd.take_action(parsed_args)
|
|
3597
3588
|
|
|
3598
3589
|
self.image_client.images.assert_called_once_with()
|
|
3599
|
-
self.
|
|
3590
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
3600
3591
|
name=self.server.name,
|
|
3601
3592
|
image_id=target_image.id,
|
|
3602
3593
|
flavor_id=self.flavor.id,
|
|
@@ -3652,7 +3643,7 @@ class TestServerCreate(TestServer):
|
|
|
3652
3643
|
'(--volume, --snapshot, --block-device) is required',
|
|
3653
3644
|
str(exc),
|
|
3654
3645
|
)
|
|
3655
|
-
self.
|
|
3646
|
+
self.compute_client.create_server.assert_not_called()
|
|
3656
3647
|
|
|
3657
3648
|
def test_server_create_with_swap(self):
|
|
3658
3649
|
arglist = [
|
|
@@ -3674,7 +3665,7 @@ class TestServerCreate(TestServer):
|
|
|
3674
3665
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
3675
3666
|
columns, data = self.cmd.take_action(parsed_args)
|
|
3676
3667
|
|
|
3677
|
-
self.
|
|
3668
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
3678
3669
|
name=self.server.name,
|
|
3679
3670
|
image_id=self.image.id,
|
|
3680
3671
|
flavor_id=self.flavor.id,
|
|
@@ -3723,7 +3714,7 @@ class TestServerCreate(TestServer):
|
|
|
3723
3714
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
3724
3715
|
columns, data = self.cmd.take_action(parsed_args)
|
|
3725
3716
|
|
|
3726
|
-
self.
|
|
3717
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
3727
3718
|
name=self.server.name,
|
|
3728
3719
|
image_id=self.image.id,
|
|
3729
3720
|
flavor_id=self.flavor.id,
|
|
@@ -3770,7 +3761,7 @@ class TestServerCreate(TestServer):
|
|
|
3770
3761
|
[],
|
|
3771
3762
|
)
|
|
3772
3763
|
self.assertIn('Argument parse failed', str(exc))
|
|
3773
|
-
self.
|
|
3764
|
+
self.compute_client.create_server.assert_not_called()
|
|
3774
3765
|
|
|
3775
3766
|
def test_server_create_with_ephemeral_invalid_key(self):
|
|
3776
3767
|
arglist = [
|
|
@@ -3790,7 +3781,7 @@ class TestServerCreate(TestServer):
|
|
|
3790
3781
|
[],
|
|
3791
3782
|
)
|
|
3792
3783
|
self.assertIn('Argument parse failed', str(exc))
|
|
3793
|
-
self.
|
|
3784
|
+
self.compute_client.create_server.assert_not_called()
|
|
3794
3785
|
|
|
3795
3786
|
def test_server_create_invalid_hint(self):
|
|
3796
3787
|
# Not a key-value pair
|
|
@@ -3811,7 +3802,7 @@ class TestServerCreate(TestServer):
|
|
|
3811
3802
|
[],
|
|
3812
3803
|
)
|
|
3813
3804
|
self.assertIn('Argument parse failed', str(exc))
|
|
3814
|
-
self.
|
|
3805
|
+
self.compute_client.create_server.assert_not_called()
|
|
3815
3806
|
|
|
3816
3807
|
# Empty key
|
|
3817
3808
|
arglist = [
|
|
@@ -3831,7 +3822,7 @@ class TestServerCreate(TestServer):
|
|
|
3831
3822
|
[],
|
|
3832
3823
|
)
|
|
3833
3824
|
self.assertIn('Argument parse failed', str(exc))
|
|
3834
|
-
self.
|
|
3825
|
+
self.compute_client.create_server.assert_not_called()
|
|
3835
3826
|
|
|
3836
3827
|
def test_server_create_with_description(self):
|
|
3837
3828
|
# Description is supported for nova api version 2.19 or above
|
|
@@ -3857,7 +3848,7 @@ class TestServerCreate(TestServer):
|
|
|
3857
3848
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
3858
3849
|
columns, data = self.cmd.take_action(parsed_args)
|
|
3859
3850
|
|
|
3860
|
-
self.
|
|
3851
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
3861
3852
|
name=self.server.name,
|
|
3862
3853
|
image_id=self.image.id,
|
|
3863
3854
|
flavor_id=self.flavor.id,
|
|
@@ -3904,7 +3895,7 @@ class TestServerCreate(TestServer):
|
|
|
3904
3895
|
self.assertRaises(
|
|
3905
3896
|
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
3906
3897
|
)
|
|
3907
|
-
self.
|
|
3898
|
+
self.compute_client.create_server.assert_not_called()
|
|
3908
3899
|
|
|
3909
3900
|
def test_server_create_with_tag(self):
|
|
3910
3901
|
self.set_compute_api_version('2.52')
|
|
@@ -3931,7 +3922,7 @@ class TestServerCreate(TestServer):
|
|
|
3931
3922
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
3932
3923
|
columns, data = self.cmd.take_action(parsed_args)
|
|
3933
3924
|
|
|
3934
|
-
self.
|
|
3925
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
3935
3926
|
name=self.server.name,
|
|
3936
3927
|
image_id=self.image.id,
|
|
3937
3928
|
flavor_id=self.flavor.id,
|
|
@@ -3982,7 +3973,7 @@ class TestServerCreate(TestServer):
|
|
|
3982
3973
|
self.assertIn(
|
|
3983
3974
|
'--os-compute-api-version 2.52 or greater is required', str(exc)
|
|
3984
3975
|
)
|
|
3985
|
-
self.
|
|
3976
|
+
self.compute_client.create_server.assert_not_called()
|
|
3986
3977
|
|
|
3987
3978
|
def test_server_create_with_host(self):
|
|
3988
3979
|
# Explicit host is supported for nova api version 2.74 or above
|
|
@@ -4008,7 +3999,7 @@ class TestServerCreate(TestServer):
|
|
|
4008
3999
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
4009
4000
|
columns, data = self.cmd.take_action(parsed_args)
|
|
4010
4001
|
|
|
4011
|
-
self.
|
|
4002
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
4012
4003
|
name=self.server.name,
|
|
4013
4004
|
image_id=self.image.id,
|
|
4014
4005
|
flavor_id=self.flavor.id,
|
|
@@ -4057,7 +4048,7 @@ class TestServerCreate(TestServer):
|
|
|
4057
4048
|
self.assertIn(
|
|
4058
4049
|
'--os-compute-api-version 2.74 or greater is required', str(exc)
|
|
4059
4050
|
)
|
|
4060
|
-
self.
|
|
4051
|
+
self.compute_client.create_server.assert_not_called()
|
|
4061
4052
|
|
|
4062
4053
|
def test_server_create_with_hypervisor_hostname(self):
|
|
4063
4054
|
# Explicit hypervisor_hostname is supported for nova api version
|
|
@@ -4084,7 +4075,7 @@ class TestServerCreate(TestServer):
|
|
|
4084
4075
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
4085
4076
|
columns, data = self.cmd.take_action(parsed_args)
|
|
4086
4077
|
|
|
4087
|
-
self.
|
|
4078
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
4088
4079
|
name=self.server.name,
|
|
4089
4080
|
image_id=self.image.id,
|
|
4090
4081
|
flavor_id=self.flavor.id,
|
|
@@ -4133,7 +4124,7 @@ class TestServerCreate(TestServer):
|
|
|
4133
4124
|
self.assertIn(
|
|
4134
4125
|
'--os-compute-api-version 2.74 or greater is required', str(exc)
|
|
4135
4126
|
)
|
|
4136
|
-
self.
|
|
4127
|
+
self.compute_client.create_server.assert_not_called()
|
|
4137
4128
|
|
|
4138
4129
|
def test_server_create_with_hostname(self):
|
|
4139
4130
|
self.set_compute_api_version('2.90')
|
|
@@ -4158,7 +4149,7 @@ class TestServerCreate(TestServer):
|
|
|
4158
4149
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
4159
4150
|
columns, data = self.cmd.take_action(parsed_args)
|
|
4160
4151
|
|
|
4161
|
-
self.
|
|
4152
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
4162
4153
|
name=self.server.name,
|
|
4163
4154
|
image_id=self.image.id,
|
|
4164
4155
|
flavor_id=self.flavor.id,
|
|
@@ -4206,7 +4197,7 @@ class TestServerCreate(TestServer):
|
|
|
4206
4197
|
self.assertIn(
|
|
4207
4198
|
'--os-compute-api-version 2.90 or greater is required', str(exc)
|
|
4208
4199
|
)
|
|
4209
|
-
self.
|
|
4200
|
+
self.compute_client.create_server.assert_not_called()
|
|
4210
4201
|
|
|
4211
4202
|
def test_server_create_with_trusted_image_cert(self):
|
|
4212
4203
|
self.set_compute_api_version('2.63')
|
|
@@ -4233,7 +4224,7 @@ class TestServerCreate(TestServer):
|
|
|
4233
4224
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
4234
4225
|
columns, data = self.cmd.take_action(parsed_args)
|
|
4235
4226
|
|
|
4236
|
-
self.
|
|
4227
|
+
self.compute_client.create_server.assert_called_once_with(
|
|
4237
4228
|
name=self.server.name,
|
|
4238
4229
|
image_id=self.image.id,
|
|
4239
4230
|
flavor_id=self.flavor.id,
|
|
@@ -4283,7 +4274,7 @@ class TestServerCreate(TestServer):
|
|
|
4283
4274
|
self.assertIn(
|
|
4284
4275
|
'--os-compute-api-version 2.63 or greater is required', str(exc)
|
|
4285
4276
|
)
|
|
4286
|
-
self.
|
|
4277
|
+
self.compute_client.create_server.assert_not_called()
|
|
4287
4278
|
|
|
4288
4279
|
def test_server_create_with_trusted_image_cert_from_volume(self):
|
|
4289
4280
|
self.set_compute_api_version('2.63')
|
|
@@ -4316,7 +4307,7 @@ class TestServerCreate(TestServer):
|
|
|
4316
4307
|
'directly from images',
|
|
4317
4308
|
str(exc),
|
|
4318
4309
|
)
|
|
4319
|
-
self.
|
|
4310
|
+
self.compute_client.create_server.assert_not_called()
|
|
4320
4311
|
|
|
4321
4312
|
def test_server_create_with_trusted_image_cert_from_snapshot(self):
|
|
4322
4313
|
self.set_compute_api_version('2.63')
|
|
@@ -4349,7 +4340,7 @@ class TestServerCreate(TestServer):
|
|
|
4349
4340
|
'directly from images',
|
|
4350
4341
|
str(exc),
|
|
4351
4342
|
)
|
|
4352
|
-
self.
|
|
4343
|
+
self.compute_client.create_server.assert_not_called()
|
|
4353
4344
|
|
|
4354
4345
|
def test_server_create_with_trusted_image_cert_boot_from_volume(self):
|
|
4355
4346
|
self.set_compute_api_version('2.63')
|
|
@@ -4385,16 +4376,16 @@ class TestServerCreate(TestServer):
|
|
|
4385
4376
|
'directly from images',
|
|
4386
4377
|
str(exc),
|
|
4387
4378
|
)
|
|
4388
|
-
self.
|
|
4379
|
+
self.compute_client.create_server.assert_not_called()
|
|
4389
4380
|
|
|
4390
4381
|
|
|
4391
4382
|
class TestServerDelete(compute_fakes.TestComputev2):
|
|
4392
4383
|
def setUp(self):
|
|
4393
4384
|
super().setUp()
|
|
4394
4385
|
|
|
4395
|
-
self.server = compute_fakes.
|
|
4396
|
-
self.
|
|
4397
|
-
self.
|
|
4386
|
+
self.server = compute_fakes.create_one_server()
|
|
4387
|
+
self.compute_client.find_server.return_value = self.server
|
|
4388
|
+
self.compute_client.delete_server.return_value = None
|
|
4398
4389
|
|
|
4399
4390
|
# Get the command object to test
|
|
4400
4391
|
self.cmd = server.DeleteServer(self.app, None)
|
|
@@ -4410,10 +4401,10 @@ class TestServerDelete(compute_fakes.TestComputev2):
|
|
|
4410
4401
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
4411
4402
|
result = self.cmd.take_action(parsed_args)
|
|
4412
4403
|
|
|
4413
|
-
self.
|
|
4404
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
4414
4405
|
self.server.id, ignore_missing=False, all_projects=False
|
|
4415
4406
|
)
|
|
4416
|
-
self.
|
|
4407
|
+
self.compute_client.delete_server.assert_called_once_with(
|
|
4417
4408
|
self.server, force=False
|
|
4418
4409
|
)
|
|
4419
4410
|
self.assertIsNone(result)
|
|
@@ -4430,18 +4421,18 @@ class TestServerDelete(compute_fakes.TestComputev2):
|
|
|
4430
4421
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
4431
4422
|
result = self.cmd.take_action(parsed_args)
|
|
4432
4423
|
|
|
4433
|
-
self.
|
|
4424
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
4434
4425
|
self.server.id, ignore_missing=False, all_projects=False
|
|
4435
4426
|
)
|
|
4436
|
-
self.
|
|
4427
|
+
self.compute_client.delete_server.assert_called_once_with(
|
|
4437
4428
|
self.server, force=True
|
|
4438
4429
|
)
|
|
4439
4430
|
self.assertIsNone(result)
|
|
4440
4431
|
|
|
4441
4432
|
def test_server_delete_multi_servers(self):
|
|
4442
|
-
servers = compute_fakes.
|
|
4443
|
-
self.
|
|
4444
|
-
self.
|
|
4433
|
+
servers = compute_fakes.create_servers(count=3)
|
|
4434
|
+
self.compute_client.find_server.return_value = None
|
|
4435
|
+
self.compute_client.find_server.side_effect = servers
|
|
4445
4436
|
|
|
4446
4437
|
arglist = []
|
|
4447
4438
|
verifylist = []
|
|
@@ -4454,13 +4445,13 @@ class TestServerDelete(compute_fakes.TestComputev2):
|
|
|
4454
4445
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
4455
4446
|
result = self.cmd.take_action(parsed_args)
|
|
4456
4447
|
|
|
4457
|
-
self.
|
|
4448
|
+
self.compute_client.find_server.assert_has_calls(
|
|
4458
4449
|
[
|
|
4459
4450
|
mock.call(s.id, ignore_missing=False, all_projects=False)
|
|
4460
4451
|
for s in servers
|
|
4461
4452
|
]
|
|
4462
4453
|
)
|
|
4463
|
-
self.
|
|
4454
|
+
self.compute_client.delete_server.assert_has_calls(
|
|
4464
4455
|
[mock.call(s, force=False) for s in servers]
|
|
4465
4456
|
)
|
|
4466
4457
|
self.assertIsNone(result)
|
|
@@ -4478,10 +4469,10 @@ class TestServerDelete(compute_fakes.TestComputev2):
|
|
|
4478
4469
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
4479
4470
|
result = self.cmd.take_action(parsed_args)
|
|
4480
4471
|
|
|
4481
|
-
self.
|
|
4472
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
4482
4473
|
self.server.id, ignore_missing=False, all_projects=True
|
|
4483
4474
|
)
|
|
4484
|
-
self.
|
|
4475
|
+
self.compute_client.delete_server.assert_called_once_with(
|
|
4485
4476
|
self.server, force=False
|
|
4486
4477
|
)
|
|
4487
4478
|
self.assertIsNone(result)
|
|
@@ -4499,20 +4490,20 @@ class TestServerDelete(compute_fakes.TestComputev2):
|
|
|
4499
4490
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
4500
4491
|
result = self.cmd.take_action(parsed_args)
|
|
4501
4492
|
|
|
4502
|
-
self.
|
|
4493
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
4503
4494
|
self.server.id, ignore_missing=False, all_projects=False
|
|
4504
4495
|
)
|
|
4505
|
-
self.
|
|
4496
|
+
self.compute_client.delete_server.assert_called_once_with(
|
|
4506
4497
|
self.server, force=False
|
|
4507
4498
|
)
|
|
4508
|
-
self.
|
|
4499
|
+
self.compute_client.wait_for_delete.assert_called_once_with(
|
|
4509
4500
|
self.server,
|
|
4510
4501
|
callback=mock.ANY,
|
|
4511
4502
|
)
|
|
4512
4503
|
self.assertIsNone(result)
|
|
4513
4504
|
|
|
4514
4505
|
def test_server_delete_wait_fails(self):
|
|
4515
|
-
self.
|
|
4506
|
+
self.compute_client.wait_for_delete.side_effect = (
|
|
4516
4507
|
sdk_exceptions.ResourceTimeout()
|
|
4517
4508
|
)
|
|
4518
4509
|
|
|
@@ -4530,13 +4521,13 @@ class TestServerDelete(compute_fakes.TestComputev2):
|
|
|
4530
4521
|
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
4531
4522
|
)
|
|
4532
4523
|
|
|
4533
|
-
self.
|
|
4524
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
4534
4525
|
self.server.id, ignore_missing=False, all_projects=False
|
|
4535
4526
|
)
|
|
4536
|
-
self.
|
|
4527
|
+
self.compute_client.delete_server.assert_called_once_with(
|
|
4537
4528
|
self.server, force=False
|
|
4538
4529
|
)
|
|
4539
|
-
self.
|
|
4530
|
+
self.compute_client.wait_for_delete.assert_called_once_with(
|
|
4540
4531
|
self.server,
|
|
4541
4532
|
callback=mock.ANY,
|
|
4542
4533
|
)
|
|
@@ -4567,9 +4558,7 @@ class TestServerDumpCreate(TestServer):
|
|
|
4567
4558
|
|
|
4568
4559
|
self.assertIsNone(result)
|
|
4569
4560
|
for s in servers:
|
|
4570
|
-
s.trigger_crash_dump.assert_called_once_with(
|
|
4571
|
-
self.compute_sdk_client
|
|
4572
|
-
)
|
|
4561
|
+
s.trigger_crash_dump.assert_called_once_with(self.compute_client)
|
|
4573
4562
|
|
|
4574
4563
|
def test_server_dump_one_server(self):
|
|
4575
4564
|
self.run_test_server_dump(1)
|
|
@@ -4603,6 +4592,16 @@ class _TestServerList(TestServer):
|
|
|
4603
4592
|
'Pinned Availability Zone',
|
|
4604
4593
|
'Host',
|
|
4605
4594
|
'Properties',
|
|
4595
|
+
'Scheduler Hints',
|
|
4596
|
+
)
|
|
4597
|
+
columns_all_projects = (
|
|
4598
|
+
'ID',
|
|
4599
|
+
'Name',
|
|
4600
|
+
'Status',
|
|
4601
|
+
'Networks',
|
|
4602
|
+
'Image',
|
|
4603
|
+
'Flavor',
|
|
4604
|
+
'Project ID',
|
|
4606
4605
|
)
|
|
4607
4606
|
|
|
4608
4607
|
def setUp(self):
|
|
@@ -4645,12 +4644,12 @@ class _TestServerList(TestServer):
|
|
|
4645
4644
|
self.image_client.get_image.return_value = self.image
|
|
4646
4645
|
|
|
4647
4646
|
self.flavor = compute_fakes.create_one_flavor()
|
|
4648
|
-
self.
|
|
4647
|
+
self.compute_client.find_flavor.return_value = self.flavor
|
|
4649
4648
|
self.attrs['flavor'] = {'original_name': self.flavor.name}
|
|
4650
4649
|
|
|
4651
4650
|
# The servers to be listed.
|
|
4652
4651
|
self.servers = self.setup_sdk_servers_mock(3)
|
|
4653
|
-
self.
|
|
4652
|
+
self.compute_client.servers.return_value = self.servers
|
|
4654
4653
|
|
|
4655
4654
|
# Get the command object to test
|
|
4656
4655
|
self.cmd = server.ListServer(self.app, None)
|
|
@@ -4669,7 +4668,7 @@ class TestServerList(_TestServerList):
|
|
|
4669
4668
|
]
|
|
4670
4669
|
|
|
4671
4670
|
Flavor = collections.namedtuple('Flavor', 'id name')
|
|
4672
|
-
self.
|
|
4671
|
+
self.compute_client.flavors.return_value = [
|
|
4673
4672
|
Flavor(id=s.flavor['id'], name=self.flavor.name)
|
|
4674
4673
|
for s in self.servers
|
|
4675
4674
|
]
|
|
@@ -4699,9 +4698,9 @@ class TestServerList(_TestServerList):
|
|
|
4699
4698
|
|
|
4700
4699
|
columns, data = self.cmd.take_action(parsed_args)
|
|
4701
4700
|
|
|
4702
|
-
self.
|
|
4701
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
4703
4702
|
self.image_client.images.assert_called()
|
|
4704
|
-
self.
|
|
4703
|
+
self.compute_client.flavors.assert_called()
|
|
4705
4704
|
self.assertEqual(self.columns, columns)
|
|
4706
4705
|
self.assertEqual(self.data, tuple(data))
|
|
4707
4706
|
|
|
@@ -4713,14 +4712,14 @@ class TestServerList(_TestServerList):
|
|
|
4713
4712
|
('deleted', False),
|
|
4714
4713
|
]
|
|
4715
4714
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
4716
|
-
self.
|
|
4715
|
+
self.compute_client.servers.return_value = []
|
|
4717
4716
|
self.data = ()
|
|
4718
4717
|
|
|
4719
4718
|
columns, data = self.cmd.take_action(parsed_args)
|
|
4720
4719
|
|
|
4721
|
-
self.
|
|
4720
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
4722
4721
|
self.image_client.images.assert_not_called()
|
|
4723
|
-
self.
|
|
4722
|
+
self.compute_client.flavors.assert_not_called()
|
|
4724
4723
|
self.assertEqual(self.columns, columns)
|
|
4725
4724
|
self.assertEqual(self.data, tuple(data))
|
|
4726
4725
|
|
|
@@ -4742,6 +4741,7 @@ class TestServerList(_TestServerList):
|
|
|
4742
4741
|
getattr(s, 'pinned_availability_zone', ''),
|
|
4743
4742
|
server.HostColumn(getattr(s, 'hypervisor_hostname')),
|
|
4744
4743
|
format_columns.DictColumn(s.metadata),
|
|
4744
|
+
format_columns.DictListColumn(None),
|
|
4745
4745
|
)
|
|
4746
4746
|
for s in self.servers
|
|
4747
4747
|
)
|
|
@@ -4755,15 +4755,45 @@ class TestServerList(_TestServerList):
|
|
|
4755
4755
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
4756
4756
|
|
|
4757
4757
|
columns, data = self.cmd.take_action(parsed_args)
|
|
4758
|
-
self.
|
|
4758
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
4759
4759
|
image_ids = {s.image['id'] for s in self.servers if s.image}
|
|
4760
4760
|
self.image_client.images.assert_called_once_with(
|
|
4761
4761
|
id=f'in:{",".join(image_ids)}',
|
|
4762
4762
|
)
|
|
4763
|
-
self.
|
|
4763
|
+
self.compute_client.flavors.assert_called_once_with(is_public=None)
|
|
4764
4764
|
self.assertEqual(self.columns_long, columns)
|
|
4765
4765
|
self.assertEqual(self.data, tuple(data))
|
|
4766
4766
|
|
|
4767
|
+
def test_server_list_all_projects_option(self):
|
|
4768
|
+
self.data = tuple(
|
|
4769
|
+
(
|
|
4770
|
+
s.id,
|
|
4771
|
+
s.name,
|
|
4772
|
+
s.status,
|
|
4773
|
+
server.AddressesColumn(s.addresses),
|
|
4774
|
+
# Image will be an empty string if boot-from-volume
|
|
4775
|
+
self.image.name if s.image else server.IMAGE_STRING_FOR_BFV,
|
|
4776
|
+
self.flavor.name,
|
|
4777
|
+
s.project_id,
|
|
4778
|
+
)
|
|
4779
|
+
for s in self.servers
|
|
4780
|
+
)
|
|
4781
|
+
arglist = [
|
|
4782
|
+
'--all-projects',
|
|
4783
|
+
]
|
|
4784
|
+
verifylist = [
|
|
4785
|
+
('all_projects', True),
|
|
4786
|
+
('long', False),
|
|
4787
|
+
('deleted', False),
|
|
4788
|
+
]
|
|
4789
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
4790
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
4791
|
+
|
|
4792
|
+
self.image_client.images.assert_called()
|
|
4793
|
+
self.compute_client.flavors.assert_called()
|
|
4794
|
+
self.assertEqual(self.columns_all_projects, columns)
|
|
4795
|
+
self.assertEqual(self.data, tuple(data))
|
|
4796
|
+
|
|
4767
4797
|
def test_server_list_column_option(self):
|
|
4768
4798
|
arglist = [
|
|
4769
4799
|
'-c',
|
|
@@ -4790,6 +4820,8 @@ class TestServerList(_TestServerList):
|
|
|
4790
4820
|
'Host',
|
|
4791
4821
|
'-c',
|
|
4792
4822
|
'Properties',
|
|
4823
|
+
'-c',
|
|
4824
|
+
'Scheduler Hints',
|
|
4793
4825
|
'--long',
|
|
4794
4826
|
]
|
|
4795
4827
|
verifylist = [
|
|
@@ -4799,7 +4831,7 @@ class TestServerList(_TestServerList):
|
|
|
4799
4831
|
|
|
4800
4832
|
columns, data = self.cmd.take_action(parsed_args)
|
|
4801
4833
|
|
|
4802
|
-
self.
|
|
4834
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
4803
4835
|
self.assertIn('Project ID', columns)
|
|
4804
4836
|
self.assertIn('User ID', columns)
|
|
4805
4837
|
self.assertIn('Created At', columns)
|
|
@@ -4812,6 +4844,7 @@ class TestServerList(_TestServerList):
|
|
|
4812
4844
|
self.assertIn('Pinned Availability Zone', columns)
|
|
4813
4845
|
self.assertIn('Host', columns)
|
|
4814
4846
|
self.assertIn('Properties', columns)
|
|
4847
|
+
self.assertIn('Scheduler Hints', columns)
|
|
4815
4848
|
self.assertCountEqual(columns, set(columns))
|
|
4816
4849
|
|
|
4817
4850
|
def test_server_list_no_name_lookup_option(self):
|
|
@@ -4839,9 +4872,9 @@ class TestServerList(_TestServerList):
|
|
|
4839
4872
|
|
|
4840
4873
|
columns, data = self.cmd.take_action(parsed_args)
|
|
4841
4874
|
|
|
4842
|
-
self.
|
|
4875
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
4843
4876
|
self.image_client.images.assert_not_called()
|
|
4844
|
-
self.
|
|
4877
|
+
self.compute_client.flavors.assert_not_called()
|
|
4845
4878
|
self.assertEqual(self.columns, columns)
|
|
4846
4879
|
self.assertEqual(self.data, tuple(data))
|
|
4847
4880
|
|
|
@@ -4870,9 +4903,9 @@ class TestServerList(_TestServerList):
|
|
|
4870
4903
|
|
|
4871
4904
|
columns, data = self.cmd.take_action(parsed_args)
|
|
4872
4905
|
|
|
4873
|
-
self.
|
|
4906
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
4874
4907
|
self.image_client.images.assert_not_called()
|
|
4875
|
-
self.
|
|
4908
|
+
self.compute_client.flavors.assert_not_called()
|
|
4876
4909
|
self.assertEqual(self.columns, columns)
|
|
4877
4910
|
self.assertEqual(self.data, tuple(data))
|
|
4878
4911
|
|
|
@@ -4887,11 +4920,11 @@ class TestServerList(_TestServerList):
|
|
|
4887
4920
|
|
|
4888
4921
|
columns, data = self.cmd.take_action(parsed_args)
|
|
4889
4922
|
|
|
4890
|
-
self.
|
|
4923
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
4891
4924
|
self.image_client.images.assert_not_called()
|
|
4892
|
-
self.
|
|
4925
|
+
self.compute_client.flavors.assert_not_called()
|
|
4893
4926
|
self.image_client.get_image.assert_called()
|
|
4894
|
-
self.
|
|
4927
|
+
self.compute_client.find_flavor.assert_called()
|
|
4895
4928
|
|
|
4896
4929
|
self.assertEqual(self.columns, columns)
|
|
4897
4930
|
self.assertEqual(self.data, tuple(data))
|
|
@@ -4908,9 +4941,9 @@ class TestServerList(_TestServerList):
|
|
|
4908
4941
|
)
|
|
4909
4942
|
|
|
4910
4943
|
self.kwargs['image'] = self.image.id
|
|
4911
|
-
self.
|
|
4944
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
4912
4945
|
self.image_client.images.assert_not_called()
|
|
4913
|
-
self.
|
|
4946
|
+
self.compute_client.flavors.assert_called_once()
|
|
4914
4947
|
|
|
4915
4948
|
self.assertEqual(self.columns, columns)
|
|
4916
4949
|
self.assertEqual(self.data, tuple(data))
|
|
@@ -4922,14 +4955,14 @@ class TestServerList(_TestServerList):
|
|
|
4922
4955
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
4923
4956
|
columns, data = self.cmd.take_action(parsed_args)
|
|
4924
4957
|
|
|
4925
|
-
self.
|
|
4958
|
+
self.compute_client.find_flavor.assert_has_calls(
|
|
4926
4959
|
[mock.call(self.flavor.id, ignore_missing=False)]
|
|
4927
4960
|
)
|
|
4928
4961
|
|
|
4929
4962
|
self.kwargs['flavor'] = self.flavor.id
|
|
4930
|
-
self.
|
|
4963
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
4931
4964
|
self.image_client.images.assert_called_once()
|
|
4932
|
-
self.
|
|
4965
|
+
self.compute_client.flavors.assert_not_called()
|
|
4933
4966
|
|
|
4934
4967
|
self.assertEqual(self.columns, columns)
|
|
4935
4968
|
self.assertEqual(self.data, tuple(data))
|
|
@@ -4946,7 +4979,7 @@ class TestServerList(_TestServerList):
|
|
|
4946
4979
|
|
|
4947
4980
|
self.kwargs['changes-since'] = '2016-03-04T06:27:59Z'
|
|
4948
4981
|
self.kwargs['deleted'] = True
|
|
4949
|
-
self.
|
|
4982
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
4950
4983
|
|
|
4951
4984
|
self.assertEqual(self.columns, columns)
|
|
4952
4985
|
self.assertEqual(self.data, tuple(data))
|
|
@@ -4967,7 +5000,7 @@ class TestServerList(_TestServerList):
|
|
|
4967
5000
|
self.fail('CommandError should be raised.')
|
|
4968
5001
|
except exceptions.CommandError as e:
|
|
4969
5002
|
self.assertEqual(
|
|
4970
|
-
'Invalid changes-since value: Invalid time
|
|
5003
|
+
'Invalid changes-since value: Invalid time value', str(e)
|
|
4971
5004
|
)
|
|
4972
5005
|
mock_parse_isotime.assert_called_once_with('Invalid time value')
|
|
4973
5006
|
|
|
@@ -4989,7 +5022,7 @@ class TestServerList(_TestServerList):
|
|
|
4989
5022
|
|
|
4990
5023
|
self.kwargs['tags'] = 'tag1,tag2'
|
|
4991
5024
|
|
|
4992
|
-
self.
|
|
5025
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
4993
5026
|
|
|
4994
5027
|
self.assertEqual(self.columns, columns)
|
|
4995
5028
|
self.assertEqual(self.data, tuple(data))
|
|
@@ -5032,7 +5065,7 @@ class TestServerList(_TestServerList):
|
|
|
5032
5065
|
|
|
5033
5066
|
self.kwargs['not-tags'] = 'tag1,tag2'
|
|
5034
5067
|
|
|
5035
|
-
self.
|
|
5068
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
5036
5069
|
|
|
5037
5070
|
self.assertEqual(self.columns, columns)
|
|
5038
5071
|
self.assertEqual(self.data, tuple(data))
|
|
@@ -5071,7 +5104,7 @@ class TestServerList(_TestServerList):
|
|
|
5071
5104
|
columns, data = self.cmd.take_action(parsed_args)
|
|
5072
5105
|
|
|
5073
5106
|
self.kwargs['availability_zone'] = 'test-az'
|
|
5074
|
-
self.
|
|
5107
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
5075
5108
|
self.assertEqual(self.columns, columns)
|
|
5076
5109
|
self.assertEqual(tuple(self.data), tuple(data))
|
|
5077
5110
|
|
|
@@ -5088,7 +5121,7 @@ class TestServerList(_TestServerList):
|
|
|
5088
5121
|
columns, data = self.cmd.take_action(parsed_args)
|
|
5089
5122
|
|
|
5090
5123
|
self.kwargs['key_name'] = 'test-key'
|
|
5091
|
-
self.
|
|
5124
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
5092
5125
|
self.assertEqual(self.columns, columns)
|
|
5093
5126
|
self.assertEqual(tuple(self.data), tuple(data))
|
|
5094
5127
|
|
|
@@ -5104,7 +5137,7 @@ class TestServerList(_TestServerList):
|
|
|
5104
5137
|
columns, data = self.cmd.take_action(parsed_args)
|
|
5105
5138
|
|
|
5106
5139
|
self.kwargs['config_drive'] = True
|
|
5107
|
-
self.
|
|
5140
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
5108
5141
|
self.assertEqual(self.columns, columns)
|
|
5109
5142
|
self.assertEqual(tuple(self.data), tuple(data))
|
|
5110
5143
|
|
|
@@ -5120,7 +5153,7 @@ class TestServerList(_TestServerList):
|
|
|
5120
5153
|
columns, data = self.cmd.take_action(parsed_args)
|
|
5121
5154
|
|
|
5122
5155
|
self.kwargs['config_drive'] = False
|
|
5123
|
-
self.
|
|
5156
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
5124
5157
|
self.assertEqual(self.columns, columns)
|
|
5125
5158
|
self.assertEqual(tuple(self.data), tuple(data))
|
|
5126
5159
|
|
|
@@ -5137,7 +5170,7 @@ class TestServerList(_TestServerList):
|
|
|
5137
5170
|
columns, data = self.cmd.take_action(parsed_args)
|
|
5138
5171
|
|
|
5139
5172
|
self.kwargs['progress'] = '100'
|
|
5140
|
-
self.
|
|
5173
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
5141
5174
|
self.assertEqual(self.columns, columns)
|
|
5142
5175
|
self.assertEqual(tuple(self.data), tuple(data))
|
|
5143
5176
|
|
|
@@ -5168,7 +5201,7 @@ class TestServerList(_TestServerList):
|
|
|
5168
5201
|
columns, data = self.cmd.take_action(parsed_args)
|
|
5169
5202
|
|
|
5170
5203
|
self.kwargs['vm_state'] = 'active'
|
|
5171
|
-
self.
|
|
5204
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
5172
5205
|
self.assertEqual(self.columns, columns)
|
|
5173
5206
|
self.assertEqual(tuple(self.data), tuple(data))
|
|
5174
5207
|
|
|
@@ -5185,7 +5218,7 @@ class TestServerList(_TestServerList):
|
|
|
5185
5218
|
columns, data = self.cmd.take_action(parsed_args)
|
|
5186
5219
|
|
|
5187
5220
|
self.kwargs['task_state'] = 'deleting'
|
|
5188
|
-
self.
|
|
5221
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
5189
5222
|
self.assertEqual(self.columns, columns)
|
|
5190
5223
|
self.assertEqual(tuple(self.data), tuple(data))
|
|
5191
5224
|
|
|
@@ -5202,7 +5235,7 @@ class TestServerList(_TestServerList):
|
|
|
5202
5235
|
columns, data = self.cmd.take_action(parsed_args)
|
|
5203
5236
|
|
|
5204
5237
|
self.kwargs['power_state'] = 1
|
|
5205
|
-
self.
|
|
5238
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
5206
5239
|
self.assertEqual(self.columns, columns)
|
|
5207
5240
|
self.assertEqual(tuple(self.data), tuple(data))
|
|
5208
5241
|
|
|
@@ -5225,6 +5258,7 @@ class TestServerList(_TestServerList):
|
|
|
5225
5258
|
getattr(s, 'pinned_availability_zone', ''),
|
|
5226
5259
|
server.HostColumn(getattr(s, 'hypervisor_hostname')),
|
|
5227
5260
|
format_columns.DictColumn(s.metadata),
|
|
5261
|
+
format_columns.DictListColumn(s.scheduler_hints),
|
|
5228
5262
|
)
|
|
5229
5263
|
for s in self.servers
|
|
5230
5264
|
)
|
|
@@ -5239,18 +5273,18 @@ class TestServerList(_TestServerList):
|
|
|
5239
5273
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
5240
5274
|
columns, data = self.cmd.take_action(parsed_args)
|
|
5241
5275
|
|
|
5242
|
-
self.
|
|
5276
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
5243
5277
|
|
|
5244
5278
|
self.assertEqual(self.columns_long, columns)
|
|
5245
5279
|
self.assertEqual(tuple(self.data1), tuple(data))
|
|
5246
5280
|
|
|
5247
5281
|
# Next test with host_status in the data -- the column should be
|
|
5248
5282
|
# present in this case.
|
|
5249
|
-
self.
|
|
5283
|
+
self.compute_client.servers.reset_mock()
|
|
5250
5284
|
|
|
5251
5285
|
self.attrs['host_status'] = 'UP'
|
|
5252
5286
|
servers = self.setup_sdk_servers_mock(3)
|
|
5253
|
-
self.
|
|
5287
|
+
self.compute_client.servers.return_value = servers
|
|
5254
5288
|
|
|
5255
5289
|
# Make sure the returned image and flavor IDs match the servers.
|
|
5256
5290
|
Image = collections.namedtuple('Image', 'id name')
|
|
@@ -5280,6 +5314,7 @@ class TestServerList(_TestServerList):
|
|
|
5280
5314
|
getattr(s, 'pinned_availability_zone', ''),
|
|
5281
5315
|
server.HostColumn(getattr(s, 'hypervisor_hostname')),
|
|
5282
5316
|
format_columns.DictColumn(s.metadata),
|
|
5317
|
+
format_columns.DictListColumn(s.scheduler_hints),
|
|
5283
5318
|
s.host_status,
|
|
5284
5319
|
)
|
|
5285
5320
|
for s in servers
|
|
@@ -5287,7 +5322,7 @@ class TestServerList(_TestServerList):
|
|
|
5287
5322
|
|
|
5288
5323
|
columns, data = self.cmd.take_action(parsed_args)
|
|
5289
5324
|
|
|
5290
|
-
self.
|
|
5325
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
5291
5326
|
|
|
5292
5327
|
self.assertEqual(columns_long, columns)
|
|
5293
5328
|
self.assertEqual(tuple(self.data2), tuple(data))
|
|
@@ -5317,6 +5352,7 @@ class TestServerListV273(_TestServerList):
|
|
|
5317
5352
|
'Pinned Availability Zone',
|
|
5318
5353
|
'Host',
|
|
5319
5354
|
'Properties',
|
|
5355
|
+
'Scheduler Hints',
|
|
5320
5356
|
)
|
|
5321
5357
|
|
|
5322
5358
|
def setUp(self):
|
|
@@ -5336,7 +5372,7 @@ class TestServerListV273(_TestServerList):
|
|
|
5336
5372
|
|
|
5337
5373
|
# The servers to be listed.
|
|
5338
5374
|
self.servers = self.setup_sdk_servers_mock(3)
|
|
5339
|
-
self.
|
|
5375
|
+
self.compute_client.servers.return_value = self.servers
|
|
5340
5376
|
|
|
5341
5377
|
Image = collections.namedtuple('Image', 'id name')
|
|
5342
5378
|
self.image_client.images.return_value = [
|
|
@@ -5348,7 +5384,7 @@ class TestServerListV273(_TestServerList):
|
|
|
5348
5384
|
|
|
5349
5385
|
# The flavor information is embedded, so now reason for this to be
|
|
5350
5386
|
# called
|
|
5351
|
-
self.
|
|
5387
|
+
self.compute_client.flavors = mock.NonCallableMock()
|
|
5352
5388
|
|
|
5353
5389
|
self.data = tuple(
|
|
5354
5390
|
(
|
|
@@ -5384,7 +5420,7 @@ class TestServerListV273(_TestServerList):
|
|
|
5384
5420
|
columns, data = self.cmd.take_action(parsed_args)
|
|
5385
5421
|
|
|
5386
5422
|
self.kwargs['locked'] = True
|
|
5387
|
-
self.
|
|
5423
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
5388
5424
|
|
|
5389
5425
|
self.assertCountEqual(self.columns, columns)
|
|
5390
5426
|
self.assertCountEqual(self.data, tuple(data))
|
|
@@ -5399,7 +5435,7 @@ class TestServerListV273(_TestServerList):
|
|
|
5399
5435
|
columns, data = self.cmd.take_action(parsed_args)
|
|
5400
5436
|
|
|
5401
5437
|
self.kwargs['locked'] = False
|
|
5402
|
-
self.
|
|
5438
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
5403
5439
|
|
|
5404
5440
|
self.assertCountEqual(self.columns, columns)
|
|
5405
5441
|
self.assertCountEqual(self.data, tuple(data))
|
|
@@ -5432,7 +5468,7 @@ class TestServerListV273(_TestServerList):
|
|
|
5432
5468
|
self.kwargs['changes-before'] = '2016-03-05T06:27:59Z'
|
|
5433
5469
|
self.kwargs['deleted'] = True
|
|
5434
5470
|
|
|
5435
|
-
self.
|
|
5471
|
+
self.compute_client.servers.assert_called_with(**self.kwargs)
|
|
5436
5472
|
|
|
5437
5473
|
self.assertCountEqual(self.columns, columns)
|
|
5438
5474
|
self.assertCountEqual(self.data, tuple(data))
|
|
@@ -5454,7 +5490,7 @@ class TestServerListV273(_TestServerList):
|
|
|
5454
5490
|
self.fail('CommandError should be raised.')
|
|
5455
5491
|
except exceptions.CommandError as e:
|
|
5456
5492
|
self.assertEqual(
|
|
5457
|
-
'Invalid changes-before value: Invalid time
|
|
5493
|
+
'Invalid changes-before value: Invalid time value', str(e)
|
|
5458
5494
|
)
|
|
5459
5495
|
mock_parse_isotime.assert_called_once_with('Invalid time value')
|
|
5460
5496
|
|
|
@@ -5491,9 +5527,7 @@ class TestServerListV273(_TestServerList):
|
|
|
5491
5527
|
],
|
|
5492
5528
|
"networks": {},
|
|
5493
5529
|
}
|
|
5494
|
-
fake_server =
|
|
5495
|
-
info=server_dict,
|
|
5496
|
-
)
|
|
5530
|
+
fake_server = _server.Server(**server_dict)
|
|
5497
5531
|
self.servers.append(fake_server)
|
|
5498
5532
|
columns, data = self.cmd.take_action(parsed_args)
|
|
5499
5533
|
# get the first three servers out since our interest is in the partial
|
|
@@ -5504,9 +5538,9 @@ class TestServerListV273(_TestServerList):
|
|
|
5504
5538
|
partial_server = next(data)
|
|
5505
5539
|
expected_row = (
|
|
5506
5540
|
'server-id-95a56bfc4xxxxxx28d7e418bfd97813a',
|
|
5507
|
-
|
|
5541
|
+
None,
|
|
5508
5542
|
'UNKNOWN',
|
|
5509
|
-
server.AddressesColumn(
|
|
5543
|
+
server.AddressesColumn(None),
|
|
5510
5544
|
'',
|
|
5511
5545
|
'',
|
|
5512
5546
|
)
|
|
@@ -5515,8 +5549,8 @@ class TestServerListV273(_TestServerList):
|
|
|
5515
5549
|
|
|
5516
5550
|
class TestServerAction(compute_fakes.TestComputev2):
|
|
5517
5551
|
def run_method_with_sdk_servers(self, method_name, server_count):
|
|
5518
|
-
servers = compute_fakes.
|
|
5519
|
-
self.
|
|
5552
|
+
servers = compute_fakes.create_servers(count=server_count)
|
|
5553
|
+
self.compute_client.find_server.side_effect = servers
|
|
5520
5554
|
|
|
5521
5555
|
arglist = [s.id for s in servers]
|
|
5522
5556
|
verifylist = [
|
|
@@ -5527,7 +5561,7 @@ class TestServerAction(compute_fakes.TestComputev2):
|
|
|
5527
5561
|
result = self.cmd.take_action(parsed_args)
|
|
5528
5562
|
|
|
5529
5563
|
calls = [mock.call(s.id) for s in servers]
|
|
5530
|
-
method = getattr(self.
|
|
5564
|
+
method = getattr(self.compute_client, method_name)
|
|
5531
5565
|
method.assert_has_calls(calls)
|
|
5532
5566
|
self.assertIsNone(result)
|
|
5533
5567
|
|
|
@@ -5548,9 +5582,9 @@ class TestServerLock(TestServerAction):
|
|
|
5548
5582
|
def test_server_lock_with_reason(self):
|
|
5549
5583
|
self.set_compute_api_version('2.73')
|
|
5550
5584
|
|
|
5551
|
-
self.server = compute_fakes.
|
|
5552
|
-
self.
|
|
5553
|
-
self.
|
|
5585
|
+
self.server = compute_fakes.create_one_server()
|
|
5586
|
+
self.compute_client.find_server.return_value = self.server
|
|
5587
|
+
self.compute_client.lock_server.return_value = None
|
|
5554
5588
|
|
|
5555
5589
|
arglist = [
|
|
5556
5590
|
self.server.id,
|
|
@@ -5565,11 +5599,11 @@ class TestServerLock(TestServerAction):
|
|
|
5565
5599
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
5566
5600
|
self.cmd.take_action(parsed_args)
|
|
5567
5601
|
|
|
5568
|
-
self.
|
|
5602
|
+
self.compute_client.find_server.assert_called_with(
|
|
5569
5603
|
self.server.id,
|
|
5570
5604
|
ignore_missing=False,
|
|
5571
5605
|
)
|
|
5572
|
-
self.
|
|
5606
|
+
self.compute_client.lock_server.assert_called_with(
|
|
5573
5607
|
self.server.id,
|
|
5574
5608
|
locked_reason="blah",
|
|
5575
5609
|
)
|
|
@@ -5577,11 +5611,11 @@ class TestServerLock(TestServerAction):
|
|
|
5577
5611
|
def test_server_lock_with_reason_multi_servers(self):
|
|
5578
5612
|
self.set_compute_api_version('2.73')
|
|
5579
5613
|
|
|
5580
|
-
server_a = compute_fakes.
|
|
5581
|
-
server_b = compute_fakes.
|
|
5614
|
+
server_a = compute_fakes.create_one_server()
|
|
5615
|
+
server_b = compute_fakes.create_one_server()
|
|
5582
5616
|
|
|
5583
|
-
self.
|
|
5584
|
-
self.
|
|
5617
|
+
self.compute_client.find_server.side_effect = [server_a, server_b]
|
|
5618
|
+
self.compute_client.lock_server.return_value = None
|
|
5585
5619
|
arglist = [
|
|
5586
5620
|
server_a.id,
|
|
5587
5621
|
server_b.id,
|
|
@@ -5596,8 +5630,8 @@ class TestServerLock(TestServerAction):
|
|
|
5596
5630
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
5597
5631
|
self.cmd.take_action(parsed_args)
|
|
5598
5632
|
|
|
5599
|
-
self.assertEqual(2, self.
|
|
5600
|
-
self.
|
|
5633
|
+
self.assertEqual(2, self.compute_client.find_server.call_count)
|
|
5634
|
+
self.compute_client.lock_server.assert_has_calls(
|
|
5601
5635
|
[
|
|
5602
5636
|
mock.call(server_a.id, locked_reason="choo..choo"),
|
|
5603
5637
|
mock.call(server_b.id, locked_reason="choo..choo"),
|
|
@@ -5607,7 +5641,7 @@ class TestServerLock(TestServerAction):
|
|
|
5607
5641
|
def test_server_lock_with_reason_pre_v273(self):
|
|
5608
5642
|
self.set_compute_api_version('2.72')
|
|
5609
5643
|
|
|
5610
|
-
server = compute_fakes.
|
|
5644
|
+
server = compute_fakes.create_one_server()
|
|
5611
5645
|
|
|
5612
5646
|
arglist = [
|
|
5613
5647
|
server.id,
|
|
@@ -5635,10 +5669,10 @@ class TestServerMigrate(TestServer):
|
|
|
5635
5669
|
def setUp(self):
|
|
5636
5670
|
super().setUp()
|
|
5637
5671
|
|
|
5638
|
-
self.server = compute_fakes.
|
|
5639
|
-
self.
|
|
5640
|
-
self.
|
|
5641
|
-
self.
|
|
5672
|
+
self.server = compute_fakes.create_one_server()
|
|
5673
|
+
self.compute_client.find_server.return_value = self.server
|
|
5674
|
+
self.compute_client.migrate_server.return_value = None
|
|
5675
|
+
self.compute_client.live_migrate_server.return_value = None
|
|
5642
5676
|
|
|
5643
5677
|
# Get the command object to test
|
|
5644
5678
|
self.cmd = server.MigrateServer(self.app, None)
|
|
@@ -5657,13 +5691,13 @@ class TestServerMigrate(TestServer):
|
|
|
5657
5691
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
5658
5692
|
result = self.cmd.take_action(parsed_args)
|
|
5659
5693
|
|
|
5660
|
-
self.
|
|
5694
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
5661
5695
|
self.server.id, ignore_missing=False
|
|
5662
5696
|
)
|
|
5663
|
-
self.
|
|
5697
|
+
self.compute_client.migrate_server.assert_called_once_with(
|
|
5664
5698
|
self.server,
|
|
5665
5699
|
)
|
|
5666
|
-
self.
|
|
5700
|
+
self.compute_client.live_migrate_server.assert_not_called()
|
|
5667
5701
|
self.assertIsNone(result)
|
|
5668
5702
|
|
|
5669
5703
|
def test_server_migrate_with_host(self):
|
|
@@ -5687,13 +5721,13 @@ class TestServerMigrate(TestServer):
|
|
|
5687
5721
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
5688
5722
|
result = self.cmd.take_action(parsed_args)
|
|
5689
5723
|
|
|
5690
|
-
self.
|
|
5724
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
5691
5725
|
self.server.id, ignore_missing=False
|
|
5692
5726
|
)
|
|
5693
|
-
self.
|
|
5727
|
+
self.compute_client.migrate_server.assert_called_once_with(
|
|
5694
5728
|
self.server, host='fakehost'
|
|
5695
5729
|
)
|
|
5696
|
-
self.
|
|
5730
|
+
self.compute_client.live_migrate_server.assert_not_called()
|
|
5697
5731
|
self.assertIsNone(result)
|
|
5698
5732
|
|
|
5699
5733
|
def test_server_migrate_with_block_migration(self):
|
|
@@ -5713,11 +5747,11 @@ class TestServerMigrate(TestServer):
|
|
|
5713
5747
|
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
5714
5748
|
)
|
|
5715
5749
|
|
|
5716
|
-
self.
|
|
5750
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
5717
5751
|
self.server.id, ignore_missing=False
|
|
5718
5752
|
)
|
|
5719
|
-
self.
|
|
5720
|
-
self.
|
|
5753
|
+
self.compute_client.migrate_server.assert_not_called()
|
|
5754
|
+
self.compute_client.live_migrate_server.assert_not_called()
|
|
5721
5755
|
|
|
5722
5756
|
def test_server_migrate_with_disk_overcommit(self):
|
|
5723
5757
|
arglist = [
|
|
@@ -5736,11 +5770,11 @@ class TestServerMigrate(TestServer):
|
|
|
5736
5770
|
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
5737
5771
|
)
|
|
5738
5772
|
|
|
5739
|
-
self.
|
|
5773
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
5740
5774
|
self.server.id, ignore_missing=False
|
|
5741
5775
|
)
|
|
5742
|
-
self.
|
|
5743
|
-
self.
|
|
5776
|
+
self.compute_client.migrate_server.assert_not_called()
|
|
5777
|
+
self.compute_client.live_migrate_server.assert_not_called()
|
|
5744
5778
|
|
|
5745
5779
|
def test_server_migrate_with_host_pre_v256(self):
|
|
5746
5780
|
# Tests that --host is not allowed for a cold migration
|
|
@@ -5772,11 +5806,11 @@ class TestServerMigrate(TestServer):
|
|
|
5772
5806
|
str(ex),
|
|
5773
5807
|
)
|
|
5774
5808
|
|
|
5775
|
-
self.
|
|
5809
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
5776
5810
|
self.server.id, ignore_missing=False
|
|
5777
5811
|
)
|
|
5778
|
-
self.
|
|
5779
|
-
self.
|
|
5812
|
+
self.compute_client.migrate_server.assert_not_called()
|
|
5813
|
+
self.compute_client.live_migrate_server.assert_not_called()
|
|
5780
5814
|
|
|
5781
5815
|
def test_server_live_migrate(self):
|
|
5782
5816
|
# Tests the --live-migration option without --host or --live.
|
|
@@ -5795,16 +5829,16 @@ class TestServerMigrate(TestServer):
|
|
|
5795
5829
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
5796
5830
|
result = self.cmd.take_action(parsed_args)
|
|
5797
5831
|
|
|
5798
|
-
self.
|
|
5832
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
5799
5833
|
self.server.id, ignore_missing=False
|
|
5800
5834
|
)
|
|
5801
|
-
self.
|
|
5835
|
+
self.compute_client.live_migrate_server.assert_called_once_with(
|
|
5802
5836
|
self.server,
|
|
5803
5837
|
block_migration=False,
|
|
5804
5838
|
host=None,
|
|
5805
5839
|
disk_overcommit=False,
|
|
5806
5840
|
)
|
|
5807
|
-
self.
|
|
5841
|
+
self.compute_client.migrate_server.assert_not_called()
|
|
5808
5842
|
self.assertIsNone(result)
|
|
5809
5843
|
|
|
5810
5844
|
def test_server_live_migrate_with_host(self):
|
|
@@ -5828,17 +5862,17 @@ class TestServerMigrate(TestServer):
|
|
|
5828
5862
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
5829
5863
|
result = self.cmd.take_action(parsed_args)
|
|
5830
5864
|
|
|
5831
|
-
self.
|
|
5865
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
5832
5866
|
self.server.id, ignore_missing=False
|
|
5833
5867
|
)
|
|
5834
5868
|
# No disk_overcommit and block_migration defaults to auto with
|
|
5835
5869
|
# microversion >= 2.25
|
|
5836
|
-
self.
|
|
5870
|
+
self.compute_client.live_migrate_server.assert_called_once_with(
|
|
5837
5871
|
self.server,
|
|
5838
5872
|
block_migration='auto',
|
|
5839
5873
|
host='fakehost',
|
|
5840
5874
|
)
|
|
5841
|
-
self.
|
|
5875
|
+
self.compute_client.migrate_server.assert_not_called()
|
|
5842
5876
|
self.assertIsNone(result)
|
|
5843
5877
|
|
|
5844
5878
|
def test_server_live_migrate_with_host_pre_v230(self):
|
|
@@ -5871,11 +5905,11 @@ class TestServerMigrate(TestServer):
|
|
|
5871
5905
|
str(ex),
|
|
5872
5906
|
)
|
|
5873
5907
|
|
|
5874
|
-
self.
|
|
5908
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
5875
5909
|
self.server.id, ignore_missing=False
|
|
5876
5910
|
)
|
|
5877
|
-
self.
|
|
5878
|
-
self.
|
|
5911
|
+
self.compute_client.migrate_server.assert_not_called()
|
|
5912
|
+
self.compute_client.live_migrate_server.assert_not_called()
|
|
5879
5913
|
|
|
5880
5914
|
def test_server_block_live_migrate(self):
|
|
5881
5915
|
self.set_compute_api_version('2.24')
|
|
@@ -5895,18 +5929,18 @@ class TestServerMigrate(TestServer):
|
|
|
5895
5929
|
|
|
5896
5930
|
result = self.cmd.take_action(parsed_args)
|
|
5897
5931
|
|
|
5898
|
-
self.
|
|
5932
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
5899
5933
|
self.server.id, ignore_missing=False
|
|
5900
5934
|
)
|
|
5901
5935
|
# No disk_overcommit and block_migration defaults to auto with
|
|
5902
5936
|
# microversion >= 2.25
|
|
5903
|
-
self.
|
|
5937
|
+
self.compute_client.live_migrate_server.assert_called_once_with(
|
|
5904
5938
|
self.server,
|
|
5905
5939
|
block_migration=True,
|
|
5906
5940
|
disk_overcommit=False,
|
|
5907
5941
|
host=None,
|
|
5908
5942
|
)
|
|
5909
|
-
self.
|
|
5943
|
+
self.compute_client.migrate_server.assert_not_called()
|
|
5910
5944
|
self.assertIsNone(result)
|
|
5911
5945
|
|
|
5912
5946
|
def test_server_live_migrate_with_disk_overcommit(self):
|
|
@@ -5927,16 +5961,16 @@ class TestServerMigrate(TestServer):
|
|
|
5927
5961
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
5928
5962
|
result = self.cmd.take_action(parsed_args)
|
|
5929
5963
|
|
|
5930
|
-
self.
|
|
5964
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
5931
5965
|
self.server.id, ignore_missing=False
|
|
5932
5966
|
)
|
|
5933
|
-
self.
|
|
5967
|
+
self.compute_client.live_migrate_server.assert_called_once_with(
|
|
5934
5968
|
self.server,
|
|
5935
5969
|
block_migration=False,
|
|
5936
5970
|
disk_overcommit=True,
|
|
5937
5971
|
host=None,
|
|
5938
5972
|
)
|
|
5939
|
-
self.
|
|
5973
|
+
self.compute_client.migrate_server.assert_not_called()
|
|
5940
5974
|
self.assertIsNone(result)
|
|
5941
5975
|
|
|
5942
5976
|
def test_server_live_migrate_with_disk_overcommit_post_v224(self):
|
|
@@ -5958,16 +5992,16 @@ class TestServerMigrate(TestServer):
|
|
|
5958
5992
|
with mock.patch.object(self.cmd.log, 'warning') as mock_warning:
|
|
5959
5993
|
result = self.cmd.take_action(parsed_args)
|
|
5960
5994
|
|
|
5961
|
-
self.
|
|
5995
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
5962
5996
|
self.server.id, ignore_missing=False
|
|
5963
5997
|
)
|
|
5964
5998
|
# There should be no 'disk_over_commit' value present
|
|
5965
|
-
self.
|
|
5999
|
+
self.compute_client.live_migrate_server.assert_called_once_with(
|
|
5966
6000
|
self.server,
|
|
5967
6001
|
block_migration='auto',
|
|
5968
6002
|
host=None,
|
|
5969
6003
|
)
|
|
5970
|
-
self.
|
|
6004
|
+
self.compute_client.migrate_server.assert_not_called()
|
|
5971
6005
|
self.assertIsNone(result)
|
|
5972
6006
|
|
|
5973
6007
|
# A warning should have been logged for using --disk-overcommit.
|
|
@@ -5993,15 +6027,15 @@ class TestServerMigrate(TestServer):
|
|
|
5993
6027
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
5994
6028
|
result = self.cmd.take_action(parsed_args)
|
|
5995
6029
|
|
|
5996
|
-
self.
|
|
6030
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
5997
6031
|
self.server.id, ignore_missing=False
|
|
5998
6032
|
)
|
|
5999
|
-
self.
|
|
6033
|
+
self.compute_client.migrate_server.assert_called_once_with(
|
|
6000
6034
|
self.server,
|
|
6001
6035
|
)
|
|
6002
|
-
self.
|
|
6036
|
+
self.compute_client.live_migrate_server.assert_not_called()
|
|
6003
6037
|
mock_wait_for_status.assert_called_once_with(
|
|
6004
|
-
self.
|
|
6038
|
+
self.compute_client.get_server,
|
|
6005
6039
|
self.server.id,
|
|
6006
6040
|
success_status=('active', 'verify_resize'),
|
|
6007
6041
|
callback=mock.ANY,
|
|
@@ -6026,15 +6060,15 @@ class TestServerMigrate(TestServer):
|
|
|
6026
6060
|
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
6027
6061
|
)
|
|
6028
6062
|
|
|
6029
|
-
self.
|
|
6063
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6030
6064
|
self.server.id, ignore_missing=False
|
|
6031
6065
|
)
|
|
6032
|
-
self.
|
|
6066
|
+
self.compute_client.migrate_server.assert_called_once_with(
|
|
6033
6067
|
self.server,
|
|
6034
6068
|
)
|
|
6035
|
-
self.
|
|
6069
|
+
self.compute_client.live_migrate_server.assert_not_called()
|
|
6036
6070
|
mock_wait_for_status.assert_called_once_with(
|
|
6037
|
-
self.
|
|
6071
|
+
self.compute_client.get_server,
|
|
6038
6072
|
self.server.id,
|
|
6039
6073
|
success_status=('active', 'verify_resize'),
|
|
6040
6074
|
callback=mock.ANY,
|
|
@@ -6045,7 +6079,7 @@ class TestServerReboot(TestServer):
|
|
|
6045
6079
|
def setUp(self):
|
|
6046
6080
|
super().setUp()
|
|
6047
6081
|
|
|
6048
|
-
self.
|
|
6082
|
+
self.compute_client.reboot_server.return_value = None
|
|
6049
6083
|
|
|
6050
6084
|
self.cmd = server.RebootServer(self.app, None)
|
|
6051
6085
|
|
|
@@ -6064,7 +6098,7 @@ class TestServerReboot(TestServer):
|
|
|
6064
6098
|
|
|
6065
6099
|
result = self.cmd.take_action(parsed_args)
|
|
6066
6100
|
|
|
6067
|
-
self.
|
|
6101
|
+
self.compute_client.reboot_server.assert_called_once_with(
|
|
6068
6102
|
servers[0].id,
|
|
6069
6103
|
'SOFT',
|
|
6070
6104
|
)
|
|
@@ -6086,7 +6120,7 @@ class TestServerReboot(TestServer):
|
|
|
6086
6120
|
|
|
6087
6121
|
result = self.cmd.take_action(parsed_args)
|
|
6088
6122
|
|
|
6089
|
-
self.
|
|
6123
|
+
self.compute_client.reboot_server.assert_called_once_with(
|
|
6090
6124
|
servers[0].id,
|
|
6091
6125
|
'HARD',
|
|
6092
6126
|
)
|
|
@@ -6110,12 +6144,12 @@ class TestServerReboot(TestServer):
|
|
|
6110
6144
|
result = self.cmd.take_action(parsed_args)
|
|
6111
6145
|
|
|
6112
6146
|
self.assertIsNone(result)
|
|
6113
|
-
self.
|
|
6147
|
+
self.compute_client.reboot_server.assert_called_once_with(
|
|
6114
6148
|
servers[0].id,
|
|
6115
6149
|
'SOFT',
|
|
6116
6150
|
)
|
|
6117
6151
|
mock_wait_for_status.assert_called_once_with(
|
|
6118
|
-
self.
|
|
6152
|
+
self.compute_client.get_server,
|
|
6119
6153
|
servers[0].id,
|
|
6120
6154
|
callback=mock.ANY,
|
|
6121
6155
|
)
|
|
@@ -6144,12 +6178,12 @@ class TestServerReboot(TestServer):
|
|
|
6144
6178
|
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
6145
6179
|
)
|
|
6146
6180
|
|
|
6147
|
-
self.
|
|
6181
|
+
self.compute_client.reboot_server.assert_called_once_with(
|
|
6148
6182
|
servers[0].id,
|
|
6149
6183
|
'SOFT',
|
|
6150
6184
|
)
|
|
6151
6185
|
mock_wait_for_status.assert_called_once_with(
|
|
6152
|
-
self.
|
|
6186
|
+
self.compute_client.get_server,
|
|
6153
6187
|
servers[0].id,
|
|
6154
6188
|
callback=mock.ANY,
|
|
6155
6189
|
)
|
|
@@ -6180,9 +6214,9 @@ class TestServerRebuild(TestServer):
|
|
|
6180
6214
|
'status': 'ACTIVE',
|
|
6181
6215
|
'image': {'id': self.image.id},
|
|
6182
6216
|
}
|
|
6183
|
-
self.server = compute_fakes.
|
|
6184
|
-
self.
|
|
6185
|
-
self.
|
|
6217
|
+
self.server = compute_fakes.create_one_server(attrs=attrs)
|
|
6218
|
+
self.compute_client.find_server.return_value = self.server
|
|
6219
|
+
self.compute_client.rebuild_server.return_value = self.server
|
|
6186
6220
|
|
|
6187
6221
|
self.cmd = server.RebuildServer(self.app, None)
|
|
6188
6222
|
|
|
@@ -6204,14 +6238,14 @@ class TestServerRebuild(TestServer):
|
|
|
6204
6238
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
6205
6239
|
self.cmd.take_action(parsed_args)
|
|
6206
6240
|
|
|
6207
|
-
self.
|
|
6241
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6208
6242
|
self.server.id, ignore_missing=False
|
|
6209
6243
|
)
|
|
6210
6244
|
self.image_client.find_image.assert_called_with(
|
|
6211
6245
|
image_name, ignore_missing=False
|
|
6212
6246
|
)
|
|
6213
6247
|
self.image_client.get_image.assert_called_with(self.image.id)
|
|
6214
|
-
self.
|
|
6248
|
+
self.compute_client.rebuild_server.assert_called_once_with(
|
|
6215
6249
|
self.server, image
|
|
6216
6250
|
)
|
|
6217
6251
|
|
|
@@ -6225,14 +6259,14 @@ class TestServerRebuild(TestServer):
|
|
|
6225
6259
|
# Get the command object to test.
|
|
6226
6260
|
self.cmd.take_action(parsed_args)
|
|
6227
6261
|
|
|
6228
|
-
self.
|
|
6262
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6229
6263
|
self.server.id, ignore_missing=False
|
|
6230
6264
|
)
|
|
6231
6265
|
self.image_client.find_image.assert_not_called()
|
|
6232
6266
|
self.image_client.get_image.assert_has_calls(
|
|
6233
6267
|
[mock.call(self.image.id), mock.call(self.image.id)]
|
|
6234
6268
|
)
|
|
6235
|
-
self.
|
|
6269
|
+
self.compute_client.rebuild_server.assert_called_once_with(
|
|
6236
6270
|
self.server, self.image
|
|
6237
6271
|
)
|
|
6238
6272
|
|
|
@@ -6269,14 +6303,14 @@ class TestServerRebuild(TestServer):
|
|
|
6269
6303
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
6270
6304
|
self.cmd.take_action(parsed_args)
|
|
6271
6305
|
|
|
6272
|
-
self.
|
|
6306
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6273
6307
|
self.server.id, ignore_missing=False
|
|
6274
6308
|
)
|
|
6275
6309
|
self.image_client.find_image.assert_not_called()
|
|
6276
6310
|
self.image_client.get_image.assert_has_calls(
|
|
6277
6311
|
[mock.call(self.image.id), mock.call(self.image.id)]
|
|
6278
6312
|
)
|
|
6279
|
-
self.
|
|
6313
|
+
self.compute_client.rebuild_server.assert_called_once_with(
|
|
6280
6314
|
self.server, self.image, name=name
|
|
6281
6315
|
)
|
|
6282
6316
|
|
|
@@ -6293,14 +6327,14 @@ class TestServerRebuild(TestServer):
|
|
|
6293
6327
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
6294
6328
|
self.cmd.take_action(parsed_args)
|
|
6295
6329
|
|
|
6296
|
-
self.
|
|
6330
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6297
6331
|
self.server.id, ignore_missing=False
|
|
6298
6332
|
)
|
|
6299
6333
|
self.image_client.find_image.assert_not_called()
|
|
6300
6334
|
self.image_client.get_image.assert_has_calls(
|
|
6301
6335
|
[mock.call(self.image.id), mock.call(self.image.id)]
|
|
6302
6336
|
)
|
|
6303
|
-
self.
|
|
6337
|
+
self.compute_client.rebuild_server.assert_called_once_with(
|
|
6304
6338
|
self.server, self.image, preserve_ephemeral=True
|
|
6305
6339
|
)
|
|
6306
6340
|
|
|
@@ -6318,14 +6352,14 @@ class TestServerRebuild(TestServer):
|
|
|
6318
6352
|
# Get the command object to test
|
|
6319
6353
|
self.cmd.take_action(parsed_args)
|
|
6320
6354
|
|
|
6321
|
-
self.
|
|
6355
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6322
6356
|
self.server.id, ignore_missing=False
|
|
6323
6357
|
)
|
|
6324
6358
|
self.image_client.find_image.assert_not_called()
|
|
6325
6359
|
self.image_client.get_image.assert_has_calls(
|
|
6326
6360
|
[mock.call(self.image.id), mock.call(self.image.id)]
|
|
6327
6361
|
)
|
|
6328
|
-
self.
|
|
6362
|
+
self.compute_client.rebuild_server.assert_called_once_with(
|
|
6329
6363
|
self.server, self.image, preserve_ephemeral=False
|
|
6330
6364
|
)
|
|
6331
6365
|
|
|
@@ -6337,14 +6371,14 @@ class TestServerRebuild(TestServer):
|
|
|
6337
6371
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
6338
6372
|
self.cmd.take_action(parsed_args)
|
|
6339
6373
|
|
|
6340
|
-
self.
|
|
6374
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6341
6375
|
self.server.id, ignore_missing=False
|
|
6342
6376
|
)
|
|
6343
6377
|
self.image_client.find_image.assert_not_called()
|
|
6344
6378
|
self.image_client.get_image.assert_has_calls(
|
|
6345
6379
|
[mock.call(self.image.id), mock.call(self.image.id)]
|
|
6346
6380
|
)
|
|
6347
|
-
self.
|
|
6381
|
+
self.compute_client.rebuild_server.assert_called_once_with(
|
|
6348
6382
|
self.server,
|
|
6349
6383
|
self.image,
|
|
6350
6384
|
admin_password=password,
|
|
@@ -6360,14 +6394,14 @@ class TestServerRebuild(TestServer):
|
|
|
6360
6394
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
6361
6395
|
self.cmd.take_action(parsed_args)
|
|
6362
6396
|
|
|
6363
|
-
self.
|
|
6397
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6364
6398
|
self.server.id, ignore_missing=False
|
|
6365
6399
|
)
|
|
6366
6400
|
self.image_client.find_image.assert_not_called()
|
|
6367
6401
|
self.image_client.get_image.assert_has_calls(
|
|
6368
6402
|
[mock.call(self.image.id), mock.call(self.image.id)]
|
|
6369
6403
|
)
|
|
6370
|
-
self.
|
|
6404
|
+
self.compute_client.rebuild_server.assert_called_once_with(
|
|
6371
6405
|
self.server, self.image, description=description
|
|
6372
6406
|
)
|
|
6373
6407
|
|
|
@@ -6397,19 +6431,19 @@ class TestServerRebuild(TestServer):
|
|
|
6397
6431
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
6398
6432
|
self.cmd.take_action(parsed_args)
|
|
6399
6433
|
|
|
6400
|
-
self.
|
|
6434
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6401
6435
|
self.server.id, ignore_missing=False
|
|
6402
6436
|
)
|
|
6403
6437
|
self.image_client.find_image.assert_not_called()
|
|
6404
6438
|
self.image_client.get_image.assert_has_calls(
|
|
6405
6439
|
[mock.call(self.image.id), mock.call(self.image.id)]
|
|
6406
6440
|
)
|
|
6407
|
-
self.
|
|
6441
|
+
self.compute_client.rebuild_server.assert_called_once_with(
|
|
6408
6442
|
self.server, self.image
|
|
6409
6443
|
)
|
|
6410
6444
|
|
|
6411
6445
|
mock_wait_for_status.assert_called_once_with(
|
|
6412
|
-
self.
|
|
6446
|
+
self.compute_client.get_server,
|
|
6413
6447
|
self.server.id,
|
|
6414
6448
|
callback=mock.ANY,
|
|
6415
6449
|
success_status=['active'],
|
|
@@ -6431,17 +6465,17 @@ class TestServerRebuild(TestServer):
|
|
|
6431
6465
|
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
6432
6466
|
)
|
|
6433
6467
|
|
|
6434
|
-
self.
|
|
6468
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6435
6469
|
self.server.id, ignore_missing=False
|
|
6436
6470
|
)
|
|
6437
6471
|
self.image_client.find_image.assert_not_called()
|
|
6438
6472
|
self.image_client.get_image.assert_called_once_with(self.image.id)
|
|
6439
|
-
self.
|
|
6473
|
+
self.compute_client.rebuild_server.assert_called_once_with(
|
|
6440
6474
|
self.server, self.image
|
|
6441
6475
|
)
|
|
6442
6476
|
|
|
6443
6477
|
mock_wait_for_status.assert_called_once_with(
|
|
6444
|
-
self.
|
|
6478
|
+
self.compute_client.get_server,
|
|
6445
6479
|
self.server.id,
|
|
6446
6480
|
callback=mock.ANY,
|
|
6447
6481
|
success_status=['active'],
|
|
@@ -6462,19 +6496,19 @@ class TestServerRebuild(TestServer):
|
|
|
6462
6496
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
6463
6497
|
self.cmd.take_action(parsed_args)
|
|
6464
6498
|
|
|
6465
|
-
self.
|
|
6499
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6466
6500
|
self.server.id, ignore_missing=False
|
|
6467
6501
|
)
|
|
6468
6502
|
self.image_client.find_image.assert_not_called()
|
|
6469
6503
|
self.image_client.get_image.assert_has_calls(
|
|
6470
6504
|
[mock.call(self.image.id), mock.call(self.image.id)]
|
|
6471
6505
|
)
|
|
6472
|
-
self.
|
|
6506
|
+
self.compute_client.rebuild_server.assert_called_once_with(
|
|
6473
6507
|
self.server, self.image
|
|
6474
6508
|
)
|
|
6475
6509
|
|
|
6476
6510
|
mock_wait_for_status.assert_called_once_with(
|
|
6477
|
-
self.
|
|
6511
|
+
self.compute_client.get_server,
|
|
6478
6512
|
self.server.id,
|
|
6479
6513
|
callback=mock.ANY,
|
|
6480
6514
|
success_status=['shutoff'],
|
|
@@ -6495,19 +6529,19 @@ class TestServerRebuild(TestServer):
|
|
|
6495
6529
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
6496
6530
|
self.cmd.take_action(parsed_args)
|
|
6497
6531
|
|
|
6498
|
-
self.
|
|
6532
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6499
6533
|
self.server.id, ignore_missing=False
|
|
6500
6534
|
)
|
|
6501
6535
|
self.image_client.find_image.assert_not_called()
|
|
6502
6536
|
self.image_client.get_image.assert_has_calls(
|
|
6503
6537
|
[mock.call(self.image.id), mock.call(self.image.id)]
|
|
6504
6538
|
)
|
|
6505
|
-
self.
|
|
6539
|
+
self.compute_client.rebuild_server.assert_called_once_with(
|
|
6506
6540
|
self.server, self.image
|
|
6507
6541
|
)
|
|
6508
6542
|
|
|
6509
6543
|
mock_wait_for_status.assert_called_once_with(
|
|
6510
|
-
self.
|
|
6544
|
+
self.compute_client.get_server,
|
|
6511
6545
|
self.server.id,
|
|
6512
6546
|
callback=mock.ANY,
|
|
6513
6547
|
success_status=['active'],
|
|
@@ -6527,12 +6561,12 @@ class TestServerRebuild(TestServer):
|
|
|
6527
6561
|
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
6528
6562
|
)
|
|
6529
6563
|
|
|
6530
|
-
self.
|
|
6564
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6531
6565
|
self.server.id, ignore_missing=False
|
|
6532
6566
|
)
|
|
6533
6567
|
self.image_client.find_image.assert_not_called()
|
|
6534
6568
|
self.image_client.get_image.assert_called_once_with(self.image.id)
|
|
6535
|
-
self.
|
|
6569
|
+
self.compute_client.rebuild_server.assert_not_called()
|
|
6536
6570
|
|
|
6537
6571
|
def test_rebuild_with_property(self):
|
|
6538
6572
|
arglist = [
|
|
@@ -6551,14 +6585,14 @@ class TestServerRebuild(TestServer):
|
|
|
6551
6585
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
6552
6586
|
self.cmd.take_action(parsed_args)
|
|
6553
6587
|
|
|
6554
|
-
self.
|
|
6588
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6555
6589
|
self.server.id, ignore_missing=False
|
|
6556
6590
|
)
|
|
6557
6591
|
self.image_client.find_image.assert_not_called()
|
|
6558
6592
|
self.image_client.get_image.assert_has_calls(
|
|
6559
6593
|
[mock.call(self.image.id), mock.call(self.image.id)]
|
|
6560
6594
|
)
|
|
6561
|
-
self.
|
|
6595
|
+
self.compute_client.rebuild_server.assert_called_once_with(
|
|
6562
6596
|
self.server, self.image, metadata=expected_properties
|
|
6563
6597
|
)
|
|
6564
6598
|
|
|
@@ -6579,14 +6613,14 @@ class TestServerRebuild(TestServer):
|
|
|
6579
6613
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
6580
6614
|
self.cmd.take_action(parsed_args)
|
|
6581
6615
|
|
|
6582
|
-
self.
|
|
6616
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6583
6617
|
self.server.id, ignore_missing=False
|
|
6584
6618
|
)
|
|
6585
6619
|
self.image_client.find_image.assert_not_called()
|
|
6586
6620
|
self.image_client.get_image.assert_has_calls(
|
|
6587
6621
|
[mock.call(self.image.id), mock.call(self.image.id)]
|
|
6588
6622
|
)
|
|
6589
|
-
self.
|
|
6623
|
+
self.compute_client.rebuild_server.assert_called_once_with(
|
|
6590
6624
|
self.server, self.image, key_name=self.server.key_name
|
|
6591
6625
|
)
|
|
6592
6626
|
|
|
@@ -6624,14 +6658,14 @@ class TestServerRebuild(TestServer):
|
|
|
6624
6658
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
6625
6659
|
self.cmd.take_action(parsed_args)
|
|
6626
6660
|
|
|
6627
|
-
self.
|
|
6661
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6628
6662
|
self.server.id, ignore_missing=False
|
|
6629
6663
|
)
|
|
6630
6664
|
self.image_client.find_image.assert_not_called()
|
|
6631
6665
|
self.image_client.get_image.assert_has_calls(
|
|
6632
6666
|
[mock.call(self.image.id), mock.call(self.image.id)]
|
|
6633
6667
|
)
|
|
6634
|
-
self.
|
|
6668
|
+
self.compute_client.rebuild_server.assert_called_once_with(
|
|
6635
6669
|
self.server, self.image, key_name=None
|
|
6636
6670
|
)
|
|
6637
6671
|
|
|
@@ -6679,14 +6713,14 @@ class TestServerRebuild(TestServer):
|
|
|
6679
6713
|
# Ensure the userdata file is opened
|
|
6680
6714
|
mock_file.assert_called_with('userdata.sh', 'rb')
|
|
6681
6715
|
|
|
6682
|
-
self.
|
|
6716
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6683
6717
|
self.server.id, ignore_missing=False
|
|
6684
6718
|
)
|
|
6685
6719
|
self.image_client.find_image.assert_not_called()
|
|
6686
6720
|
self.image_client.get_image.assert_has_calls(
|
|
6687
6721
|
[mock.call(self.image.id), mock.call(self.image.id)]
|
|
6688
6722
|
)
|
|
6689
|
-
self.
|
|
6723
|
+
self.compute_client.rebuild_server.assert_called_once_with(
|
|
6690
6724
|
self.server,
|
|
6691
6725
|
self.image,
|
|
6692
6726
|
user_data=base64.b64encode(user_data).decode('utf-8'),
|
|
@@ -6726,14 +6760,14 @@ class TestServerRebuild(TestServer):
|
|
|
6726
6760
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
6727
6761
|
self.cmd.take_action(parsed_args)
|
|
6728
6762
|
|
|
6729
|
-
self.
|
|
6763
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6730
6764
|
self.server.id, ignore_missing=False
|
|
6731
6765
|
)
|
|
6732
6766
|
self.image_client.find_image.assert_not_called()
|
|
6733
6767
|
self.image_client.get_image.assert_has_calls(
|
|
6734
6768
|
[mock.call(self.image.id), mock.call(self.image.id)]
|
|
6735
6769
|
)
|
|
6736
|
-
self.
|
|
6770
|
+
self.compute_client.rebuild_server.assert_called_once_with(
|
|
6737
6771
|
self.server, self.image, user_data=None
|
|
6738
6772
|
)
|
|
6739
6773
|
|
|
@@ -6787,14 +6821,14 @@ class TestServerRebuild(TestServer):
|
|
|
6787
6821
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
6788
6822
|
self.cmd.take_action(parsed_args)
|
|
6789
6823
|
|
|
6790
|
-
self.
|
|
6824
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6791
6825
|
self.server.id, ignore_missing=False
|
|
6792
6826
|
)
|
|
6793
6827
|
self.image_client.find_image.assert_not_called()
|
|
6794
6828
|
self.image_client.get_image.assert_has_calls(
|
|
6795
6829
|
[mock.call(self.image.id), mock.call(self.image.id)]
|
|
6796
6830
|
)
|
|
6797
|
-
self.
|
|
6831
|
+
self.compute_client.rebuild_server.assert_called_once_with(
|
|
6798
6832
|
self.server, self.image, trusted_image_certificates=['foo', 'bar']
|
|
6799
6833
|
)
|
|
6800
6834
|
|
|
@@ -6833,14 +6867,14 @@ class TestServerRebuild(TestServer):
|
|
|
6833
6867
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
6834
6868
|
self.cmd.take_action(parsed_args)
|
|
6835
6869
|
|
|
6836
|
-
self.
|
|
6870
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6837
6871
|
self.server.id, ignore_missing=False
|
|
6838
6872
|
)
|
|
6839
6873
|
self.image_client.find_image.assert_not_called()
|
|
6840
6874
|
self.image_client.get_image.assert_has_calls(
|
|
6841
6875
|
[mock.call(self.image.id), mock.call(self.image.id)]
|
|
6842
6876
|
)
|
|
6843
|
-
self.
|
|
6877
|
+
self.compute_client.rebuild_server.assert_called_once_with(
|
|
6844
6878
|
self.server, self.image, trusted_image_certificates=None
|
|
6845
6879
|
)
|
|
6846
6880
|
|
|
@@ -6877,14 +6911,14 @@ class TestServerRebuild(TestServer):
|
|
|
6877
6911
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
6878
6912
|
self.cmd.take_action(parsed_args)
|
|
6879
6913
|
|
|
6880
|
-
self.
|
|
6914
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6881
6915
|
self.server.id, ignore_missing=False
|
|
6882
6916
|
)
|
|
6883
6917
|
self.image_client.find_image.assert_not_called()
|
|
6884
6918
|
self.image_client.get_image.assert_has_calls(
|
|
6885
6919
|
[mock.call(self.image.id), mock.call(self.image.id)]
|
|
6886
6920
|
)
|
|
6887
|
-
self.
|
|
6921
|
+
self.compute_client.rebuild_server.assert_called_once_with(
|
|
6888
6922
|
self.server, self.image, hostname='new-hostname'
|
|
6889
6923
|
)
|
|
6890
6924
|
|
|
@@ -6915,9 +6949,9 @@ class TestServerRebuildVolumeBacked(TestServer):
|
|
|
6915
6949
|
'status': 'ACTIVE',
|
|
6916
6950
|
'image': '',
|
|
6917
6951
|
}
|
|
6918
|
-
self.server = compute_fakes.
|
|
6919
|
-
self.
|
|
6920
|
-
self.
|
|
6952
|
+
self.server = compute_fakes.create_one_server(attrs=attrs)
|
|
6953
|
+
self.compute_client.find_server.return_value = self.server
|
|
6954
|
+
self.compute_client.rebuild_server.return_value = self.server
|
|
6921
6955
|
|
|
6922
6956
|
self.cmd = server.RebuildServer(self.app, None)
|
|
6923
6957
|
|
|
@@ -6939,14 +6973,14 @@ class TestServerRebuildVolumeBacked(TestServer):
|
|
|
6939
6973
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
6940
6974
|
self.cmd.take_action(parsed_args)
|
|
6941
6975
|
|
|
6942
|
-
self.
|
|
6976
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
6943
6977
|
self.server.id, ignore_missing=False
|
|
6944
6978
|
)
|
|
6945
6979
|
self.image_client.find_image.assert_called_with(
|
|
6946
6980
|
self.new_image.id, ignore_missing=False
|
|
6947
6981
|
)
|
|
6948
6982
|
self.image_client.get_image.assert_not_called()
|
|
6949
|
-
self.
|
|
6983
|
+
self.compute_client.rebuild_server.assert_called_once_with(
|
|
6950
6984
|
self.server, self.new_image
|
|
6951
6985
|
)
|
|
6952
6986
|
|
|
@@ -7005,14 +7039,15 @@ class TestServerEvacuate(TestServer):
|
|
|
7005
7039
|
'image': self.image,
|
|
7006
7040
|
'networks': {},
|
|
7007
7041
|
'adminPass': 'passw0rd',
|
|
7042
|
+
'status': 'ACTIVE',
|
|
7008
7043
|
}
|
|
7009
|
-
self.server = compute_fakes.
|
|
7044
|
+
self.server = compute_fakes.create_one_server(attrs=attrs)
|
|
7010
7045
|
attrs['id'] = self.server.id
|
|
7011
|
-
self.new_server = compute_fakes.
|
|
7046
|
+
self.new_server = compute_fakes.create_one_server(attrs=attrs)
|
|
7012
7047
|
|
|
7013
7048
|
# Return value for utils.find_resource for server.
|
|
7014
|
-
self.
|
|
7015
|
-
self.
|
|
7049
|
+
self.compute_client.find_server.return_value = self.server
|
|
7050
|
+
self.compute_client.get_server.return_value = self.server
|
|
7016
7051
|
|
|
7017
7052
|
self.cmd = server.EvacuateServer(self.app, None)
|
|
7018
7053
|
|
|
@@ -7020,15 +7055,13 @@ class TestServerEvacuate(TestServer):
|
|
|
7020
7055
|
parsed_args = self.check_parser(self.cmd, args, verify_args)
|
|
7021
7056
|
self.cmd.take_action(parsed_args)
|
|
7022
7057
|
|
|
7023
|
-
self.
|
|
7058
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
7024
7059
|
self.server.id, ignore_missing=False
|
|
7025
7060
|
)
|
|
7026
|
-
self.
|
|
7061
|
+
self.compute_client.evacuate_server.assert_called_once_with(
|
|
7027
7062
|
self.server, **evac_args
|
|
7028
7063
|
)
|
|
7029
|
-
self.
|
|
7030
|
-
self.server.id
|
|
7031
|
-
)
|
|
7064
|
+
self.compute_client.get_server.assert_called_once_with(self.server.id)
|
|
7032
7065
|
|
|
7033
7066
|
def test_evacuate(self):
|
|
7034
7067
|
args = [
|
|
@@ -7142,8 +7175,35 @@ class TestServerEvacuate(TestServer):
|
|
|
7142
7175
|
}
|
|
7143
7176
|
self._test_evacuate(args, verify_args, evac_args)
|
|
7144
7177
|
mock_wait_for_status.assert_called_once_with(
|
|
7145
|
-
self.
|
|
7178
|
+
self.compute_client.get_server,
|
|
7146
7179
|
self.server.id,
|
|
7180
|
+
success_status=['ACTIVE'],
|
|
7181
|
+
callback=mock.ANY,
|
|
7182
|
+
)
|
|
7183
|
+
|
|
7184
|
+
@mock.patch.object(common_utils, 'wait_for_status', return_value=True)
|
|
7185
|
+
def test_evacuate_with_wait_ok_shutoff(self, mock_wait_for_status):
|
|
7186
|
+
self.server.status = 'SHUTOFF'
|
|
7187
|
+
self.compute_client.get_server.return_value = self.server
|
|
7188
|
+
|
|
7189
|
+
args = [
|
|
7190
|
+
self.server.id,
|
|
7191
|
+
'--wait',
|
|
7192
|
+
]
|
|
7193
|
+
verify_args = [
|
|
7194
|
+
('server', self.server.id),
|
|
7195
|
+
('wait', True),
|
|
7196
|
+
]
|
|
7197
|
+
evac_args = {
|
|
7198
|
+
'host': None,
|
|
7199
|
+
'on_shared_storage': False,
|
|
7200
|
+
'admin_pass': None,
|
|
7201
|
+
}
|
|
7202
|
+
self._test_evacuate(args, verify_args, evac_args)
|
|
7203
|
+
mock_wait_for_status.assert_called_once_with(
|
|
7204
|
+
self.compute_client.get_server,
|
|
7205
|
+
self.server.id,
|
|
7206
|
+
success_status=['ACTIVE', 'SHUTOFF'],
|
|
7147
7207
|
callback=mock.ANY,
|
|
7148
7208
|
)
|
|
7149
7209
|
|
|
@@ -7152,7 +7212,7 @@ class TestServerRemoveFixedIP(compute_fakes.TestComputev2):
|
|
|
7152
7212
|
def setUp(self):
|
|
7153
7213
|
super().setUp()
|
|
7154
7214
|
|
|
7155
|
-
self.server = compute_fakes.
|
|
7215
|
+
self.server = compute_fakes.create_one_server()
|
|
7156
7216
|
|
|
7157
7217
|
# Get the command object to test
|
|
7158
7218
|
self.cmd = server.RemoveFixedIP(self.app, None)
|
|
@@ -7170,12 +7230,10 @@ class TestServerRemoveFixedIP(compute_fakes.TestComputev2):
|
|
|
7170
7230
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
7171
7231
|
result = self.cmd.take_action(parsed_args)
|
|
7172
7232
|
|
|
7173
|
-
self.
|
|
7233
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
7174
7234
|
self.server.id, ignore_missing=False
|
|
7175
7235
|
)
|
|
7176
|
-
self.
|
|
7177
|
-
self.server, '1.2.3.4'
|
|
7178
|
-
)
|
|
7236
|
+
self.compute_client.remove_fixed_ip_from_server(self.server, '1.2.3.4')
|
|
7179
7237
|
self.assertIsNone(result)
|
|
7180
7238
|
|
|
7181
7239
|
|
|
@@ -7183,8 +7241,8 @@ class TestServerRescue(compute_fakes.TestComputev2):
|
|
|
7183
7241
|
def setUp(self):
|
|
7184
7242
|
super().setUp()
|
|
7185
7243
|
|
|
7186
|
-
self.server = compute_fakes.
|
|
7187
|
-
self.
|
|
7244
|
+
self.server = compute_fakes.create_one_server()
|
|
7245
|
+
self.compute_client.find_server.return_value = self.server
|
|
7188
7246
|
|
|
7189
7247
|
self.cmd = server.RescueServer(self.app, None)
|
|
7190
7248
|
|
|
@@ -7199,10 +7257,10 @@ class TestServerRescue(compute_fakes.TestComputev2):
|
|
|
7199
7257
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
7200
7258
|
result = self.cmd.take_action(parsed_args)
|
|
7201
7259
|
|
|
7202
|
-
self.
|
|
7260
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
7203
7261
|
self.server.id, ignore_missing=False
|
|
7204
7262
|
)
|
|
7205
|
-
self.
|
|
7263
|
+
self.compute_client.rescue_server.assert_called_once_with(
|
|
7206
7264
|
self.server, admin_pass=None, image_ref=None
|
|
7207
7265
|
)
|
|
7208
7266
|
self.assertIsNone(result)
|
|
@@ -7226,10 +7284,10 @@ class TestServerRescue(compute_fakes.TestComputev2):
|
|
|
7226
7284
|
self.image_client.find_image.assert_called_with(
|
|
7227
7285
|
new_image.id, ignore_missing=False
|
|
7228
7286
|
)
|
|
7229
|
-
self.
|
|
7287
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
7230
7288
|
self.server.id, ignore_missing=False
|
|
7231
7289
|
)
|
|
7232
|
-
self.
|
|
7290
|
+
self.compute_client.rescue_server.assert_called_once_with(
|
|
7233
7291
|
self.server, admin_pass=None, image_ref=new_image.id
|
|
7234
7292
|
)
|
|
7235
7293
|
self.assertIsNone(result)
|
|
@@ -7249,10 +7307,10 @@ class TestServerRescue(compute_fakes.TestComputev2):
|
|
|
7249
7307
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
7250
7308
|
result = self.cmd.take_action(parsed_args)
|
|
7251
7309
|
|
|
7252
|
-
self.
|
|
7310
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
7253
7311
|
self.server.id, ignore_missing=False
|
|
7254
7312
|
)
|
|
7255
|
-
self.
|
|
7313
|
+
self.compute_client.rescue_server.assert_called_once_with(
|
|
7256
7314
|
self.server, admin_pass=password, image_ref=None
|
|
7257
7315
|
)
|
|
7258
7316
|
self.assertIsNone(result)
|
|
@@ -7263,8 +7321,8 @@ class TestServerRemoveFloatingIPCompute(compute_fakes.TestComputev2):
|
|
|
7263
7321
|
super().setUp()
|
|
7264
7322
|
|
|
7265
7323
|
self.app.client_manager.network_endpoint_enabled = False
|
|
7266
|
-
self.server = compute_fakes.
|
|
7267
|
-
self.
|
|
7324
|
+
self.server = compute_fakes.create_one_server()
|
|
7325
|
+
self.compute_client.find_server.return_value = self.server
|
|
7268
7326
|
|
|
7269
7327
|
self.cmd = server.RemoveFloatingIP(self.app, None)
|
|
7270
7328
|
|
|
@@ -7281,10 +7339,10 @@ class TestServerRemoveFloatingIPCompute(compute_fakes.TestComputev2):
|
|
|
7281
7339
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
7282
7340
|
self.cmd.take_action(parsed_args)
|
|
7283
7341
|
|
|
7284
|
-
self.
|
|
7342
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
7285
7343
|
self.server.name, ignore_missing=False
|
|
7286
7344
|
)
|
|
7287
|
-
self.
|
|
7345
|
+
self.compute_client.remove_floating_ip_from_server.assert_called_once_with(
|
|
7288
7346
|
self.server, '1.2.3.4'
|
|
7289
7347
|
)
|
|
7290
7348
|
|
|
@@ -7352,7 +7410,7 @@ class TestServerRemovePort(TestServer):
|
|
|
7352
7410
|
|
|
7353
7411
|
result = self.cmd.take_action(parsed_args)
|
|
7354
7412
|
|
|
7355
|
-
self.
|
|
7413
|
+
self.compute_client.delete_server_interface.assert_called_with(
|
|
7356
7414
|
port_id, server=servers[0], ignore_missing=False
|
|
7357
7415
|
)
|
|
7358
7416
|
self.assertIsNone(result)
|
|
@@ -7381,9 +7439,7 @@ class TestServerRemoveNetwork(TestServer):
|
|
|
7381
7439
|
|
|
7382
7440
|
self.find_network = mock.Mock()
|
|
7383
7441
|
self.app.client_manager.network.find_network = self.find_network
|
|
7384
|
-
self.
|
|
7385
|
-
self.fake_inf
|
|
7386
|
-
]
|
|
7442
|
+
self.compute_client.server_interfaces.return_value = [self.fake_inf]
|
|
7387
7443
|
|
|
7388
7444
|
def _test_server_remove_network(self, network_id):
|
|
7389
7445
|
self.fake_inf.net_id = network_id
|
|
@@ -7403,10 +7459,10 @@ class TestServerRemoveNetwork(TestServer):
|
|
|
7403
7459
|
|
|
7404
7460
|
result = self.cmd.take_action(parsed_args)
|
|
7405
7461
|
|
|
7406
|
-
self.
|
|
7462
|
+
self.compute_client.server_interfaces.assert_called_once_with(
|
|
7407
7463
|
servers[0]
|
|
7408
7464
|
)
|
|
7409
|
-
self.
|
|
7465
|
+
self.compute_client.delete_server_interface.assert_called_once_with(
|
|
7410
7466
|
'fake-port', server=servers[0]
|
|
7411
7467
|
)
|
|
7412
7468
|
self.assertIsNone(result)
|
|
@@ -7427,9 +7483,11 @@ class TestServerRemoveSecurityGroup(TestServer):
|
|
|
7427
7483
|
def setUp(self):
|
|
7428
7484
|
super().setUp()
|
|
7429
7485
|
|
|
7430
|
-
self.server = compute_fakes.
|
|
7431
|
-
self.
|
|
7432
|
-
self.
|
|
7486
|
+
self.server = compute_fakes.create_one_server()
|
|
7487
|
+
self.compute_client.find_server.return_value = self.server
|
|
7488
|
+
self.compute_client.remove_security_group_from_server.return_value = (
|
|
7489
|
+
None
|
|
7490
|
+
)
|
|
7433
7491
|
|
|
7434
7492
|
# Get the command object to test
|
|
7435
7493
|
self.cmd = server.RemoveServerSecurityGroup(self.app, None)
|
|
@@ -7454,14 +7512,14 @@ class TestServerRemoveSecurityGroup(TestServer):
|
|
|
7454
7512
|
) as mock_find_nova_net_sg:
|
|
7455
7513
|
result = self.cmd.take_action(parsed_args)
|
|
7456
7514
|
|
|
7457
|
-
self.
|
|
7515
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
7458
7516
|
self.server.id, ignore_missing=False
|
|
7459
7517
|
)
|
|
7460
|
-
self.
|
|
7518
|
+
self.compute_client.remove_security_group_from_server.assert_called_once_with(
|
|
7461
7519
|
self.server, {'name': 'fake_sg'}
|
|
7462
7520
|
)
|
|
7463
7521
|
mock_find_nova_net_sg.assert_called_once_with(
|
|
7464
|
-
self.
|
|
7522
|
+
self.compute_client, 'fake_sg'
|
|
7465
7523
|
)
|
|
7466
7524
|
self.assertIsNone(result)
|
|
7467
7525
|
|
|
@@ -7475,10 +7533,10 @@ class TestServerRemoveSecurityGroup(TestServer):
|
|
|
7475
7533
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
7476
7534
|
result = self.cmd.take_action(parsed_args)
|
|
7477
7535
|
|
|
7478
|
-
self.
|
|
7536
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
7479
7537
|
self.server.id, ignore_missing=False
|
|
7480
7538
|
)
|
|
7481
|
-
self.
|
|
7539
|
+
self.compute_client.remove_security_group_from_server.assert_called_once_with(
|
|
7482
7540
|
self.server, {'name': 'fake_sg'}
|
|
7483
7541
|
)
|
|
7484
7542
|
self.assertIsNone(result)
|
|
@@ -7488,13 +7546,13 @@ class TestServerResize(compute_fakes.TestComputev2):
|
|
|
7488
7546
|
def setUp(self):
|
|
7489
7547
|
super().setUp()
|
|
7490
7548
|
|
|
7491
|
-
self.server = compute_fakes.
|
|
7492
|
-
self.
|
|
7549
|
+
self.server = compute_fakes.create_one_server()
|
|
7550
|
+
self.compute_client.find_server.return_value = self.server
|
|
7493
7551
|
self.flavor = compute_fakes.create_one_flavor()
|
|
7494
|
-
self.
|
|
7495
|
-
self.
|
|
7496
|
-
self.
|
|
7497
|
-
self.
|
|
7552
|
+
self.compute_client.find_flavor.return_value = self.flavor
|
|
7553
|
+
self.compute_client.resize_server.return_value = None
|
|
7554
|
+
self.compute_client.revert_server_resize.return_value = None
|
|
7555
|
+
self.compute_client.confirm_server_resize.return_value = None
|
|
7498
7556
|
|
|
7499
7557
|
# Get the command object to test
|
|
7500
7558
|
self.cmd = server.ResizeServer(self.app, None)
|
|
@@ -7512,11 +7570,11 @@ class TestServerResize(compute_fakes.TestComputev2):
|
|
|
7512
7570
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
7513
7571
|
result = self.cmd.take_action(parsed_args)
|
|
7514
7572
|
|
|
7515
|
-
self.
|
|
7573
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
7516
7574
|
self.server.id, ignore_missing=False
|
|
7517
7575
|
)
|
|
7518
|
-
self.
|
|
7519
|
-
self.
|
|
7576
|
+
self.compute_client.find_flavor.assert_not_called()
|
|
7577
|
+
self.compute_client.resize_server.assert_not_called()
|
|
7520
7578
|
self.assertIsNone(result)
|
|
7521
7579
|
|
|
7522
7580
|
def test_server_resize(self):
|
|
@@ -7535,17 +7593,17 @@ class TestServerResize(compute_fakes.TestComputev2):
|
|
|
7535
7593
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
7536
7594
|
result = self.cmd.take_action(parsed_args)
|
|
7537
7595
|
|
|
7538
|
-
self.
|
|
7596
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
7539
7597
|
self.server.id, ignore_missing=False
|
|
7540
7598
|
)
|
|
7541
|
-
self.
|
|
7599
|
+
self.compute_client.find_flavor.assert_called_once_with(
|
|
7542
7600
|
self.flavor.id, ignore_missing=False
|
|
7543
7601
|
)
|
|
7544
|
-
self.
|
|
7602
|
+
self.compute_client.resize_server.assert_called_once_with(
|
|
7545
7603
|
self.server, self.flavor
|
|
7546
7604
|
)
|
|
7547
|
-
self.
|
|
7548
|
-
self.
|
|
7605
|
+
self.compute_client.confirm_server_resize.assert_not_called()
|
|
7606
|
+
self.compute_client.revert_server_resize.assert_not_called()
|
|
7549
7607
|
self.assertIsNone(result)
|
|
7550
7608
|
|
|
7551
7609
|
def test_server_resize_confirm(self):
|
|
@@ -7563,15 +7621,15 @@ class TestServerResize(compute_fakes.TestComputev2):
|
|
|
7563
7621
|
with mock.patch.object(self.cmd.log, 'warning') as mock_warning:
|
|
7564
7622
|
result = self.cmd.take_action(parsed_args)
|
|
7565
7623
|
|
|
7566
|
-
self.
|
|
7624
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
7567
7625
|
self.server.id, ignore_missing=False
|
|
7568
7626
|
)
|
|
7569
|
-
self.
|
|
7570
|
-
self.
|
|
7571
|
-
self.
|
|
7627
|
+
self.compute_client.find_flavor.assert_not_called()
|
|
7628
|
+
self.compute_client.resize_server.assert_not_called()
|
|
7629
|
+
self.compute_client.confirm_server_resize.assert_called_once_with(
|
|
7572
7630
|
self.server
|
|
7573
7631
|
)
|
|
7574
|
-
self.
|
|
7632
|
+
self.compute_client.revert_server_resize.assert_not_called()
|
|
7575
7633
|
self.assertIsNone(result)
|
|
7576
7634
|
|
|
7577
7635
|
# A warning should have been logged for using --confirm.
|
|
@@ -7596,13 +7654,13 @@ class TestServerResize(compute_fakes.TestComputev2):
|
|
|
7596
7654
|
with mock.patch.object(self.cmd.log, 'warning') as mock_warning:
|
|
7597
7655
|
result = self.cmd.take_action(parsed_args)
|
|
7598
7656
|
|
|
7599
|
-
self.
|
|
7657
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
7600
7658
|
self.server.id, ignore_missing=False
|
|
7601
7659
|
)
|
|
7602
|
-
self.
|
|
7603
|
-
self.
|
|
7604
|
-
self.
|
|
7605
|
-
self.
|
|
7660
|
+
self.compute_client.find_flavor.assert_not_called()
|
|
7661
|
+
self.compute_client.resize_server.assert_not_called()
|
|
7662
|
+
self.compute_client.confirm_server_resize.assert_not_called()
|
|
7663
|
+
self.compute_client.revert_server_resize.assert_called_once_with(
|
|
7606
7664
|
self.server
|
|
7607
7665
|
)
|
|
7608
7666
|
self.assertIsNone(result)
|
|
@@ -7632,20 +7690,20 @@ class TestServerResize(compute_fakes.TestComputev2):
|
|
|
7632
7690
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
7633
7691
|
self.cmd.take_action(parsed_args)
|
|
7634
7692
|
|
|
7635
|
-
self.
|
|
7693
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
7636
7694
|
self.server.id, ignore_missing=False
|
|
7637
7695
|
)
|
|
7638
|
-
self.
|
|
7696
|
+
self.compute_client.find_flavor.assert_called_once_with(
|
|
7639
7697
|
self.flavor.id, ignore_missing=False
|
|
7640
7698
|
)
|
|
7641
|
-
self.
|
|
7699
|
+
self.compute_client.resize_server.assert_called_once_with(
|
|
7642
7700
|
self.server, self.flavor
|
|
7643
7701
|
)
|
|
7644
|
-
self.
|
|
7645
|
-
self.
|
|
7702
|
+
self.compute_client.confirm_server_resize.assert_not_called()
|
|
7703
|
+
self.compute_client.revert_server_resize.assert_not_called()
|
|
7646
7704
|
|
|
7647
7705
|
mock_wait_for_status.assert_called_once_with(
|
|
7648
|
-
self.
|
|
7706
|
+
self.compute_client.get_server,
|
|
7649
7707
|
self.server.id,
|
|
7650
7708
|
success_status=('active', 'verify_resize'),
|
|
7651
7709
|
callback=mock.ANY,
|
|
@@ -7672,20 +7730,20 @@ class TestServerResize(compute_fakes.TestComputev2):
|
|
|
7672
7730
|
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
7673
7731
|
)
|
|
7674
7732
|
|
|
7675
|
-
self.
|
|
7733
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
7676
7734
|
self.server.id, ignore_missing=False
|
|
7677
7735
|
)
|
|
7678
|
-
self.
|
|
7736
|
+
self.compute_client.find_flavor.assert_called_once_with(
|
|
7679
7737
|
self.flavor.id, ignore_missing=False
|
|
7680
7738
|
)
|
|
7681
|
-
self.
|
|
7739
|
+
self.compute_client.resize_server.assert_called_once_with(
|
|
7682
7740
|
self.server, self.flavor
|
|
7683
7741
|
)
|
|
7684
|
-
self.
|
|
7685
|
-
self.
|
|
7742
|
+
self.compute_client.confirm_server_resize.assert_not_called()
|
|
7743
|
+
self.compute_client.revert_server_resize.assert_not_called()
|
|
7686
7744
|
|
|
7687
7745
|
mock_wait_for_status.assert_called_once_with(
|
|
7688
|
-
self.
|
|
7746
|
+
self.compute_client.get_server,
|
|
7689
7747
|
self.server.id,
|
|
7690
7748
|
success_status=('active', 'verify_resize'),
|
|
7691
7749
|
callback=mock.ANY,
|
|
@@ -7696,9 +7754,9 @@ class TestServerResizeConfirm(compute_fakes.TestComputev2):
|
|
|
7696
7754
|
def setUp(self):
|
|
7697
7755
|
super().setUp()
|
|
7698
7756
|
|
|
7699
|
-
self.server = compute_fakes.
|
|
7700
|
-
self.
|
|
7701
|
-
self.
|
|
7757
|
+
self.server = compute_fakes.create_one_server()
|
|
7758
|
+
self.compute_client.find_server.return_value = self.server
|
|
7759
|
+
self.compute_client.confirm_server_resize.return_value = None
|
|
7702
7760
|
|
|
7703
7761
|
# Get the command object to test
|
|
7704
7762
|
self.cmd = server.ResizeConfirm(self.app, None)
|
|
@@ -7714,10 +7772,10 @@ class TestServerResizeConfirm(compute_fakes.TestComputev2):
|
|
|
7714
7772
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
7715
7773
|
result = self.cmd.take_action(parsed_args)
|
|
7716
7774
|
|
|
7717
|
-
self.
|
|
7775
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
7718
7776
|
self.server.id, ignore_missing=False
|
|
7719
7777
|
)
|
|
7720
|
-
self.
|
|
7778
|
+
self.compute_client.confirm_server_resize.assert_called_once_with(
|
|
7721
7779
|
self.server
|
|
7722
7780
|
)
|
|
7723
7781
|
self.assertIsNone(result)
|
|
@@ -7728,9 +7786,9 @@ class TestServerMigrateConfirm(compute_fakes.TestComputev2):
|
|
|
7728
7786
|
def setUp(self):
|
|
7729
7787
|
super().setUp()
|
|
7730
7788
|
|
|
7731
|
-
self.server = compute_fakes.
|
|
7732
|
-
self.
|
|
7733
|
-
self.
|
|
7789
|
+
self.server = compute_fakes.create_one_server()
|
|
7790
|
+
self.compute_client.find_server.return_value = self.server
|
|
7791
|
+
self.compute_client.confirm_server_resize.return_value = None
|
|
7734
7792
|
|
|
7735
7793
|
# Get the command object to test
|
|
7736
7794
|
self.cmd = server.MigrateConfirm(self.app, None)
|
|
@@ -7747,10 +7805,10 @@ class TestServerMigrateConfirm(compute_fakes.TestComputev2):
|
|
|
7747
7805
|
with mock.patch.object(self.cmd.log, 'warning') as mock_warning:
|
|
7748
7806
|
result = self.cmd.take_action(parsed_args)
|
|
7749
7807
|
|
|
7750
|
-
self.
|
|
7808
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
7751
7809
|
self.server.id, ignore_missing=False
|
|
7752
7810
|
)
|
|
7753
|
-
self.
|
|
7811
|
+
self.compute_client.confirm_server_resize.assert_called_once_with(
|
|
7754
7812
|
self.server
|
|
7755
7813
|
)
|
|
7756
7814
|
self.assertIsNone(result)
|
|
@@ -7766,9 +7824,9 @@ class TestServerConfirmMigration(compute_fakes.TestComputev2):
|
|
|
7766
7824
|
def setUp(self):
|
|
7767
7825
|
super().setUp()
|
|
7768
7826
|
|
|
7769
|
-
self.server = compute_fakes.
|
|
7770
|
-
self.
|
|
7771
|
-
self.
|
|
7827
|
+
self.server = compute_fakes.create_one_server()
|
|
7828
|
+
self.compute_client.find_server.return_value = self.server
|
|
7829
|
+
self.compute_client.confirm_server_resize.return_value = None
|
|
7772
7830
|
|
|
7773
7831
|
# Get the command object to test
|
|
7774
7832
|
self.cmd = server.ConfirmMigration(self.app, None)
|
|
@@ -7784,10 +7842,10 @@ class TestServerConfirmMigration(compute_fakes.TestComputev2):
|
|
|
7784
7842
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
7785
7843
|
result = self.cmd.take_action(parsed_args)
|
|
7786
7844
|
|
|
7787
|
-
self.
|
|
7845
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
7788
7846
|
self.server.id, ignore_missing=False
|
|
7789
7847
|
)
|
|
7790
|
-
self.
|
|
7848
|
+
self.compute_client.confirm_server_resize.assert_called_once_with(
|
|
7791
7849
|
self.server
|
|
7792
7850
|
)
|
|
7793
7851
|
self.assertIsNone(result)
|
|
@@ -7797,9 +7855,9 @@ class TestServerResizeRevert(compute_fakes.TestComputev2):
|
|
|
7797
7855
|
def setUp(self):
|
|
7798
7856
|
super().setUp()
|
|
7799
7857
|
|
|
7800
|
-
self.server = compute_fakes.
|
|
7801
|
-
self.
|
|
7802
|
-
self.
|
|
7858
|
+
self.server = compute_fakes.create_one_server()
|
|
7859
|
+
self.compute_client.find_server.return_value = self.server
|
|
7860
|
+
self.compute_client.revert_server_resize.return_value = None
|
|
7803
7861
|
|
|
7804
7862
|
# Get the command object to test
|
|
7805
7863
|
self.cmd = server.ResizeRevert(self.app, None)
|
|
@@ -7815,10 +7873,10 @@ class TestServerResizeRevert(compute_fakes.TestComputev2):
|
|
|
7815
7873
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
7816
7874
|
result = self.cmd.take_action(parsed_args)
|
|
7817
7875
|
|
|
7818
|
-
self.
|
|
7876
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
7819
7877
|
self.server.id, ignore_missing=False
|
|
7820
7878
|
)
|
|
7821
|
-
self.
|
|
7879
|
+
self.compute_client.revert_server_resize.assert_called_once_with(
|
|
7822
7880
|
self.server
|
|
7823
7881
|
)
|
|
7824
7882
|
self.assertIsNone(result)
|
|
@@ -7829,9 +7887,9 @@ class TestServerMigrateRevert(compute_fakes.TestComputev2):
|
|
|
7829
7887
|
def setUp(self):
|
|
7830
7888
|
super().setUp()
|
|
7831
7889
|
|
|
7832
|
-
self.server = compute_fakes.
|
|
7833
|
-
self.
|
|
7834
|
-
self.
|
|
7890
|
+
self.server = compute_fakes.create_one_server()
|
|
7891
|
+
self.compute_client.find_server.return_value = self.server
|
|
7892
|
+
self.compute_client.revert_server_resize.return_value = None
|
|
7835
7893
|
|
|
7836
7894
|
# Get the command object to test
|
|
7837
7895
|
self.cmd = server.MigrateRevert(self.app, None)
|
|
@@ -7848,10 +7906,10 @@ class TestServerMigrateRevert(compute_fakes.TestComputev2):
|
|
|
7848
7906
|
with mock.patch.object(self.cmd.log, 'warning') as mock_warning:
|
|
7849
7907
|
result = self.cmd.take_action(parsed_args)
|
|
7850
7908
|
|
|
7851
|
-
self.
|
|
7909
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
7852
7910
|
self.server.id, ignore_missing=False
|
|
7853
7911
|
)
|
|
7854
|
-
self.
|
|
7912
|
+
self.compute_client.revert_server_resize.assert_called_once_with(
|
|
7855
7913
|
self.server
|
|
7856
7914
|
)
|
|
7857
7915
|
self.assertIsNone(result)
|
|
@@ -7867,9 +7925,9 @@ class TestServerRevertMigration(compute_fakes.TestComputev2):
|
|
|
7867
7925
|
def setUp(self):
|
|
7868
7926
|
super().setUp()
|
|
7869
7927
|
|
|
7870
|
-
self.server = compute_fakes.
|
|
7871
|
-
self.
|
|
7872
|
-
self.
|
|
7928
|
+
self.server = compute_fakes.create_one_server()
|
|
7929
|
+
self.compute_client.find_server.return_value = self.server
|
|
7930
|
+
self.compute_client.revert_server_resize.return_value = None
|
|
7873
7931
|
|
|
7874
7932
|
# Get the command object to test
|
|
7875
7933
|
self.cmd = server.RevertMigration(self.app, None)
|
|
@@ -7885,10 +7943,10 @@ class TestServerRevertMigration(compute_fakes.TestComputev2):
|
|
|
7885
7943
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
7886
7944
|
result = self.cmd.take_action(parsed_args)
|
|
7887
7945
|
|
|
7888
|
-
self.
|
|
7946
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
7889
7947
|
self.server.id, ignore_missing=False
|
|
7890
7948
|
)
|
|
7891
|
-
self.
|
|
7949
|
+
self.compute_client.revert_server_resize.assert_called_once_with(
|
|
7892
7950
|
self.server
|
|
7893
7951
|
)
|
|
7894
7952
|
self.assertIsNone(result)
|
|
@@ -7926,8 +7984,8 @@ class TestServerSet(TestServer):
|
|
|
7926
7984
|
def setUp(self):
|
|
7927
7985
|
super().setUp()
|
|
7928
7986
|
|
|
7929
|
-
self.server = compute_fakes.
|
|
7930
|
-
self.
|
|
7987
|
+
self.server = compute_fakes.create_one_server()
|
|
7988
|
+
self.compute_client.find_server.return_value = self.server
|
|
7931
7989
|
|
|
7932
7990
|
# Get the command object to test
|
|
7933
7991
|
self.cmd = server.SetServer(self.app, None)
|
|
@@ -7939,18 +7997,19 @@ class TestServerSet(TestServer):
|
|
|
7939
7997
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
7940
7998
|
result = self.cmd.take_action(parsed_args)
|
|
7941
7999
|
|
|
7942
|
-
self.
|
|
7943
|
-
self.
|
|
7944
|
-
self.
|
|
7945
|
-
self.
|
|
7946
|
-
self.
|
|
7947
|
-
self.
|
|
8000
|
+
self.compute_client.update_server.assert_not_called()
|
|
8001
|
+
self.compute_client.set_server_metadata.assert_not_called()
|
|
8002
|
+
self.compute_client.reset_server_state.assert_not_called()
|
|
8003
|
+
self.compute_client.change_server_password.assert_not_called()
|
|
8004
|
+
self.compute_client.clear_server_password.assert_not_called()
|
|
8005
|
+
self.compute_client.add_tag_to_server.assert_not_called()
|
|
7948
8006
|
self.assertIsNone(result)
|
|
7949
8007
|
|
|
7950
8008
|
def test_server_set_with_state(self):
|
|
7951
8009
|
arglist = [
|
|
7952
8010
|
'--state',
|
|
7953
8011
|
'active',
|
|
8012
|
+
'--auto-approve',
|
|
7954
8013
|
self.server.id,
|
|
7955
8014
|
]
|
|
7956
8015
|
verifylist = [
|
|
@@ -7961,14 +8020,62 @@ class TestServerSet(TestServer):
|
|
|
7961
8020
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
7962
8021
|
result = self.cmd.take_action(parsed_args)
|
|
7963
8022
|
|
|
7964
|
-
self.
|
|
8023
|
+
self.compute_client.reset_server_state.assert_called_once_with(
|
|
7965
8024
|
self.server, state='active'
|
|
7966
8025
|
)
|
|
7967
|
-
self.
|
|
7968
|
-
self.
|
|
7969
|
-
self.
|
|
7970
|
-
self.
|
|
7971
|
-
self.
|
|
8026
|
+
self.compute_client.update_server.assert_not_called()
|
|
8027
|
+
self.compute_client.set_server_metadata.assert_not_called()
|
|
8028
|
+
self.compute_client.change_server_password.assert_not_called()
|
|
8029
|
+
self.compute_client.clear_server_password.assert_not_called()
|
|
8030
|
+
self.compute_client.add_tag_to_server.assert_not_called()
|
|
8031
|
+
self.assertIsNone(result)
|
|
8032
|
+
|
|
8033
|
+
def test_server_set_with_state_prompt_y(self):
|
|
8034
|
+
arglist = [
|
|
8035
|
+
'--state',
|
|
8036
|
+
'active',
|
|
8037
|
+
self.server.id,
|
|
8038
|
+
]
|
|
8039
|
+
verifylist = [
|
|
8040
|
+
('state', 'active'),
|
|
8041
|
+
('server', self.server.id),
|
|
8042
|
+
]
|
|
8043
|
+
|
|
8044
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
8045
|
+
with mock.patch('getpass.getpass', return_value='y'):
|
|
8046
|
+
result = self.cmd.take_action(parsed_args)
|
|
8047
|
+
|
|
8048
|
+
self.compute_client.reset_server_state.assert_called_once_with(
|
|
8049
|
+
self.server, state='active'
|
|
8050
|
+
)
|
|
8051
|
+
self.compute_client.update_server.assert_not_called()
|
|
8052
|
+
self.compute_client.set_server_metadata.assert_not_called()
|
|
8053
|
+
self.compute_client.change_server_password.assert_not_called()
|
|
8054
|
+
self.compute_client.clear_server_password.assert_not_called()
|
|
8055
|
+
self.compute_client.add_tag_to_server.assert_not_called()
|
|
8056
|
+
self.assertIsNone(result)
|
|
8057
|
+
|
|
8058
|
+
def test_server_set_with_state_prompt_n(self):
|
|
8059
|
+
arglist = [
|
|
8060
|
+
'--state',
|
|
8061
|
+
'active',
|
|
8062
|
+
self.server.id,
|
|
8063
|
+
]
|
|
8064
|
+
verifylist = [
|
|
8065
|
+
('state', 'active'),
|
|
8066
|
+
('server', self.server.id),
|
|
8067
|
+
]
|
|
8068
|
+
|
|
8069
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
8070
|
+
with mock.patch('getpass.getpass', return_value='n'):
|
|
8071
|
+
result = self.cmd.take_action(parsed_args)
|
|
8072
|
+
|
|
8073
|
+
self.compute_client.reset_server_state.assert_not_called()
|
|
8074
|
+
self.compute_client.update_server.assert_not_called()
|
|
8075
|
+
self.compute_client.set_server_metadata.assert_not_called()
|
|
8076
|
+
self.compute_client.change_server_password.assert_not_called()
|
|
8077
|
+
self.compute_client.clear_server_password.assert_not_called()
|
|
8078
|
+
self.compute_client.add_tag_to_server.assert_not_called()
|
|
7972
8079
|
self.assertIsNone(result)
|
|
7973
8080
|
|
|
7974
8081
|
def test_server_set_with_invalid_state(self):
|
|
@@ -8003,14 +8110,14 @@ class TestServerSet(TestServer):
|
|
|
8003
8110
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
8004
8111
|
result = self.cmd.take_action(parsed_args)
|
|
8005
8112
|
|
|
8006
|
-
self.
|
|
8113
|
+
self.compute_client.update_server.assert_called_once_with(
|
|
8007
8114
|
self.server, name='foo_name'
|
|
8008
8115
|
)
|
|
8009
|
-
self.
|
|
8010
|
-
self.
|
|
8011
|
-
self.
|
|
8012
|
-
self.
|
|
8013
|
-
self.
|
|
8116
|
+
self.compute_client.set_server_metadata.assert_not_called()
|
|
8117
|
+
self.compute_client.reset_server_state.assert_not_called()
|
|
8118
|
+
self.compute_client.change_server_password.assert_not_called()
|
|
8119
|
+
self.compute_client.clear_server_password.assert_not_called()
|
|
8120
|
+
self.compute_client.add_tag_to_server.assert_not_called()
|
|
8014
8121
|
self.assertIsNone(result)
|
|
8015
8122
|
|
|
8016
8123
|
def test_server_set_with_property(self):
|
|
@@ -8029,14 +8136,14 @@ class TestServerSet(TestServer):
|
|
|
8029
8136
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
8030
8137
|
result = self.cmd.take_action(parsed_args)
|
|
8031
8138
|
|
|
8032
|
-
self.
|
|
8139
|
+
self.compute_client.set_server_metadata.assert_called_once_with(
|
|
8033
8140
|
self.server, key1='value1', key2='value2'
|
|
8034
8141
|
)
|
|
8035
|
-
self.
|
|
8036
|
-
self.
|
|
8037
|
-
self.
|
|
8038
|
-
self.
|
|
8039
|
-
self.
|
|
8142
|
+
self.compute_client.update_server.assert_not_called()
|
|
8143
|
+
self.compute_client.reset_server_state.assert_not_called()
|
|
8144
|
+
self.compute_client.change_server_password.assert_not_called()
|
|
8145
|
+
self.compute_client.clear_server_password.assert_not_called()
|
|
8146
|
+
self.compute_client.add_tag_to_server.assert_not_called()
|
|
8040
8147
|
self.assertIsNone(result)
|
|
8041
8148
|
|
|
8042
8149
|
def test_server_set_with_password(self):
|
|
@@ -8053,14 +8160,14 @@ class TestServerSet(TestServer):
|
|
|
8053
8160
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
8054
8161
|
result = self.cmd.take_action(parsed_args)
|
|
8055
8162
|
|
|
8056
|
-
self.
|
|
8163
|
+
self.compute_client.change_server_password.assert_called_once_with(
|
|
8057
8164
|
self.server, 'foo'
|
|
8058
8165
|
)
|
|
8059
|
-
self.
|
|
8060
|
-
self.
|
|
8061
|
-
self.
|
|
8062
|
-
self.
|
|
8063
|
-
self.
|
|
8166
|
+
self.compute_client.update_server.assert_not_called()
|
|
8167
|
+
self.compute_client.set_server_metadata.assert_not_called()
|
|
8168
|
+
self.compute_client.reset_server_state.assert_not_called()
|
|
8169
|
+
self.compute_client.clear_server_password.assert_not_called()
|
|
8170
|
+
self.compute_client.add_tag_to_server.assert_not_called()
|
|
8064
8171
|
self.assertIsNone(result)
|
|
8065
8172
|
|
|
8066
8173
|
def test_server_set_with_no_password(self):
|
|
@@ -8076,14 +8183,14 @@ class TestServerSet(TestServer):
|
|
|
8076
8183
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
8077
8184
|
result = self.cmd.take_action(parsed_args)
|
|
8078
8185
|
|
|
8079
|
-
self.
|
|
8186
|
+
self.compute_client.clear_server_password.assert_called_once_with(
|
|
8080
8187
|
self.server
|
|
8081
8188
|
)
|
|
8082
|
-
self.
|
|
8083
|
-
self.
|
|
8084
|
-
self.
|
|
8085
|
-
self.
|
|
8086
|
-
self.
|
|
8189
|
+
self.compute_client.update_server.assert_not_called()
|
|
8190
|
+
self.compute_client.set_server_metadata.assert_not_called()
|
|
8191
|
+
self.compute_client.reset_server_state.assert_not_called()
|
|
8192
|
+
self.compute_client.change_server_password.assert_not_called()
|
|
8193
|
+
self.compute_client.add_tag_to_server.assert_not_called()
|
|
8087
8194
|
self.assertIsNone(result)
|
|
8088
8195
|
|
|
8089
8196
|
# TODO(stephenfin): Remove this in a future major version
|
|
@@ -8103,14 +8210,14 @@ class TestServerSet(TestServer):
|
|
|
8103
8210
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
8104
8211
|
result = self.cmd.take_action(parsed_args)
|
|
8105
8212
|
|
|
8106
|
-
self.
|
|
8213
|
+
self.compute_client.change_server_password.assert_called_once_with(
|
|
8107
8214
|
self.server, mock.sentinel.fake_pass
|
|
8108
8215
|
)
|
|
8109
|
-
self.
|
|
8110
|
-
self.
|
|
8111
|
-
self.
|
|
8112
|
-
self.
|
|
8113
|
-
self.
|
|
8216
|
+
self.compute_client.update_server.assert_not_called()
|
|
8217
|
+
self.compute_client.set_server_metadata.assert_not_called()
|
|
8218
|
+
self.compute_client.reset_server_state.assert_not_called()
|
|
8219
|
+
self.compute_client.clear_server_password.assert_not_called()
|
|
8220
|
+
self.compute_client.add_tag_to_server.assert_not_called()
|
|
8114
8221
|
self.assertIsNone(result)
|
|
8115
8222
|
|
|
8116
8223
|
def test_server_set_with_description(self):
|
|
@@ -8129,14 +8236,14 @@ class TestServerSet(TestServer):
|
|
|
8129
8236
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
8130
8237
|
result = self.cmd.take_action(parsed_args)
|
|
8131
8238
|
|
|
8132
|
-
self.
|
|
8239
|
+
self.compute_client.update_server.assert_called_once_with(
|
|
8133
8240
|
self.server, description='foo_description'
|
|
8134
8241
|
)
|
|
8135
|
-
self.
|
|
8136
|
-
self.
|
|
8137
|
-
self.
|
|
8138
|
-
self.
|
|
8139
|
-
self.
|
|
8242
|
+
self.compute_client.set_server_metadata.assert_not_called()
|
|
8243
|
+
self.compute_client.reset_server_state.assert_not_called()
|
|
8244
|
+
self.compute_client.change_server_password.assert_not_called()
|
|
8245
|
+
self.compute_client.clear_server_password.assert_not_called()
|
|
8246
|
+
self.compute_client.add_tag_to_server.assert_not_called()
|
|
8140
8247
|
self.assertIsNone(result)
|
|
8141
8248
|
|
|
8142
8249
|
def test_server_set_with_description_pre_v219(self):
|
|
@@ -8175,17 +8282,17 @@ class TestServerSet(TestServer):
|
|
|
8175
8282
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
8176
8283
|
result = self.cmd.take_action(parsed_args)
|
|
8177
8284
|
|
|
8178
|
-
self.
|
|
8285
|
+
self.compute_client.add_tag_to_server.assert_has_calls(
|
|
8179
8286
|
[
|
|
8180
8287
|
mock.call(self.server, tag='tag1'),
|
|
8181
8288
|
mock.call(self.server, tag='tag2'),
|
|
8182
8289
|
]
|
|
8183
8290
|
)
|
|
8184
|
-
self.
|
|
8185
|
-
self.
|
|
8186
|
-
self.
|
|
8187
|
-
self.
|
|
8188
|
-
self.
|
|
8291
|
+
self.compute_client.update_server.assert_not_called()
|
|
8292
|
+
self.compute_client.set_server_metadata.assert_not_called()
|
|
8293
|
+
self.compute_client.reset_server_state.assert_not_called()
|
|
8294
|
+
self.compute_client.change_server_password.assert_not_called()
|
|
8295
|
+
self.compute_client.clear_server_password.assert_not_called()
|
|
8189
8296
|
self.assertIsNone(result)
|
|
8190
8297
|
|
|
8191
8298
|
def test_server_set_with_tag_pre_v226(self):
|
|
@@ -8227,14 +8334,14 @@ class TestServerSet(TestServer):
|
|
|
8227
8334
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
8228
8335
|
result = self.cmd.take_action(parsed_args)
|
|
8229
8336
|
|
|
8230
|
-
self.
|
|
8337
|
+
self.compute_client.update_server.assert_called_once_with(
|
|
8231
8338
|
self.server, hostname='foo-hostname'
|
|
8232
8339
|
)
|
|
8233
|
-
self.
|
|
8234
|
-
self.
|
|
8235
|
-
self.
|
|
8236
|
-
self.
|
|
8237
|
-
self.
|
|
8340
|
+
self.compute_client.set_server_metadata.assert_not_called()
|
|
8341
|
+
self.compute_client.reset_server_state.assert_not_called()
|
|
8342
|
+
self.compute_client.change_server_password.assert_not_called()
|
|
8343
|
+
self.compute_client.clear_server_password.assert_not_called()
|
|
8344
|
+
self.compute_client.add_tag_to_server.assert_not_called()
|
|
8238
8345
|
self.assertIsNone(result)
|
|
8239
8346
|
|
|
8240
8347
|
def test_server_set_with_hostname_pre_v290(self):
|
|
@@ -8259,12 +8366,12 @@ class TestServerShelve(TestServer):
|
|
|
8259
8366
|
def setUp(self):
|
|
8260
8367
|
super().setUp()
|
|
8261
8368
|
|
|
8262
|
-
self.server = compute_fakes.
|
|
8369
|
+
self.server = compute_fakes.create_one_server(
|
|
8263
8370
|
attrs={'status': 'ACTIVE'},
|
|
8264
8371
|
)
|
|
8265
8372
|
|
|
8266
|
-
self.
|
|
8267
|
-
self.
|
|
8373
|
+
self.compute_client.find_server.return_value = self.server
|
|
8374
|
+
self.compute_client.shelve_server.return_value = None
|
|
8268
8375
|
|
|
8269
8376
|
# Get the command object to test
|
|
8270
8377
|
self.cmd = server.ShelveServer(self.app, None)
|
|
@@ -8281,14 +8388,12 @@ class TestServerShelve(TestServer):
|
|
|
8281
8388
|
result = self.cmd.take_action(parsed_args)
|
|
8282
8389
|
self.assertIsNone(result)
|
|
8283
8390
|
|
|
8284
|
-
self.
|
|
8391
|
+
self.compute_client.find_server.assert_called_with(
|
|
8285
8392
|
self.server.name,
|
|
8286
8393
|
ignore_missing=False,
|
|
8287
8394
|
)
|
|
8288
|
-
self.
|
|
8289
|
-
|
|
8290
|
-
)
|
|
8291
|
-
self.compute_sdk_client.shelve_offload_server.assert_not_called()
|
|
8395
|
+
self.compute_client.shelve_server.assert_called_with(self.server.id)
|
|
8396
|
+
self.compute_client.shelve_offload_server.assert_not_called()
|
|
8292
8397
|
|
|
8293
8398
|
def test_shelve_already_shelved(self):
|
|
8294
8399
|
self.server.status = 'SHELVED'
|
|
@@ -8304,12 +8409,12 @@ class TestServerShelve(TestServer):
|
|
|
8304
8409
|
result = self.cmd.take_action(parsed_args)
|
|
8305
8410
|
self.assertIsNone(result)
|
|
8306
8411
|
|
|
8307
|
-
self.
|
|
8412
|
+
self.compute_client.find_server.assert_called_with(
|
|
8308
8413
|
self.server.name,
|
|
8309
8414
|
ignore_missing=False,
|
|
8310
8415
|
)
|
|
8311
|
-
self.
|
|
8312
|
-
self.
|
|
8416
|
+
self.compute_client.shelve_server.assert_not_called()
|
|
8417
|
+
self.compute_client.shelve_offload_server.assert_not_called()
|
|
8313
8418
|
|
|
8314
8419
|
@mock.patch.object(common_utils, 'wait_for_status', return_value=True)
|
|
8315
8420
|
def test_shelve_with_wait(self, mock_wait_for_status):
|
|
@@ -8324,16 +8429,14 @@ class TestServerShelve(TestServer):
|
|
|
8324
8429
|
result = self.cmd.take_action(parsed_args)
|
|
8325
8430
|
self.assertIsNone(result)
|
|
8326
8431
|
|
|
8327
|
-
self.
|
|
8432
|
+
self.compute_client.find_server.assert_called_with(
|
|
8328
8433
|
self.server.name,
|
|
8329
8434
|
ignore_missing=False,
|
|
8330
8435
|
)
|
|
8331
|
-
self.
|
|
8332
|
-
|
|
8333
|
-
)
|
|
8334
|
-
self.compute_sdk_client.shelve_offload_server.assert_not_called()
|
|
8436
|
+
self.compute_client.shelve_server.assert_called_with(self.server.id)
|
|
8437
|
+
self.compute_client.shelve_offload_server.assert_not_called()
|
|
8335
8438
|
mock_wait_for_status.assert_called_once_with(
|
|
8336
|
-
self.
|
|
8439
|
+
self.compute_client.get_server,
|
|
8337
8440
|
self.server.id,
|
|
8338
8441
|
callback=mock.ANY,
|
|
8339
8442
|
success_status=('shelved', 'shelved_offloaded'),
|
|
@@ -8353,25 +8456,21 @@ class TestServerShelve(TestServer):
|
|
|
8353
8456
|
self.assertIsNone(result)
|
|
8354
8457
|
|
|
8355
8458
|
# one call to retrieve to retrieve the server state before shelving
|
|
8356
|
-
self.
|
|
8459
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
8357
8460
|
self.server.name,
|
|
8358
8461
|
ignore_missing=False,
|
|
8359
8462
|
)
|
|
8360
8463
|
# one call to retrieve the server state before offloading
|
|
8361
|
-
self.
|
|
8362
|
-
self.server.id
|
|
8363
|
-
)
|
|
8464
|
+
self.compute_client.get_server.assert_called_once_with(self.server.id)
|
|
8364
8465
|
# one call to shelve the server
|
|
8365
|
-
self.
|
|
8366
|
-
self.server.id
|
|
8367
|
-
)
|
|
8466
|
+
self.compute_client.shelve_server.assert_called_with(self.server.id)
|
|
8368
8467
|
# one call to shelve offload the server
|
|
8369
|
-
self.
|
|
8468
|
+
self.compute_client.shelve_offload_server.assert_called_once_with(
|
|
8370
8469
|
self.server.id,
|
|
8371
8470
|
)
|
|
8372
8471
|
# one call to wait for the shelve offload to complete
|
|
8373
8472
|
mock_wait_for_status.assert_called_once_with(
|
|
8374
|
-
self.
|
|
8473
|
+
self.compute_client.get_server,
|
|
8375
8474
|
self.server.id,
|
|
8376
8475
|
callback=mock.ANY,
|
|
8377
8476
|
success_status=('shelved', 'shelved_offloaded'),
|
|
@@ -8386,7 +8485,7 @@ class TestServerShow(TestServer):
|
|
|
8386
8485
|
self.image_client.get_image.return_value = self.image
|
|
8387
8486
|
|
|
8388
8487
|
self.flavor = compute_fakes.create_one_flavor()
|
|
8389
|
-
self.
|
|
8488
|
+
self.compute_client.find_flavor.return_value = self.flavor
|
|
8390
8489
|
|
|
8391
8490
|
self.topology = {
|
|
8392
8491
|
'nodes': [{'vcpu_set': [0, 1]}, {'vcpu_set': [2, 3]}],
|
|
@@ -8398,14 +8497,14 @@ class TestServerShow(TestServer):
|
|
|
8398
8497
|
'tenant_id': 'tenant-id-xxx',
|
|
8399
8498
|
'addresses': {'public': ['10.20.30.40', '2001:db8::f']},
|
|
8400
8499
|
}
|
|
8401
|
-
self.
|
|
8500
|
+
self.compute_client.get_server_diagnostics.return_value = {
|
|
8402
8501
|
'test': 'test'
|
|
8403
8502
|
}
|
|
8404
|
-
self.server = compute_fakes.
|
|
8503
|
+
self.server = compute_fakes.create_one_server(
|
|
8405
8504
|
attrs=server_info,
|
|
8406
8505
|
)
|
|
8407
8506
|
self.server.fetch_topology = mock.MagicMock(return_value=self.topology)
|
|
8408
|
-
self.
|
|
8507
|
+
self.compute_client.find_server.return_value = self.server
|
|
8409
8508
|
|
|
8410
8509
|
# Get the command object to test
|
|
8411
8510
|
self.cmd = server.ShowServer(self.app, None)
|
|
@@ -8534,10 +8633,10 @@ class TestServerShow(TestServer):
|
|
|
8534
8633
|
|
|
8535
8634
|
self.assertTupleEqual(self.columns, columns)
|
|
8536
8635
|
self.assertTupleEqual(self.data, data)
|
|
8537
|
-
self.
|
|
8636
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
8538
8637
|
self.server.name, ignore_missing=False, details=True
|
|
8539
8638
|
)
|
|
8540
|
-
self.
|
|
8639
|
+
self.compute_client.get_server.assert_not_called()
|
|
8541
8640
|
|
|
8542
8641
|
def test_show_embedded_flavor(self):
|
|
8543
8642
|
# Tests using --os-compute-api-version >= 2.47 where the flavor
|
|
@@ -8566,10 +8665,10 @@ class TestServerShow(TestServer):
|
|
|
8566
8665
|
# Since the flavor details are in a dict we can't be sure of the
|
|
8567
8666
|
# ordering so just assert that one of the keys is in the output.
|
|
8568
8667
|
self.assertIn('original_name', data[columns.index('flavor')]._value)
|
|
8569
|
-
self.
|
|
8668
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
8570
8669
|
self.server.name, ignore_missing=False, details=True
|
|
8571
8670
|
)
|
|
8572
|
-
self.
|
|
8671
|
+
self.compute_client.get_server.assert_not_called()
|
|
8573
8672
|
|
|
8574
8673
|
def test_show_diagnostics(self):
|
|
8575
8674
|
arglist = [
|
|
@@ -8587,13 +8686,13 @@ class TestServerShow(TestServer):
|
|
|
8587
8686
|
|
|
8588
8687
|
self.assertEqual(('test',), columns)
|
|
8589
8688
|
self.assertEqual(('test',), data)
|
|
8590
|
-
self.
|
|
8689
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
8591
8690
|
self.server.name, ignore_missing=False, details=True
|
|
8592
8691
|
)
|
|
8593
|
-
self.
|
|
8692
|
+
self.compute_client.get_server_diagnostics.assert_called_once_with(
|
|
8594
8693
|
self.server
|
|
8595
8694
|
)
|
|
8596
|
-
self.
|
|
8695
|
+
self.compute_client.get_server.assert_not_called()
|
|
8597
8696
|
|
|
8598
8697
|
def test_show_topology(self):
|
|
8599
8698
|
self.set_compute_api_version('2.78')
|
|
@@ -8616,13 +8715,11 @@ class TestServerShow(TestServer):
|
|
|
8616
8715
|
|
|
8617
8716
|
self.assertCountEqual(self.columns, columns)
|
|
8618
8717
|
self.assertCountEqual(self.data, data)
|
|
8619
|
-
self.
|
|
8718
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
8620
8719
|
self.server.name, ignore_missing=False, details=True
|
|
8621
8720
|
)
|
|
8622
|
-
self.server.fetch_topology.assert_called_once_with(
|
|
8623
|
-
|
|
8624
|
-
)
|
|
8625
|
-
self.compute_sdk_client.get_server.assert_not_called()
|
|
8721
|
+
self.server.fetch_topology.assert_called_once_with(self.compute_client)
|
|
8722
|
+
self.compute_client.get_server.assert_not_called()
|
|
8626
8723
|
|
|
8627
8724
|
def test_show_topology_pre_v278(self):
|
|
8628
8725
|
self.set_compute_api_version('2.77')
|
|
@@ -8641,11 +8738,11 @@ class TestServerShow(TestServer):
|
|
|
8641
8738
|
self.assertRaises(
|
|
8642
8739
|
exceptions.CommandError, self.cmd.take_action, parsed_args
|
|
8643
8740
|
)
|
|
8644
|
-
self.
|
|
8741
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
8645
8742
|
self.server.name, ignore_missing=False, details=True
|
|
8646
8743
|
)
|
|
8647
8744
|
self.server.fetch_topology.assert_not_called()
|
|
8648
|
-
self.
|
|
8745
|
+
self.compute_client.get_server.assert_not_called()
|
|
8649
8746
|
|
|
8650
8747
|
|
|
8651
8748
|
@mock.patch('openstackclient.compute.v2.server.os.system')
|
|
@@ -8670,10 +8767,10 @@ class TestServerSsh(TestServer):
|
|
|
8670
8767
|
],
|
|
8671
8768
|
},
|
|
8672
8769
|
}
|
|
8673
|
-
self.server = compute_fakes.
|
|
8770
|
+
self.server = compute_fakes.create_one_server(
|
|
8674
8771
|
attrs=self.attrs,
|
|
8675
8772
|
)
|
|
8676
|
-
self.
|
|
8773
|
+
self.compute_client.find_server.return_value = self.server
|
|
8677
8774
|
|
|
8678
8775
|
def test_server_ssh_no_opts(self, mock_exec):
|
|
8679
8776
|
arglist = [
|
|
@@ -8696,7 +8793,7 @@ class TestServerSsh(TestServer):
|
|
|
8696
8793
|
with mock.patch.object(self.cmd.log, 'warning') as mock_warning:
|
|
8697
8794
|
result = self.cmd.take_action(parsed_args)
|
|
8698
8795
|
|
|
8699
|
-
self.
|
|
8796
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
8700
8797
|
self.server.name, ignore_missing=False
|
|
8701
8798
|
)
|
|
8702
8799
|
self.assertIsNone(result)
|
|
@@ -8729,7 +8826,7 @@ class TestServerSsh(TestServer):
|
|
|
8729
8826
|
with mock.patch.object(self.cmd.log, 'warning') as mock_warning:
|
|
8730
8827
|
result = self.cmd.take_action(parsed_args)
|
|
8731
8828
|
|
|
8732
|
-
self.
|
|
8829
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
8733
8830
|
self.server.name, ignore_missing=False
|
|
8734
8831
|
)
|
|
8735
8832
|
self.assertIsNone(result)
|
|
@@ -8763,7 +8860,7 @@ class TestServerSsh(TestServer):
|
|
|
8763
8860
|
with mock.patch.object(self.cmd.log, 'warning') as mock_warning:
|
|
8764
8861
|
result = self.cmd.take_action(parsed_args)
|
|
8765
8862
|
|
|
8766
|
-
self.
|
|
8863
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
8767
8864
|
self.server.name, ignore_missing=False
|
|
8768
8865
|
)
|
|
8769
8866
|
self.assertIsNone(result)
|
|
@@ -8791,8 +8888,8 @@ class TestServerStart(TestServerAction):
|
|
|
8791
8888
|
self.run_method_with_sdk_servers('start_server', 3)
|
|
8792
8889
|
|
|
8793
8890
|
def test_server_start_with_all_projects(self):
|
|
8794
|
-
server = compute_fakes.
|
|
8795
|
-
self.
|
|
8891
|
+
server = compute_fakes.create_one_server()
|
|
8892
|
+
self.compute_client.find_server.return_value = server
|
|
8796
8893
|
|
|
8797
8894
|
arglist = [
|
|
8798
8895
|
server.id,
|
|
@@ -8805,7 +8902,7 @@ class TestServerStart(TestServerAction):
|
|
|
8805
8902
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
8806
8903
|
self.cmd.take_action(parsed_args)
|
|
8807
8904
|
|
|
8808
|
-
self.
|
|
8905
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
8809
8906
|
server.id,
|
|
8810
8907
|
ignore_missing=False,
|
|
8811
8908
|
details=False,
|
|
@@ -8827,8 +8924,8 @@ class TestServerStop(TestServerAction):
|
|
|
8827
8924
|
self.run_method_with_sdk_servers('stop_server', 3)
|
|
8828
8925
|
|
|
8829
8926
|
def test_server_start_with_all_projects(self):
|
|
8830
|
-
server = compute_fakes.
|
|
8831
|
-
self.
|
|
8927
|
+
server = compute_fakes.create_one_server()
|
|
8928
|
+
self.compute_client.find_server.return_value = server
|
|
8832
8929
|
|
|
8833
8930
|
arglist = [
|
|
8834
8931
|
server.id,
|
|
@@ -8841,7 +8938,7 @@ class TestServerStop(TestServerAction):
|
|
|
8841
8938
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
8842
8939
|
self.cmd.take_action(parsed_args)
|
|
8843
8940
|
|
|
8844
|
-
self.
|
|
8941
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
8845
8942
|
server.id,
|
|
8846
8943
|
ignore_missing=False,
|
|
8847
8944
|
details=False,
|
|
@@ -8895,8 +8992,8 @@ class TestServerUnrescue(compute_fakes.TestComputev2):
|
|
|
8895
8992
|
def setUp(self):
|
|
8896
8993
|
super().setUp()
|
|
8897
8994
|
|
|
8898
|
-
self.server = compute_fakes.
|
|
8899
|
-
self.
|
|
8995
|
+
self.server = compute_fakes.create_one_server()
|
|
8996
|
+
self.compute_client.find_server.return_value = self.server
|
|
8900
8997
|
|
|
8901
8998
|
self.cmd = server.UnrescueServer(self.app, None)
|
|
8902
8999
|
|
|
@@ -8911,10 +9008,10 @@ class TestServerUnrescue(compute_fakes.TestComputev2):
|
|
|
8911
9008
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
8912
9009
|
result = self.cmd.take_action(parsed_args)
|
|
8913
9010
|
|
|
8914
|
-
self.
|
|
9011
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
8915
9012
|
self.server.id, ignore_missing=False
|
|
8916
9013
|
)
|
|
8917
|
-
self.
|
|
9014
|
+
self.compute_client.unrescue_server.assert_called_once_with(
|
|
8918
9015
|
self.server
|
|
8919
9016
|
)
|
|
8920
9017
|
self.assertIsNone(result)
|
|
@@ -8924,8 +9021,8 @@ class TestServerUnset(TestServer):
|
|
|
8924
9021
|
def setUp(self):
|
|
8925
9022
|
super().setUp()
|
|
8926
9023
|
|
|
8927
|
-
self.server = compute_fakes.
|
|
8928
|
-
self.
|
|
9024
|
+
self.server = compute_fakes.create_one_server()
|
|
9025
|
+
self.compute_client.find_server.return_value = self.server
|
|
8929
9026
|
|
|
8930
9027
|
# Get the command object to test
|
|
8931
9028
|
self.cmd = server.UnsetServer(self.app, None)
|
|
@@ -8941,12 +9038,10 @@ class TestServerUnset(TestServer):
|
|
|
8941
9038
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
8942
9039
|
result = self.cmd.take_action(parsed_args)
|
|
8943
9040
|
|
|
8944
|
-
self.
|
|
8945
|
-
|
|
8946
|
-
)
|
|
8947
|
-
self.
|
|
8948
|
-
self.compute_sdk_client.update_server.assert_not_called()
|
|
8949
|
-
self.compute_sdk_client.remove_tag_from_server.assert_not_called()
|
|
9041
|
+
self.compute_client.find_server(self.server.id, ignore_missing=False)
|
|
9042
|
+
self.compute_client.delete_server_metadata.assert_not_called()
|
|
9043
|
+
self.compute_client.update_server.assert_not_called()
|
|
9044
|
+
self.compute_client.remove_tag_from_server.assert_not_called()
|
|
8950
9045
|
self.assertIsNone(result)
|
|
8951
9046
|
|
|
8952
9047
|
def test_server_unset_with_property(self):
|
|
@@ -8965,15 +9060,13 @@ class TestServerUnset(TestServer):
|
|
|
8965
9060
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
8966
9061
|
result = self.cmd.take_action(parsed_args)
|
|
8967
9062
|
|
|
8968
|
-
self.
|
|
8969
|
-
|
|
8970
|
-
)
|
|
8971
|
-
self.compute_sdk_client.delete_server_metadata.assert_called_once_with(
|
|
9063
|
+
self.compute_client.find_server(self.server.id, ignore_missing=False)
|
|
9064
|
+
self.compute_client.delete_server_metadata.assert_called_once_with(
|
|
8972
9065
|
self.server,
|
|
8973
9066
|
['key1', 'key2'],
|
|
8974
9067
|
)
|
|
8975
|
-
self.
|
|
8976
|
-
self.
|
|
9068
|
+
self.compute_client.update_server.assert_not_called()
|
|
9069
|
+
self.compute_client.remove_tag_from_server.assert_not_called()
|
|
8977
9070
|
self.assertIsNone(result)
|
|
8978
9071
|
|
|
8979
9072
|
def test_server_unset_with_description(self):
|
|
@@ -8992,14 +9085,12 @@ class TestServerUnset(TestServer):
|
|
|
8992
9085
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
8993
9086
|
result = self.cmd.take_action(parsed_args)
|
|
8994
9087
|
|
|
8995
|
-
self.
|
|
8996
|
-
|
|
8997
|
-
)
|
|
8998
|
-
self.compute_sdk_client.update_server.assert_called_once_with(
|
|
9088
|
+
self.compute_client.find_server(self.server.id, ignore_missing=False)
|
|
9089
|
+
self.compute_client.update_server.assert_called_once_with(
|
|
8999
9090
|
self.server, description=''
|
|
9000
9091
|
)
|
|
9001
|
-
self.
|
|
9002
|
-
self.
|
|
9092
|
+
self.compute_client.delete_server_metadata.assert_not_called()
|
|
9093
|
+
self.compute_client.remove_tag_from_server.assert_not_called()
|
|
9003
9094
|
self.assertIsNone(result)
|
|
9004
9095
|
|
|
9005
9096
|
def test_server_unset_with_description_pre_v219(self):
|
|
@@ -9042,17 +9133,15 @@ class TestServerUnset(TestServer):
|
|
|
9042
9133
|
result = self.cmd.take_action(parsed_args)
|
|
9043
9134
|
self.assertIsNone(result)
|
|
9044
9135
|
|
|
9045
|
-
self.
|
|
9046
|
-
|
|
9047
|
-
)
|
|
9048
|
-
self.compute_sdk_client.remove_tag_from_server.assert_has_calls(
|
|
9136
|
+
self.compute_client.find_server(self.server.id, ignore_missing=False)
|
|
9137
|
+
self.compute_client.remove_tag_from_server.assert_has_calls(
|
|
9049
9138
|
[
|
|
9050
9139
|
mock.call(self.server, 'tag1'),
|
|
9051
9140
|
mock.call(self.server, 'tag2'),
|
|
9052
9141
|
]
|
|
9053
9142
|
)
|
|
9054
|
-
self.
|
|
9055
|
-
self.
|
|
9143
|
+
self.compute_client.delete_server_metadata.assert_not_called()
|
|
9144
|
+
self.compute_client.update_server.assert_not_called()
|
|
9056
9145
|
|
|
9057
9146
|
def test_server_unset_with_tag_pre_v226(self):
|
|
9058
9147
|
self.set_compute_api_version('2.25')
|
|
@@ -9082,12 +9171,12 @@ class TestServerUnshelve(TestServer):
|
|
|
9082
9171
|
def setUp(self):
|
|
9083
9172
|
super().setUp()
|
|
9084
9173
|
|
|
9085
|
-
self.server = compute_fakes.
|
|
9174
|
+
self.server = compute_fakes.create_one_server(
|
|
9086
9175
|
attrs={'status': 'SHELVED'},
|
|
9087
9176
|
)
|
|
9088
9177
|
|
|
9089
|
-
self.
|
|
9090
|
-
self.
|
|
9178
|
+
self.compute_client.find_server.return_value = self.server
|
|
9179
|
+
self.compute_client.unshelve_server.return_value = None
|
|
9091
9180
|
|
|
9092
9181
|
# Get the command object to test
|
|
9093
9182
|
self.cmd = server.UnshelveServer(self.app, None)
|
|
@@ -9103,11 +9192,11 @@ class TestServerUnshelve(TestServer):
|
|
|
9103
9192
|
|
|
9104
9193
|
self.cmd.take_action(parsed_args)
|
|
9105
9194
|
|
|
9106
|
-
self.
|
|
9195
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
9107
9196
|
self.server.id,
|
|
9108
9197
|
ignore_missing=False,
|
|
9109
9198
|
)
|
|
9110
|
-
self.
|
|
9199
|
+
self.compute_client.unshelve_server.assert_called_once_with(
|
|
9111
9200
|
self.server.id
|
|
9112
9201
|
)
|
|
9113
9202
|
|
|
@@ -9127,11 +9216,11 @@ class TestServerUnshelve(TestServer):
|
|
|
9127
9216
|
|
|
9128
9217
|
self.cmd.take_action(parsed_args)
|
|
9129
9218
|
|
|
9130
|
-
self.
|
|
9219
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
9131
9220
|
self.server.id,
|
|
9132
9221
|
ignore_missing=False,
|
|
9133
9222
|
)
|
|
9134
|
-
self.
|
|
9223
|
+
self.compute_client.unshelve_server.assert_called_once_with(
|
|
9135
9224
|
self.server.id,
|
|
9136
9225
|
availability_zone='foo-az',
|
|
9137
9226
|
)
|
|
@@ -9173,11 +9262,11 @@ class TestServerUnshelve(TestServer):
|
|
|
9173
9262
|
|
|
9174
9263
|
self.cmd.take_action(parsed_args)
|
|
9175
9264
|
|
|
9176
|
-
self.
|
|
9265
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
9177
9266
|
self.server.id,
|
|
9178
9267
|
ignore_missing=False,
|
|
9179
9268
|
)
|
|
9180
|
-
self.
|
|
9269
|
+
self.compute_client.unshelve_server.assert_called_once_with(
|
|
9181
9270
|
self.server.id,
|
|
9182
9271
|
host='server1',
|
|
9183
9272
|
)
|
|
@@ -9219,11 +9308,11 @@ class TestServerUnshelve(TestServer):
|
|
|
9219
9308
|
|
|
9220
9309
|
self.cmd.take_action(parsed_args)
|
|
9221
9310
|
|
|
9222
|
-
self.
|
|
9311
|
+
self.compute_client.find_server.assert_called_once_with(
|
|
9223
9312
|
self.server.id,
|
|
9224
9313
|
ignore_missing=False,
|
|
9225
9314
|
)
|
|
9226
|
-
self.
|
|
9315
|
+
self.compute_client.unshelve_server.assert_called_once_with(
|
|
9227
9316
|
self.server.id,
|
|
9228
9317
|
availability_zone=None,
|
|
9229
9318
|
)
|
|
@@ -9295,15 +9384,13 @@ class TestServerUnshelve(TestServer):
|
|
|
9295
9384
|
result = self.cmd.take_action(parsed_args)
|
|
9296
9385
|
self.assertIsNone(result)
|
|
9297
9386
|
|
|
9298
|
-
self.
|
|
9387
|
+
self.compute_client.find_server.assert_called_with(
|
|
9299
9388
|
self.server.name,
|
|
9300
9389
|
ignore_missing=False,
|
|
9301
9390
|
)
|
|
9302
|
-
self.
|
|
9303
|
-
self.server.id
|
|
9304
|
-
)
|
|
9391
|
+
self.compute_client.unshelve_server.assert_called_with(self.server.id)
|
|
9305
9392
|
mock_wait_for_status.assert_called_once_with(
|
|
9306
|
-
self.
|
|
9393
|
+
self.compute_client.get_server,
|
|
9307
9394
|
self.server.id,
|
|
9308
9395
|
callback=mock.ANY,
|
|
9309
9396
|
success_status=('active', 'shutoff'),
|
|
@@ -9395,7 +9482,7 @@ class TestServerGeneral(TestServer):
|
|
|
9395
9482
|
self.image_client.get_image.return_value = _image
|
|
9396
9483
|
|
|
9397
9484
|
_flavor = compute_fakes.create_one_flavor()
|
|
9398
|
-
self.
|
|
9485
|
+
self.compute_client.find_flavor.return_value = _flavor
|
|
9399
9486
|
|
|
9400
9487
|
server_info = {
|
|
9401
9488
|
'image': {'id': _image.id},
|
|
@@ -9406,8 +9493,8 @@ class TestServerGeneral(TestServer):
|
|
|
9406
9493
|
'properties': '',
|
|
9407
9494
|
'volumes_attached': [{"id": "6344fe9d-ef20-45b2-91a6"}],
|
|
9408
9495
|
}
|
|
9409
|
-
_server = compute_fakes.
|
|
9410
|
-
self.
|
|
9496
|
+
_server = compute_fakes.create_one_server(server_info)
|
|
9497
|
+
self.compute_client.get_server.return_value = _server
|
|
9411
9498
|
|
|
9412
9499
|
expected = {
|
|
9413
9500
|
'OS-DCF:diskConfig': None,
|
|
@@ -9458,14 +9545,14 @@ class TestServerGeneral(TestServer):
|
|
|
9458
9545
|
}
|
|
9459
9546
|
|
|
9460
9547
|
actual = server._prep_server_detail(
|
|
9461
|
-
self.
|
|
9548
|
+
self.compute_client,
|
|
9462
9549
|
self.image_client,
|
|
9463
9550
|
_server,
|
|
9464
9551
|
)
|
|
9465
9552
|
|
|
9466
9553
|
self.assertCountEqual(expected, actual)
|
|
9467
9554
|
# this should be called since we need the flavor (< 2.47)
|
|
9468
|
-
self.
|
|
9555
|
+
self.compute_client.find_flavor.assert_called_once_with(
|
|
9469
9556
|
_flavor.id, ignore_missing=False
|
|
9470
9557
|
)
|
|
9471
9558
|
|
|
@@ -9474,7 +9561,7 @@ class TestServerGeneral(TestServer):
|
|
|
9474
9561
|
self.image_client.get_image.return_value = _image
|
|
9475
9562
|
|
|
9476
9563
|
_flavor = compute_fakes.create_one_flavor()
|
|
9477
|
-
self.
|
|
9564
|
+
self.compute_client.find_flavor.return_value = _flavor
|
|
9478
9565
|
|
|
9479
9566
|
server_info = {
|
|
9480
9567
|
'image': {'id': _image.id},
|
|
@@ -9493,8 +9580,8 @@ class TestServerGeneral(TestServer):
|
|
|
9493
9580
|
'properties': '',
|
|
9494
9581
|
'volumes_attached': [{"id": "6344fe9d-ef20-45b2-91a6"}],
|
|
9495
9582
|
}
|
|
9496
|
-
_server = compute_fakes.
|
|
9497
|
-
self.
|
|
9583
|
+
_server = compute_fakes.create_one_server(server_info)
|
|
9584
|
+
self.compute_client.get_server.return_value = _server
|
|
9498
9585
|
|
|
9499
9586
|
expected = {
|
|
9500
9587
|
'OS-DCF:diskConfig': None,
|
|
@@ -9545,11 +9632,11 @@ class TestServerGeneral(TestServer):
|
|
|
9545
9632
|
}
|
|
9546
9633
|
|
|
9547
9634
|
actual = server._prep_server_detail(
|
|
9548
|
-
self.
|
|
9635
|
+
self.compute_client,
|
|
9549
9636
|
self.image_client,
|
|
9550
9637
|
_server,
|
|
9551
9638
|
)
|
|
9552
9639
|
|
|
9553
9640
|
self.assertCountEqual(expected, actual)
|
|
9554
9641
|
# this shouldn't be called since we have a full flavor (>= 2.47)
|
|
9555
|
-
self.
|
|
9642
|
+
self.compute_client.find_flavor.assert_not_called()
|