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,23 +21,8 @@ from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
|
|
|
21
21
|
from openstackclient.tests.unit.image.v2 import fakes as image_fakes
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
class
|
|
25
|
-
def setup_servers_mock(self, count):
|
|
26
|
-
servers = compute_fakes.create_sdk_servers(
|
|
27
|
-
count=count,
|
|
28
|
-
)
|
|
29
|
-
|
|
30
|
-
# This is the return value for compute_client.find_server()
|
|
31
|
-
self.compute_sdk_client.find_server = compute_fakes.get_servers(
|
|
32
|
-
servers,
|
|
33
|
-
0,
|
|
34
|
-
)
|
|
35
|
-
return servers
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
class TestServerImageCreate(TestServerImage):
|
|
24
|
+
class TestServerImageCreate(compute_fakes.TestComputev2):
|
|
39
25
|
def image_columns(self, image):
|
|
40
|
-
# columnlist = tuple(sorted(image.keys()))
|
|
41
26
|
columnlist = (
|
|
42
27
|
'id',
|
|
43
28
|
'name',
|
|
@@ -64,41 +49,24 @@ class TestServerImageCreate(TestServerImage):
|
|
|
64
49
|
def setUp(self):
|
|
65
50
|
super().setUp()
|
|
66
51
|
|
|
67
|
-
|
|
68
|
-
self.
|
|
52
|
+
self.server = compute_fakes.create_one_server()
|
|
53
|
+
self.compute_client.find_server.return_value = self.server
|
|
69
54
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
images = image_fakes.create_images(
|
|
73
|
-
attrs={
|
|
74
|
-
'name': servers[0].name,
|
|
75
|
-
'status': 'active',
|
|
76
|
-
},
|
|
77
|
-
count=count,
|
|
78
|
-
)
|
|
79
|
-
else:
|
|
80
|
-
images = image_fakes.create_images(
|
|
81
|
-
attrs={
|
|
82
|
-
'status': 'active',
|
|
83
|
-
},
|
|
84
|
-
count=count,
|
|
85
|
-
)
|
|
86
|
-
|
|
87
|
-
self.image_client.find_image = mock.Mock(side_effect=images)
|
|
88
|
-
self.compute_sdk_client.create_server_image = mock.Mock(
|
|
89
|
-
return_value=images[0],
|
|
55
|
+
self.image = image_fakes.create_one_image(
|
|
56
|
+
{'name': self.server.name, 'status': 'active'}
|
|
90
57
|
)
|
|
91
|
-
|
|
58
|
+
self.image_client.find_image.return_value = self.image
|
|
59
|
+
self.compute_client.create_server_image.return_value = self.image
|
|
92
60
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
images = self.setup_images_mock(count=1, servers=servers)
|
|
61
|
+
# Get the command object to test
|
|
62
|
+
self.cmd = server_image.CreateServerImage(self.app, None)
|
|
96
63
|
|
|
64
|
+
def test_server_image_create_defaults(self):
|
|
97
65
|
arglist = [
|
|
98
|
-
|
|
66
|
+
self.server.id,
|
|
99
67
|
]
|
|
100
68
|
verifylist = [
|
|
101
|
-
('server',
|
|
69
|
+
('server', self.server.id),
|
|
102
70
|
]
|
|
103
71
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
104
72
|
|
|
@@ -107,29 +75,26 @@ class TestServerImageCreate(TestServerImage):
|
|
|
107
75
|
# data to be shown.
|
|
108
76
|
columns, data = self.cmd.take_action(parsed_args)
|
|
109
77
|
|
|
110
|
-
self.
|
|
111
|
-
|
|
112
|
-
|
|
78
|
+
self.compute_client.create_server_image.assert_called_with(
|
|
79
|
+
self.server.id,
|
|
80
|
+
self.server.name,
|
|
113
81
|
None,
|
|
114
82
|
)
|
|
115
83
|
|
|
116
|
-
self.assertEqual(self.image_columns(
|
|
117
|
-
self.assertCountEqual(self.image_data(
|
|
84
|
+
self.assertEqual(self.image_columns(self.image), columns)
|
|
85
|
+
self.assertCountEqual(self.image_data(self.image), data)
|
|
118
86
|
|
|
119
87
|
def test_server_image_create_options(self):
|
|
120
|
-
servers = self.setup_servers_mock(count=1)
|
|
121
|
-
images = self.setup_images_mock(count=1, servers=servers)
|
|
122
|
-
|
|
123
88
|
arglist = [
|
|
124
89
|
'--name',
|
|
125
90
|
'img-nam',
|
|
126
91
|
'--property',
|
|
127
92
|
'key=value',
|
|
128
|
-
|
|
93
|
+
self.server.id,
|
|
129
94
|
]
|
|
130
95
|
verifylist = [
|
|
131
96
|
('name', 'img-nam'),
|
|
132
|
-
('server',
|
|
97
|
+
('server', self.server.id),
|
|
133
98
|
('properties', {'key': 'value'}),
|
|
134
99
|
]
|
|
135
100
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
@@ -139,27 +104,24 @@ class TestServerImageCreate(TestServerImage):
|
|
|
139
104
|
# data to be shown.
|
|
140
105
|
columns, data = self.cmd.take_action(parsed_args)
|
|
141
106
|
|
|
142
|
-
self.
|
|
143
|
-
|
|
107
|
+
self.compute_client.create_server_image.assert_called_with(
|
|
108
|
+
self.server.id,
|
|
144
109
|
'img-nam',
|
|
145
110
|
{'key': 'value'},
|
|
146
111
|
)
|
|
147
112
|
|
|
148
|
-
self.assertEqual(self.image_columns(
|
|
149
|
-
self.assertCountEqual(self.image_data(
|
|
113
|
+
self.assertEqual(self.image_columns(self.image), columns)
|
|
114
|
+
self.assertCountEqual(self.image_data(self.image), data)
|
|
150
115
|
|
|
151
116
|
@mock.patch.object(common_utils, 'wait_for_status', return_value=False)
|
|
152
117
|
def test_server_create_image_wait_fail(self, mock_wait_for_status):
|
|
153
|
-
servers = self.setup_servers_mock(count=1)
|
|
154
|
-
images = self.setup_images_mock(count=1, servers=servers)
|
|
155
|
-
|
|
156
118
|
arglist = [
|
|
157
119
|
'--wait',
|
|
158
|
-
|
|
120
|
+
self.server.id,
|
|
159
121
|
]
|
|
160
122
|
verifylist = [
|
|
161
123
|
('wait', True),
|
|
162
|
-
('server',
|
|
124
|
+
('server', self.server.id),
|
|
163
125
|
]
|
|
164
126
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
165
127
|
|
|
@@ -169,28 +131,25 @@ class TestServerImageCreate(TestServerImage):
|
|
|
169
131
|
parsed_args,
|
|
170
132
|
)
|
|
171
133
|
|
|
172
|
-
self.
|
|
173
|
-
|
|
174
|
-
|
|
134
|
+
self.compute_client.create_server_image.assert_called_with(
|
|
135
|
+
self.server.id,
|
|
136
|
+
self.server.name,
|
|
175
137
|
None,
|
|
176
138
|
)
|
|
177
139
|
|
|
178
140
|
mock_wait_for_status.assert_called_once_with(
|
|
179
|
-
self.image_client.get_image,
|
|
141
|
+
self.image_client.get_image, self.image.id, callback=mock.ANY
|
|
180
142
|
)
|
|
181
143
|
|
|
182
144
|
@mock.patch.object(common_utils, 'wait_for_status', return_value=True)
|
|
183
145
|
def test_server_create_image_wait_ok(self, mock_wait_for_status):
|
|
184
|
-
servers = self.setup_servers_mock(count=1)
|
|
185
|
-
images = self.setup_images_mock(count=1, servers=servers)
|
|
186
|
-
|
|
187
146
|
arglist = [
|
|
188
147
|
'--wait',
|
|
189
|
-
|
|
148
|
+
self.server.id,
|
|
190
149
|
]
|
|
191
150
|
verifylist = [
|
|
192
151
|
('wait', True),
|
|
193
|
-
('server',
|
|
152
|
+
('server', self.server.id),
|
|
194
153
|
]
|
|
195
154
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
196
155
|
|
|
@@ -199,15 +158,15 @@ class TestServerImageCreate(TestServerImage):
|
|
|
199
158
|
# data to be shown.
|
|
200
159
|
columns, data = self.cmd.take_action(parsed_args)
|
|
201
160
|
|
|
202
|
-
self.
|
|
203
|
-
|
|
204
|
-
|
|
161
|
+
self.compute_client.create_server_image.assert_called_with(
|
|
162
|
+
self.server.id,
|
|
163
|
+
self.server.name,
|
|
205
164
|
None,
|
|
206
165
|
)
|
|
207
166
|
|
|
208
167
|
mock_wait_for_status.assert_called_once_with(
|
|
209
|
-
self.image_client.get_image,
|
|
168
|
+
self.image_client.get_image, self.image.id, callback=mock.ANY
|
|
210
169
|
)
|
|
211
170
|
|
|
212
|
-
self.assertEqual(self.image_columns(
|
|
213
|
-
self.assertCountEqual(self.image_data(
|
|
171
|
+
self.assertEqual(self.image_columns(self.image), columns)
|
|
172
|
+
self.assertCountEqual(self.image_data(self.image), data)
|
|
@@ -52,11 +52,11 @@ class TestListMigration(compute_fakes.TestComputev2):
|
|
|
52
52
|
def setUp(self):
|
|
53
53
|
super().setUp()
|
|
54
54
|
|
|
55
|
-
self.server = compute_fakes.
|
|
56
|
-
self.
|
|
55
|
+
self.server = compute_fakes.create_one_server()
|
|
56
|
+
self.compute_client.find_server.return_value = self.server
|
|
57
57
|
|
|
58
58
|
self.migrations = compute_fakes.create_migrations(count=3)
|
|
59
|
-
self.
|
|
59
|
+
self.compute_client.migrations.return_value = self.migrations
|
|
60
60
|
|
|
61
61
|
self.data = (
|
|
62
62
|
common_utils.get_item_properties(s, self.MIGRATION_FIELDS)
|
|
@@ -76,7 +76,7 @@ class TestListMigration(compute_fakes.TestComputev2):
|
|
|
76
76
|
# Set expected values
|
|
77
77
|
kwargs = {}
|
|
78
78
|
|
|
79
|
-
self.
|
|
79
|
+
self.compute_client.migrations.assert_called_with(**kwargs)
|
|
80
80
|
|
|
81
81
|
self.assertEqual(self.MIGRATION_COLUMNS, columns)
|
|
82
82
|
self.assertEqual(tuple(self.data), tuple(data))
|
|
@@ -108,10 +108,10 @@ class TestListMigration(compute_fakes.TestComputev2):
|
|
|
108
108
|
'migration_type': 'migration',
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
self.
|
|
111
|
+
self.compute_client.find_server.assert_called_with(
|
|
112
112
|
'server1', ignore_missing=False
|
|
113
113
|
)
|
|
114
|
-
self.
|
|
114
|
+
self.compute_client.migrations.assert_called_with(**kwargs)
|
|
115
115
|
|
|
116
116
|
self.assertEqual(self.MIGRATION_COLUMNS, columns)
|
|
117
117
|
self.assertEqual(tuple(self.data), tuple(data))
|
|
@@ -169,7 +169,7 @@ class TestListMigrationV223(TestListMigration):
|
|
|
169
169
|
'status': 'migrating',
|
|
170
170
|
}
|
|
171
171
|
|
|
172
|
-
self.
|
|
172
|
+
self.compute_client.migrations.assert_called_with(**kwargs)
|
|
173
173
|
|
|
174
174
|
self.assertEqual(self.MIGRATION_COLUMNS, columns)
|
|
175
175
|
self.assertEqual(tuple(self.data), tuple(data))
|
|
@@ -247,7 +247,7 @@ class TestListMigrationV259(TestListMigration):
|
|
|
247
247
|
'changes_since': '2019-08-09T08:03:25Z',
|
|
248
248
|
}
|
|
249
249
|
|
|
250
|
-
self.
|
|
250
|
+
self.compute_client.migrations.assert_called_with(**kwargs)
|
|
251
251
|
|
|
252
252
|
self.assertEqual(self.MIGRATION_COLUMNS, columns)
|
|
253
253
|
self.assertEqual(tuple(self.data), tuple(data))
|
|
@@ -376,7 +376,7 @@ class TestListMigrationV266(TestListMigration):
|
|
|
376
376
|
'changes_before': '2019-08-09T08:03:25Z',
|
|
377
377
|
}
|
|
378
378
|
|
|
379
|
-
self.
|
|
379
|
+
self.compute_client.migrations.assert_called_with(**kwargs)
|
|
380
380
|
|
|
381
381
|
self.assertEqual(self.MIGRATION_COLUMNS, columns)
|
|
382
382
|
self.assertEqual(tuple(self.data), tuple(data))
|
|
@@ -495,7 +495,7 @@ class TestListMigrationV280(TestListMigration):
|
|
|
495
495
|
'changes_before': "2019-08-09T08:03:25Z",
|
|
496
496
|
}
|
|
497
497
|
|
|
498
|
-
self.
|
|
498
|
+
self.compute_client.migrations.assert_called_with(**kwargs)
|
|
499
499
|
|
|
500
500
|
self.MIGRATION_COLUMNS.insert(
|
|
501
501
|
len(self.MIGRATION_COLUMNS) - 2, "Project"
|
|
@@ -572,7 +572,7 @@ class TestListMigrationV280(TestListMigration):
|
|
|
572
572
|
'changes_before': "2019-08-09T08:03:25Z",
|
|
573
573
|
}
|
|
574
574
|
|
|
575
|
-
self.
|
|
575
|
+
self.compute_client.migrations.assert_called_with(**kwargs)
|
|
576
576
|
|
|
577
577
|
self.MIGRATION_COLUMNS.insert(len(self.MIGRATION_COLUMNS) - 2, "User")
|
|
578
578
|
self.MIGRATION_FIELDS.insert(len(self.MIGRATION_FIELDS) - 2, "user_id")
|
|
@@ -644,7 +644,7 @@ class TestListMigrationV280(TestListMigration):
|
|
|
644
644
|
'changes_before': "2019-08-09T08:03:25Z",
|
|
645
645
|
}
|
|
646
646
|
|
|
647
|
-
self.
|
|
647
|
+
self.compute_client.migrations.assert_called_with(**kwargs)
|
|
648
648
|
|
|
649
649
|
self.MIGRATION_COLUMNS.insert(
|
|
650
650
|
len(self.MIGRATION_COLUMNS) - 2, "Project"
|
|
@@ -694,14 +694,14 @@ class TestServerMigrationShow(compute_fakes.TestComputev2):
|
|
|
694
694
|
def setUp(self):
|
|
695
695
|
super().setUp()
|
|
696
696
|
|
|
697
|
-
self.server = compute_fakes.
|
|
698
|
-
self.
|
|
697
|
+
self.server = compute_fakes.create_one_server()
|
|
698
|
+
self.compute_client.find_server.return_value = self.server
|
|
699
699
|
|
|
700
700
|
self.server_migration = compute_fakes.create_one_server_migration()
|
|
701
|
-
self.
|
|
701
|
+
self.compute_client.get_server_migration.return_value = (
|
|
702
702
|
self.server_migration
|
|
703
703
|
)
|
|
704
|
-
self.
|
|
704
|
+
self.compute_client.server_migrations.return_value = iter(
|
|
705
705
|
[self.server_migration]
|
|
706
706
|
)
|
|
707
707
|
|
|
@@ -759,10 +759,10 @@ class TestServerMigrationShow(compute_fakes.TestComputev2):
|
|
|
759
759
|
self.assertEqual(self.columns, columns)
|
|
760
760
|
self.assertEqual(self.data, data)
|
|
761
761
|
|
|
762
|
-
self.
|
|
762
|
+
self.compute_client.find_server.assert_called_with(
|
|
763
763
|
self.server.id, ignore_missing=False
|
|
764
764
|
)
|
|
765
|
-
self.
|
|
765
|
+
self.compute_client.get_server_migration.assert_called_with(
|
|
766
766
|
self.server.id, '2', ignore_missing=False
|
|
767
767
|
)
|
|
768
768
|
|
|
@@ -811,7 +811,7 @@ class TestServerMigrationShow(compute_fakes.TestComputev2):
|
|
|
811
811
|
def test_server_migration_show_by_uuid(self):
|
|
812
812
|
self.set_compute_api_version('2.59')
|
|
813
813
|
|
|
814
|
-
self.
|
|
814
|
+
self.compute_client.server_migrations.return_value = iter(
|
|
815
815
|
[self.server_migration]
|
|
816
816
|
)
|
|
817
817
|
|
|
@@ -830,18 +830,18 @@ class TestServerMigrationShow(compute_fakes.TestComputev2):
|
|
|
830
830
|
self.assertEqual(self.columns, columns)
|
|
831
831
|
self.assertEqual(self.data, data)
|
|
832
832
|
|
|
833
|
-
self.
|
|
833
|
+
self.compute_client.find_server.assert_called_with(
|
|
834
834
|
self.server.id, ignore_missing=False
|
|
835
835
|
)
|
|
836
|
-
self.
|
|
836
|
+
self.compute_client.server_migrations.assert_called_with(
|
|
837
837
|
self.server.id
|
|
838
838
|
)
|
|
839
|
-
self.
|
|
839
|
+
self.compute_client.get_server_migration.assert_not_called()
|
|
840
840
|
|
|
841
841
|
def test_server_migration_show_by_uuid_no_matches(self):
|
|
842
842
|
self.set_compute_api_version('2.59')
|
|
843
843
|
|
|
844
|
-
self.
|
|
844
|
+
self.compute_client.server_migrations.return_value = iter([])
|
|
845
845
|
|
|
846
846
|
arglist = [
|
|
847
847
|
self.server.id,
|
|
@@ -897,10 +897,10 @@ class TestServerMigrationAbort(compute_fakes.TestComputev2):
|
|
|
897
897
|
def setUp(self):
|
|
898
898
|
super().setUp()
|
|
899
899
|
|
|
900
|
-
self.server = compute_fakes.
|
|
900
|
+
self.server = compute_fakes.create_one_server()
|
|
901
901
|
|
|
902
902
|
# Return value for utils.find_resource for server.
|
|
903
|
-
self.
|
|
903
|
+
self.compute_client.find_server.return_value = self.server
|
|
904
904
|
|
|
905
905
|
# Get the command object to test
|
|
906
906
|
self.cmd = server_migration.AbortMigration(self.app, None)
|
|
@@ -917,10 +917,10 @@ class TestServerMigrationAbort(compute_fakes.TestComputev2):
|
|
|
917
917
|
|
|
918
918
|
result = self.cmd.take_action(parsed_args)
|
|
919
919
|
|
|
920
|
-
self.
|
|
920
|
+
self.compute_client.find_server.assert_called_with(
|
|
921
921
|
self.server.id, ignore_missing=False
|
|
922
922
|
)
|
|
923
|
-
self.
|
|
923
|
+
self.compute_client.abort_server_migration.assert_called_with(
|
|
924
924
|
'2', self.server.id, ignore_missing=False
|
|
925
925
|
)
|
|
926
926
|
self.assertIsNone(result)
|
|
@@ -946,7 +946,7 @@ class TestServerMigrationAbort(compute_fakes.TestComputev2):
|
|
|
946
946
|
self.set_compute_api_version('2.59')
|
|
947
947
|
|
|
948
948
|
self.server_migration = compute_fakes.create_one_server_migration()
|
|
949
|
-
self.
|
|
949
|
+
self.compute_client.server_migrations.return_value = iter(
|
|
950
950
|
[self.server_migration]
|
|
951
951
|
)
|
|
952
952
|
|
|
@@ -959,13 +959,13 @@ class TestServerMigrationAbort(compute_fakes.TestComputev2):
|
|
|
959
959
|
|
|
960
960
|
result = self.cmd.take_action(parsed_args)
|
|
961
961
|
|
|
962
|
-
self.
|
|
962
|
+
self.compute_client.find_server.assert_called_with(
|
|
963
963
|
self.server.id, ignore_missing=False
|
|
964
964
|
)
|
|
965
|
-
self.
|
|
965
|
+
self.compute_client.server_migrations.assert_called_with(
|
|
966
966
|
self.server.id
|
|
967
967
|
)
|
|
968
|
-
self.
|
|
968
|
+
self.compute_client.abort_server_migration.assert_called_with(
|
|
969
969
|
self.server_migration.id, self.server.id, ignore_missing=False
|
|
970
970
|
)
|
|
971
971
|
self.assertIsNone(result)
|
|
@@ -973,7 +973,7 @@ class TestServerMigrationAbort(compute_fakes.TestComputev2):
|
|
|
973
973
|
def test_server_migration_abort_by_uuid_no_matches(self):
|
|
974
974
|
self.set_compute_api_version('2.59')
|
|
975
975
|
|
|
976
|
-
self.
|
|
976
|
+
self.compute_client.server_migrations.return_value = iter([])
|
|
977
977
|
|
|
978
978
|
arglist = [
|
|
979
979
|
self.server.id,
|
|
@@ -1012,10 +1012,10 @@ class TestServerMigrationForceComplete(compute_fakes.TestComputev2):
|
|
|
1012
1012
|
def setUp(self):
|
|
1013
1013
|
super().setUp()
|
|
1014
1014
|
|
|
1015
|
-
self.server = compute_fakes.
|
|
1015
|
+
self.server = compute_fakes.create_one_server()
|
|
1016
1016
|
|
|
1017
1017
|
# Return value for utils.find_resource for server.
|
|
1018
|
-
self.
|
|
1018
|
+
self.compute_client.find_server.return_value = self.server
|
|
1019
1019
|
|
|
1020
1020
|
# Get the command object to test
|
|
1021
1021
|
self.cmd = server_migration.ForceCompleteMigration(self.app, None)
|
|
@@ -1032,10 +1032,10 @@ class TestServerMigrationForceComplete(compute_fakes.TestComputev2):
|
|
|
1032
1032
|
|
|
1033
1033
|
result = self.cmd.take_action(parsed_args)
|
|
1034
1034
|
|
|
1035
|
-
self.
|
|
1035
|
+
self.compute_client.find_server.assert_called_with(
|
|
1036
1036
|
self.server.id, ignore_missing=False
|
|
1037
1037
|
)
|
|
1038
|
-
self.
|
|
1038
|
+
self.compute_client.force_complete_server_migration.assert_called_with(
|
|
1039
1039
|
'2', self.server.id
|
|
1040
1040
|
)
|
|
1041
1041
|
self.assertIsNone(result)
|
|
@@ -1061,7 +1061,7 @@ class TestServerMigrationForceComplete(compute_fakes.TestComputev2):
|
|
|
1061
1061
|
self.set_compute_api_version('2.59')
|
|
1062
1062
|
|
|
1063
1063
|
self.server_migration = compute_fakes.create_one_server_migration()
|
|
1064
|
-
self.
|
|
1064
|
+
self.compute_client.server_migrations.return_value = iter(
|
|
1065
1065
|
[self.server_migration]
|
|
1066
1066
|
)
|
|
1067
1067
|
|
|
@@ -1074,13 +1074,13 @@ class TestServerMigrationForceComplete(compute_fakes.TestComputev2):
|
|
|
1074
1074
|
|
|
1075
1075
|
result = self.cmd.take_action(parsed_args)
|
|
1076
1076
|
|
|
1077
|
-
self.
|
|
1077
|
+
self.compute_client.find_server.assert_called_with(
|
|
1078
1078
|
self.server.id, ignore_missing=False
|
|
1079
1079
|
)
|
|
1080
|
-
self.
|
|
1080
|
+
self.compute_client.server_migrations.assert_called_with(
|
|
1081
1081
|
self.server.id
|
|
1082
1082
|
)
|
|
1083
|
-
self.
|
|
1083
|
+
self.compute_client.force_complete_server_migration.assert_called_with(
|
|
1084
1084
|
self.server_migration.id, self.server.id
|
|
1085
1085
|
)
|
|
1086
1086
|
self.assertIsNone(result)
|
|
@@ -1088,7 +1088,7 @@ class TestServerMigrationForceComplete(compute_fakes.TestComputev2):
|
|
|
1088
1088
|
def test_server_migration_force_complete_by_uuid_no_matches(self):
|
|
1089
1089
|
self.set_compute_api_version('2.59')
|
|
1090
1090
|
|
|
1091
|
-
self.
|
|
1091
|
+
self.compute_client.server_migrations.return_value = iter([])
|
|
1092
1092
|
|
|
1093
1093
|
arglist = [
|
|
1094
1094
|
self.server.id,
|
|
@@ -31,8 +31,8 @@ class TestServerVolumeList(compute_fakes.TestComputev2):
|
|
|
31
31
|
)
|
|
32
32
|
)
|
|
33
33
|
|
|
34
|
-
self.
|
|
35
|
-
self.
|
|
34
|
+
self.compute_client.find_server.return_value = self.server
|
|
35
|
+
self.compute_client.volume_attachments.return_value = (
|
|
36
36
|
self.volume_attachments
|
|
37
37
|
)
|
|
38
38
|
|
|
@@ -68,7 +68,7 @@ class TestServerVolumeList(compute_fakes.TestComputev2):
|
|
|
68
68
|
),
|
|
69
69
|
tuple(data),
|
|
70
70
|
)
|
|
71
|
-
self.
|
|
71
|
+
self.compute_client.volume_attachments.assert_called_once_with(
|
|
72
72
|
self.server,
|
|
73
73
|
)
|
|
74
74
|
|
|
@@ -114,7 +114,7 @@ class TestServerVolumeList(compute_fakes.TestComputev2):
|
|
|
114
114
|
),
|
|
115
115
|
tuple(data),
|
|
116
116
|
)
|
|
117
|
-
self.
|
|
117
|
+
self.compute_client.volume_attachments.assert_called_once_with(
|
|
118
118
|
self.server,
|
|
119
119
|
)
|
|
120
120
|
|
|
@@ -163,7 +163,7 @@ class TestServerVolumeList(compute_fakes.TestComputev2):
|
|
|
163
163
|
),
|
|
164
164
|
tuple(data),
|
|
165
165
|
)
|
|
166
|
-
self.
|
|
166
|
+
self.compute_client.volume_attachments.assert_called_once_with(
|
|
167
167
|
self.server,
|
|
168
168
|
)
|
|
169
169
|
|
|
@@ -215,7 +215,7 @@ class TestServerVolumeList(compute_fakes.TestComputev2):
|
|
|
215
215
|
),
|
|
216
216
|
tuple(data),
|
|
217
217
|
)
|
|
218
|
-
self.
|
|
218
|
+
self.compute_client.volume_attachments.assert_called_once_with(
|
|
219
219
|
self.server,
|
|
220
220
|
)
|
|
221
221
|
|
|
@@ -225,7 +225,7 @@ class TestServerVolumeUpdate(compute_fakes.TestComputev2):
|
|
|
225
225
|
super().setUp()
|
|
226
226
|
|
|
227
227
|
self.server = sdk_fakes.generate_fake_resource(_server.Server)
|
|
228
|
-
self.
|
|
228
|
+
self.compute_client.find_server.return_value = self.server
|
|
229
229
|
|
|
230
230
|
self.volume = sdk_fakes.generate_fake_resource(_volume.Volume)
|
|
231
231
|
self.volume_sdk_client.find_volume.return_value = self.volume
|
|
@@ -248,7 +248,7 @@ class TestServerVolumeUpdate(compute_fakes.TestComputev2):
|
|
|
248
248
|
result = self.cmd.take_action(parsed_args)
|
|
249
249
|
|
|
250
250
|
# This is a no-op
|
|
251
|
-
self.
|
|
251
|
+
self.compute_client.update_volume_attachment.assert_not_called()
|
|
252
252
|
self.assertIsNone(result)
|
|
253
253
|
|
|
254
254
|
def test_server_volume_update_with_delete_on_termination(self):
|
|
@@ -268,7 +268,7 @@ class TestServerVolumeUpdate(compute_fakes.TestComputev2):
|
|
|
268
268
|
|
|
269
269
|
result = self.cmd.take_action(parsed_args)
|
|
270
270
|
|
|
271
|
-
self.
|
|
271
|
+
self.compute_client.update_volume_attachment.assert_called_once_with(
|
|
272
272
|
self.server,
|
|
273
273
|
self.volume,
|
|
274
274
|
delete_on_termination=True,
|
|
@@ -292,7 +292,7 @@ class TestServerVolumeUpdate(compute_fakes.TestComputev2):
|
|
|
292
292
|
|
|
293
293
|
result = self.cmd.take_action(parsed_args)
|
|
294
294
|
|
|
295
|
-
self.
|
|
295
|
+
self.compute_client.update_volume_attachment.assert_called_once_with(
|
|
296
296
|
self.server, self.volume, delete_on_termination=False
|
|
297
297
|
)
|
|
298
298
|
self.assertIsNone(result)
|
|
@@ -317,7 +317,7 @@ class TestServerVolumeUpdate(compute_fakes.TestComputev2):
|
|
|
317
317
|
self.cmd.take_action,
|
|
318
318
|
parsed_args,
|
|
319
319
|
)
|
|
320
|
-
self.
|
|
320
|
+
self.compute_client.update_volume_attachment.assert_not_called()
|
|
321
321
|
|
|
322
322
|
def test_server_volume_update_with_preserve_on_termination_pre_v285(self):
|
|
323
323
|
self.set_compute_api_version('2.84')
|
|
@@ -339,4 +339,4 @@ class TestServerVolumeUpdate(compute_fakes.TestComputev2):
|
|
|
339
339
|
self.cmd.take_action,
|
|
340
340
|
parsed_args,
|
|
341
341
|
)
|
|
342
|
-
self.
|
|
342
|
+
self.compute_client.update_volume_attachment.assert_not_called()
|