python-openstackclient 8.0.0__py3-none-any.whl → 8.2.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/api/compute_v2.py +2 -2
- openstackclient/api/volume_v2.py +60 -0
- openstackclient/api/volume_v3.py +60 -0
- openstackclient/compute/client.py +5 -0
- openstackclient/compute/v2/console.py +7 -0
- openstackclient/compute/v2/console_connection.py +48 -0
- openstackclient/compute/v2/flavor.py +14 -1
- openstackclient/compute/v2/keypair.py +10 -3
- openstackclient/compute/v2/server.py +76 -13
- openstackclient/compute/v2/server_event.py +1 -1
- openstackclient/identity/common.py +85 -11
- openstackclient/identity/v3/application_credential.py +88 -87
- openstackclient/identity/v3/domain.py +67 -49
- openstackclient/identity/v3/group.py +113 -68
- openstackclient/identity/v3/project.py +42 -20
- openstackclient/identity/v3/role.py +7 -2
- openstackclient/identity/v3/user.py +38 -5
- openstackclient/image/client.py +5 -0
- openstackclient/image/v1/image.py +16 -1
- openstackclient/image/v2/cache.py +10 -6
- openstackclient/image/v2/image.py +59 -12
- openstackclient/image/v2/metadef_objects.py +8 -2
- openstackclient/image/v2/metadef_properties.py +9 -2
- openstackclient/network/client.py +0 -6
- openstackclient/network/v2/floating_ip.py +58 -29
- openstackclient/network/v2/network_qos_rule.py +3 -11
- openstackclient/network/v2/port.py +16 -0
- openstackclient/network/v2/router.py +1 -1
- openstackclient/network/v2/security_group.py +49 -7
- openstackclient/network/v2/security_group_rule.py +18 -1
- openstackclient/shell.py +1 -1
- openstackclient/tests/functional/base.py +5 -1
- openstackclient/tests/functional/compute/v2/test_keypair.py +41 -5
- openstackclient/tests/functional/identity/v3/test_access_rule.py +1 -1
- openstackclient/tests/functional/identity/v3/test_application_credential.py +7 -7
- openstackclient/tests/functional/image/v2/test_image.py +36 -14
- openstackclient/tests/functional/volume/v2/test_volume.py +1 -1
- openstackclient/tests/functional/volume/v3/test_volume.py +2 -2
- openstackclient/tests/unit/api/test_volume_v2.py +124 -0
- openstackclient/tests/unit/api/test_volume_v3.py +124 -0
- openstackclient/tests/unit/compute/v2/fakes.py +81 -305
- openstackclient/tests/unit/compute/v2/test_console.py +18 -1
- openstackclient/tests/unit/compute/v2/test_console_connection.py +72 -0
- openstackclient/tests/unit/compute/v2/test_flavor.py +160 -175
- openstackclient/tests/unit/compute/v2/test_keypair.py +12 -5
- openstackclient/tests/unit/compute/v2/test_server.py +211 -97
- openstackclient/tests/unit/compute/v2/test_server_backup.py +32 -71
- openstackclient/tests/unit/compute/v2/test_server_event.py +2 -2
- openstackclient/tests/unit/compute/v2/test_server_image.py +33 -72
- openstackclient/tests/unit/compute/v2/test_server_migration.py +4 -4
- openstackclient/tests/unit/identity/v3/test_application_credential.py +93 -65
- openstackclient/tests/unit/identity/v3/test_domain.py +117 -107
- openstackclient/tests/unit/identity/v3/test_group.py +353 -202
- openstackclient/tests/unit/identity/v3/test_project.py +46 -53
- openstackclient/tests/unit/identity/v3/test_role.py +2 -8
- openstackclient/tests/unit/identity/v3/test_user.py +86 -6
- openstackclient/tests/unit/image/v1/test_image.py +55 -9
- openstackclient/tests/unit/image/v2/test_image.py +128 -58
- openstackclient/tests/unit/image/v2/test_metadef_objects.py +22 -0
- openstackclient/tests/unit/image/v2/test_metadef_properties.py +24 -10
- openstackclient/tests/unit/network/v2/fakes.py +406 -485
- openstackclient/tests/unit/network/v2/test_floating_ip_network.py +13 -19
- openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py +2 -2
- openstackclient/tests/unit/network/v2/test_ndp_proxy.py +3 -5
- 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_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_port.py +57 -17
- openstackclient/tests/unit/network/v2/test_router.py +73 -57
- openstackclient/tests/unit/network/v2/test_security_group_network.py +31 -27
- openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py +1 -3
- openstackclient/tests/unit/network/v2/test_security_group_rule_network.py +82 -39
- 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 +466 -410
- 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/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 +569 -534
- openstackclient/tests/unit/volume/v3/test_volume_attachment.py +1 -1
- openstackclient/tests/unit/volume/v3/test_volume_backup.py +198 -203
- openstackclient/tests/unit/volume/v3/test_volume_snapshot.py +682 -47
- openstackclient/volume/v2/service.py +41 -38
- openstackclient/volume/v2/volume.py +140 -88
- openstackclient/volume/v2/volume_backup.py +9 -3
- openstackclient/volume/v2/volume_snapshot.py +121 -84
- openstackclient/volume/v3/block_storage_log_level.py +22 -28
- openstackclient/volume/v3/service.py +105 -14
- openstackclient/volume/v3/volume.py +287 -99
- openstackclient/volume/v3/volume_backup.py +24 -19
- openstackclient/volume/v3/volume_group.py +1 -1
- openstackclient/volume/v3/volume_snapshot.py +485 -10
- {python_openstackclient-8.0.0.dist-info → python_openstackclient-8.2.0.dist-info}/AUTHORS +13 -0
- python_openstackclient-8.2.0.dist-info/METADATA +264 -0
- {python_openstackclient-8.0.0.dist-info → python_openstackclient-8.2.0.dist-info}/RECORD +104 -98
- {python_openstackclient-8.0.0.dist-info → python_openstackclient-8.2.0.dist-info}/entry_points.txt +7 -6
- python_openstackclient-8.2.0.dist-info/pbr.json +1 -0
- python_openstackclient-8.0.0.dist-info/METADATA +0 -166
- python_openstackclient-8.0.0.dist-info/pbr.json +0 -1
- {python_openstackclient-8.0.0.dist-info → python_openstackclient-8.2.0.dist-info}/LICENSE +0 -0
- {python_openstackclient-8.0.0.dist-info → python_openstackclient-8.2.0.dist-info}/WHEEL +0 -0
- {python_openstackclient-8.0.0.dist-info → python_openstackclient-8.2.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,7 +71,7 @@ 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
|
)
|
|
@@ -88,10 +89,6 @@ class TestServerAddFixedIP(TestServer):
|
|
|
88
89
|
# Get the command object to test
|
|
89
90
|
self.cmd = server.AddFixedIP(self.app, None)
|
|
90
91
|
|
|
91
|
-
# Mock network methods
|
|
92
|
-
self.find_network = mock.Mock()
|
|
93
|
-
self.app.client_manager.network.find_network = self.find_network
|
|
94
|
-
|
|
95
92
|
def test_server_add_fixed_ip_pre_v249_with_tag(self):
|
|
96
93
|
self.set_compute_api_version('2.48')
|
|
97
94
|
|
|
@@ -348,7 +345,7 @@ class TestServerAddFloatingIPCompute(compute_fakes.TestComputev2):
|
|
|
348
345
|
super().setUp()
|
|
349
346
|
|
|
350
347
|
self.app.client_manager.network_endpoint_enabled = False
|
|
351
|
-
self.server = compute_fakes.
|
|
348
|
+
self.server = compute_fakes.create_one_server()
|
|
352
349
|
self.compute_client.find_server.return_value = self.server
|
|
353
350
|
|
|
354
351
|
self.cmd = server.AddFloatingIP(self.app, None)
|
|
@@ -404,10 +401,10 @@ class TestServerAddFloatingIPNetwork(
|
|
|
404
401
|
def setUp(self):
|
|
405
402
|
super().setUp()
|
|
406
403
|
|
|
407
|
-
self.server = compute_fakes.
|
|
404
|
+
self.server = compute_fakes.create_one_server()
|
|
408
405
|
self.compute_client.find_server.return_value = self.server
|
|
409
406
|
|
|
410
|
-
self.network_client.update_ip =
|
|
407
|
+
self.network_client.update_ip.return_value = None
|
|
411
408
|
|
|
412
409
|
# Get the command object to test
|
|
413
410
|
self.cmd = server.AddFloatingIP(self.app, None)
|
|
@@ -415,8 +412,8 @@ class TestServerAddFloatingIPNetwork(
|
|
|
415
412
|
def test_server_add_floating_ip(self):
|
|
416
413
|
_port = network_fakes.create_one_port()
|
|
417
414
|
_floating_ip = network_fakes.FakeFloatingIP.create_one_floating_ip()
|
|
418
|
-
self.network_client.find_ip =
|
|
419
|
-
self.network_client.ports =
|
|
415
|
+
self.network_client.find_ip.return_value = _floating_ip
|
|
416
|
+
self.network_client.ports.return_value = [_port]
|
|
420
417
|
arglist = [
|
|
421
418
|
self.server.id,
|
|
422
419
|
_floating_ip['floating_ip_address'],
|
|
@@ -447,8 +444,8 @@ class TestServerAddFloatingIPNetwork(
|
|
|
447
444
|
def test_server_add_floating_ip_no_ports(self):
|
|
448
445
|
floating_ip = network_fakes.FakeFloatingIP.create_one_floating_ip()
|
|
449
446
|
|
|
450
|
-
self.network_client.find_ip =
|
|
451
|
-
self.network_client.ports =
|
|
447
|
+
self.network_client.find_ip.return_value = floating_ip
|
|
448
|
+
self.network_client.ports.return_value = []
|
|
452
449
|
|
|
453
450
|
arglist = [
|
|
454
451
|
self.server.id,
|
|
@@ -478,17 +475,17 @@ class TestServerAddFloatingIPNetwork(
|
|
|
478
475
|
def test_server_add_floating_ip_no_external_gateway(self, success=False):
|
|
479
476
|
_port = network_fakes.create_one_port()
|
|
480
477
|
_floating_ip = network_fakes.FakeFloatingIP.create_one_floating_ip()
|
|
481
|
-
self.network_client.find_ip =
|
|
478
|
+
self.network_client.find_ip.return_value = _floating_ip
|
|
482
479
|
return_value = [_port]
|
|
483
480
|
# In the success case, we'll have two ports, where the first port is
|
|
484
481
|
# not attached to an external gateway but the second port is.
|
|
485
482
|
if success:
|
|
486
483
|
return_value.append(_port)
|
|
487
|
-
self.network_client.ports =
|
|
484
|
+
self.network_client.ports.return_value = return_value
|
|
488
485
|
side_effect = [sdk_exceptions.NotFoundException()]
|
|
489
486
|
if success:
|
|
490
487
|
side_effect.append(None)
|
|
491
|
-
self.network_client.update_ip =
|
|
488
|
+
self.network_client.update_ip.side_effect = side_effect
|
|
492
489
|
arglist = [
|
|
493
490
|
self.server.id,
|
|
494
491
|
_floating_ip['floating_ip_address'],
|
|
@@ -534,8 +531,8 @@ class TestServerAddFloatingIPNetwork(
|
|
|
534
531
|
def test_server_add_floating_ip_with_fixed_ip(self):
|
|
535
532
|
_port = network_fakes.create_one_port()
|
|
536
533
|
_floating_ip = network_fakes.FakeFloatingIP.create_one_floating_ip()
|
|
537
|
-
self.network_client.find_ip =
|
|
538
|
-
self.network_client.ports =
|
|
534
|
+
self.network_client.find_ip.return_value = _floating_ip
|
|
535
|
+
self.network_client.ports.return_value = [_port]
|
|
539
536
|
# The user has specified a fixed ip that matches one of the ports
|
|
540
537
|
# already attached to the instance.
|
|
541
538
|
arglist = [
|
|
@@ -574,8 +571,8 @@ class TestServerAddFloatingIPNetwork(
|
|
|
574
571
|
def test_server_add_floating_ip_with_fixed_ip_no_port_found(self):
|
|
575
572
|
_port = network_fakes.create_one_port()
|
|
576
573
|
_floating_ip = network_fakes.FakeFloatingIP.create_one_floating_ip()
|
|
577
|
-
self.network_client.find_ip =
|
|
578
|
-
self.network_client.ports =
|
|
574
|
+
self.network_client.find_ip.return_value = _floating_ip
|
|
575
|
+
self.network_client.ports.return_value = [_port]
|
|
579
576
|
# The user has specified a fixed ip that does not match any of the
|
|
580
577
|
# ports already attached to the instance.
|
|
581
578
|
nonexistent_ip = '10.0.0.9'
|
|
@@ -613,9 +610,6 @@ class TestServerAddPort(TestServer):
|
|
|
613
610
|
# Get the command object to test
|
|
614
611
|
self.cmd = server.AddPort(self.app, None)
|
|
615
612
|
|
|
616
|
-
self.find_port = mock.Mock()
|
|
617
|
-
self.app.client_manager.network.find_port = self.find_port
|
|
618
|
-
|
|
619
613
|
def _test_server_add_port(self, port_id):
|
|
620
614
|
servers = self.setup_sdk_servers_mock(count=1)
|
|
621
615
|
port = 'fake-port'
|
|
@@ -635,21 +629,23 @@ class TestServerAddPort(TestServer):
|
|
|
635
629
|
self.assertIsNone(result)
|
|
636
630
|
|
|
637
631
|
def test_server_add_port(self):
|
|
638
|
-
self._test_server_add_port(
|
|
639
|
-
|
|
632
|
+
self._test_server_add_port(
|
|
633
|
+
self.network_client.find_port.return_value.id
|
|
634
|
+
)
|
|
635
|
+
self.network_client.find_port.assert_called_once_with(
|
|
640
636
|
'fake-port', ignore_missing=False
|
|
641
637
|
)
|
|
642
638
|
|
|
643
639
|
def test_server_add_port_no_neutron(self):
|
|
644
640
|
self.app.client_manager.network_endpoint_enabled = False
|
|
645
641
|
self._test_server_add_port('fake-port')
|
|
646
|
-
self.find_port.assert_not_called()
|
|
642
|
+
self.network_client.find_port.assert_not_called()
|
|
647
643
|
|
|
648
644
|
def test_server_add_port_with_tag(self):
|
|
649
645
|
self.set_compute_api_version('2.49')
|
|
650
646
|
|
|
651
647
|
servers = self.setup_sdk_servers_mock(count=1)
|
|
652
|
-
self.find_port.return_value.id = 'fake-port'
|
|
648
|
+
self.network_client.find_port.return_value.id = 'fake-port'
|
|
653
649
|
arglist = [
|
|
654
650
|
servers[0].id,
|
|
655
651
|
'fake-port',
|
|
@@ -674,7 +670,7 @@ class TestServerAddPort(TestServer):
|
|
|
674
670
|
self.set_compute_api_version('2.48')
|
|
675
671
|
|
|
676
672
|
servers = self.setup_sdk_servers_mock(count=1)
|
|
677
|
-
self.find_port.return_value.id = 'fake-port'
|
|
673
|
+
self.network_client.find_port.return_value.id = 'fake-port'
|
|
678
674
|
arglist = [
|
|
679
675
|
servers[0].id,
|
|
680
676
|
'fake-port',
|
|
@@ -700,7 +696,7 @@ class TestServerVolume(TestServer):
|
|
|
700
696
|
def setUp(self):
|
|
701
697
|
super().setUp()
|
|
702
698
|
|
|
703
|
-
self.server = compute_fakes.
|
|
699
|
+
self.server = compute_fakes.create_one_server()
|
|
704
700
|
self.compute_client.find_server.return_value = self.server
|
|
705
701
|
|
|
706
702
|
self.volume = volume_fakes.create_one_sdk_volume()
|
|
@@ -1037,9 +1033,6 @@ class TestServerAddNetwork(TestServer):
|
|
|
1037
1033
|
# Get the command object to test
|
|
1038
1034
|
self.cmd = server.AddNetwork(self.app, None)
|
|
1039
1035
|
|
|
1040
|
-
self.find_network = mock.Mock()
|
|
1041
|
-
self.app.client_manager.network.find_network = self.find_network
|
|
1042
|
-
|
|
1043
1036
|
def _test_server_add_network(self, net_id):
|
|
1044
1037
|
servers = self.setup_sdk_servers_mock(count=1)
|
|
1045
1038
|
network = 'fake-network'
|
|
@@ -1059,21 +1052,23 @@ class TestServerAddNetwork(TestServer):
|
|
|
1059
1052
|
self.assertIsNone(result)
|
|
1060
1053
|
|
|
1061
1054
|
def test_server_add_network(self):
|
|
1062
|
-
self._test_server_add_network(
|
|
1063
|
-
|
|
1055
|
+
self._test_server_add_network(
|
|
1056
|
+
self.network_client.find_network.return_value.id
|
|
1057
|
+
)
|
|
1058
|
+
self.network_client.find_network.assert_called_once_with(
|
|
1064
1059
|
'fake-network', ignore_missing=False
|
|
1065
1060
|
)
|
|
1066
1061
|
|
|
1067
1062
|
def test_server_add_network_no_neutron(self):
|
|
1068
1063
|
self.app.client_manager.network_endpoint_enabled = False
|
|
1069
1064
|
self._test_server_add_network('fake-network')
|
|
1070
|
-
self.find_network.assert_not_called()
|
|
1065
|
+
self.network_client.find_network.assert_not_called()
|
|
1071
1066
|
|
|
1072
1067
|
def test_server_add_network_with_tag(self):
|
|
1073
1068
|
self.set_compute_api_version('2.49')
|
|
1074
1069
|
|
|
1075
1070
|
servers = self.setup_sdk_servers_mock(count=1)
|
|
1076
|
-
self.find_network.return_value.id = 'fake-network'
|
|
1071
|
+
self.network_client.find_network.return_value.id = 'fake-network'
|
|
1077
1072
|
|
|
1078
1073
|
arglist = [
|
|
1079
1074
|
servers[0].id,
|
|
@@ -1099,7 +1094,7 @@ class TestServerAddNetwork(TestServer):
|
|
|
1099
1094
|
self.set_compute_api_version('2.48')
|
|
1100
1095
|
|
|
1101
1096
|
servers = self.setup_sdk_servers_mock(count=1)
|
|
1102
|
-
self.find_network.return_value.id = 'fake-network'
|
|
1097
|
+
self.network_client.find_network.return_value.id = 'fake-network'
|
|
1103
1098
|
|
|
1104
1099
|
arglist = [
|
|
1105
1100
|
servers[0].id,
|
|
@@ -1126,7 +1121,7 @@ class TestServerAddSecurityGroup(compute_fakes.TestComputev2):
|
|
|
1126
1121
|
def setUp(self):
|
|
1127
1122
|
super().setUp()
|
|
1128
1123
|
|
|
1129
|
-
self.server = compute_fakes.
|
|
1124
|
+
self.server = compute_fakes.create_one_server()
|
|
1130
1125
|
self.compute_client.find_server.return_value = self.server
|
|
1131
1126
|
self.compute_client.add_security_group_to_server.return_value = None
|
|
1132
1127
|
|
|
@@ -1295,7 +1290,7 @@ class TestServerCreate(TestServer):
|
|
|
1295
1290
|
'image': self.image,
|
|
1296
1291
|
'flavor': self.flavor,
|
|
1297
1292
|
}
|
|
1298
|
-
self.server = compute_fakes.
|
|
1293
|
+
self.server = compute_fakes.create_one_server(attrs=attrs)
|
|
1299
1294
|
|
|
1300
1295
|
self.compute_client.create_server.return_value = self.server
|
|
1301
1296
|
self.compute_client.get_server.return_value = self.server
|
|
@@ -1704,7 +1699,7 @@ class TestServerCreate(TestServer):
|
|
|
1704
1699
|
},
|
|
1705
1700
|
{
|
|
1706
1701
|
'uuid': network_net2.id,
|
|
1707
|
-
'
|
|
1702
|
+
'fixed_ip': '10.0.0.2',
|
|
1708
1703
|
},
|
|
1709
1704
|
{
|
|
1710
1705
|
'port': port_port1.id,
|
|
@@ -4382,7 +4377,7 @@ class TestServerDelete(compute_fakes.TestComputev2):
|
|
|
4382
4377
|
def setUp(self):
|
|
4383
4378
|
super().setUp()
|
|
4384
4379
|
|
|
4385
|
-
self.server = compute_fakes.
|
|
4380
|
+
self.server = compute_fakes.create_one_server()
|
|
4386
4381
|
self.compute_client.find_server.return_value = self.server
|
|
4387
4382
|
self.compute_client.delete_server.return_value = None
|
|
4388
4383
|
|
|
@@ -4429,7 +4424,7 @@ class TestServerDelete(compute_fakes.TestComputev2):
|
|
|
4429
4424
|
self.assertIsNone(result)
|
|
4430
4425
|
|
|
4431
4426
|
def test_server_delete_multi_servers(self):
|
|
4432
|
-
servers = compute_fakes.
|
|
4427
|
+
servers = compute_fakes.create_servers(count=3)
|
|
4433
4428
|
self.compute_client.find_server.return_value = None
|
|
4434
4429
|
self.compute_client.find_server.side_effect = servers
|
|
4435
4430
|
|
|
@@ -4591,6 +4586,16 @@ class _TestServerList(TestServer):
|
|
|
4591
4586
|
'Pinned Availability Zone',
|
|
4592
4587
|
'Host',
|
|
4593
4588
|
'Properties',
|
|
4589
|
+
'Scheduler Hints',
|
|
4590
|
+
)
|
|
4591
|
+
columns_all_projects = (
|
|
4592
|
+
'ID',
|
|
4593
|
+
'Name',
|
|
4594
|
+
'Status',
|
|
4595
|
+
'Networks',
|
|
4596
|
+
'Image',
|
|
4597
|
+
'Flavor',
|
|
4598
|
+
'Project ID',
|
|
4594
4599
|
)
|
|
4595
4600
|
|
|
4596
4601
|
def setUp(self):
|
|
@@ -4730,6 +4735,7 @@ class TestServerList(_TestServerList):
|
|
|
4730
4735
|
getattr(s, 'pinned_availability_zone', ''),
|
|
4731
4736
|
server.HostColumn(getattr(s, 'hypervisor_hostname')),
|
|
4732
4737
|
format_columns.DictColumn(s.metadata),
|
|
4738
|
+
format_columns.DictListColumn(None),
|
|
4733
4739
|
)
|
|
4734
4740
|
for s in self.servers
|
|
4735
4741
|
)
|
|
@@ -4752,6 +4758,36 @@ class TestServerList(_TestServerList):
|
|
|
4752
4758
|
self.assertEqual(self.columns_long, columns)
|
|
4753
4759
|
self.assertEqual(self.data, tuple(data))
|
|
4754
4760
|
|
|
4761
|
+
def test_server_list_all_projects_option(self):
|
|
4762
|
+
self.data = tuple(
|
|
4763
|
+
(
|
|
4764
|
+
s.id,
|
|
4765
|
+
s.name,
|
|
4766
|
+
s.status,
|
|
4767
|
+
server.AddressesColumn(s.addresses),
|
|
4768
|
+
# Image will be an empty string if boot-from-volume
|
|
4769
|
+
self.image.name if s.image else server.IMAGE_STRING_FOR_BFV,
|
|
4770
|
+
self.flavor.name,
|
|
4771
|
+
s.project_id,
|
|
4772
|
+
)
|
|
4773
|
+
for s in self.servers
|
|
4774
|
+
)
|
|
4775
|
+
arglist = [
|
|
4776
|
+
'--all-projects',
|
|
4777
|
+
]
|
|
4778
|
+
verifylist = [
|
|
4779
|
+
('all_projects', True),
|
|
4780
|
+
('long', False),
|
|
4781
|
+
('deleted', False),
|
|
4782
|
+
]
|
|
4783
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
4784
|
+
columns, data = self.cmd.take_action(parsed_args)
|
|
4785
|
+
|
|
4786
|
+
self.image_client.images.assert_called()
|
|
4787
|
+
self.compute_client.flavors.assert_called()
|
|
4788
|
+
self.assertEqual(self.columns_all_projects, columns)
|
|
4789
|
+
self.assertEqual(self.data, tuple(data))
|
|
4790
|
+
|
|
4755
4791
|
def test_server_list_column_option(self):
|
|
4756
4792
|
arglist = [
|
|
4757
4793
|
'-c',
|
|
@@ -4778,6 +4814,8 @@ class TestServerList(_TestServerList):
|
|
|
4778
4814
|
'Host',
|
|
4779
4815
|
'-c',
|
|
4780
4816
|
'Properties',
|
|
4817
|
+
'-c',
|
|
4818
|
+
'Scheduler Hints',
|
|
4781
4819
|
'--long',
|
|
4782
4820
|
]
|
|
4783
4821
|
verifylist = [
|
|
@@ -4800,6 +4838,7 @@ class TestServerList(_TestServerList):
|
|
|
4800
4838
|
self.assertIn('Pinned Availability Zone', columns)
|
|
4801
4839
|
self.assertIn('Host', columns)
|
|
4802
4840
|
self.assertIn('Properties', columns)
|
|
4841
|
+
self.assertIn('Scheduler Hints', columns)
|
|
4803
4842
|
self.assertCountEqual(columns, set(columns))
|
|
4804
4843
|
|
|
4805
4844
|
def test_server_list_no_name_lookup_option(self):
|
|
@@ -5213,6 +5252,7 @@ class TestServerList(_TestServerList):
|
|
|
5213
5252
|
getattr(s, 'pinned_availability_zone', ''),
|
|
5214
5253
|
server.HostColumn(getattr(s, 'hypervisor_hostname')),
|
|
5215
5254
|
format_columns.DictColumn(s.metadata),
|
|
5255
|
+
format_columns.DictListColumn(s.scheduler_hints),
|
|
5216
5256
|
)
|
|
5217
5257
|
for s in self.servers
|
|
5218
5258
|
)
|
|
@@ -5268,6 +5308,7 @@ class TestServerList(_TestServerList):
|
|
|
5268
5308
|
getattr(s, 'pinned_availability_zone', ''),
|
|
5269
5309
|
server.HostColumn(getattr(s, 'hypervisor_hostname')),
|
|
5270
5310
|
format_columns.DictColumn(s.metadata),
|
|
5311
|
+
format_columns.DictListColumn(s.scheduler_hints),
|
|
5271
5312
|
s.host_status,
|
|
5272
5313
|
)
|
|
5273
5314
|
for s in servers
|
|
@@ -5305,6 +5346,7 @@ class TestServerListV273(_TestServerList):
|
|
|
5305
5346
|
'Pinned Availability Zone',
|
|
5306
5347
|
'Host',
|
|
5307
5348
|
'Properties',
|
|
5349
|
+
'Scheduler Hints',
|
|
5308
5350
|
)
|
|
5309
5351
|
|
|
5310
5352
|
def setUp(self):
|
|
@@ -5479,9 +5521,7 @@ class TestServerListV273(_TestServerList):
|
|
|
5479
5521
|
],
|
|
5480
5522
|
"networks": {},
|
|
5481
5523
|
}
|
|
5482
|
-
fake_server =
|
|
5483
|
-
info=server_dict,
|
|
5484
|
-
)
|
|
5524
|
+
fake_server = _server.Server(**server_dict)
|
|
5485
5525
|
self.servers.append(fake_server)
|
|
5486
5526
|
columns, data = self.cmd.take_action(parsed_args)
|
|
5487
5527
|
# get the first three servers out since our interest is in the partial
|
|
@@ -5492,9 +5532,9 @@ class TestServerListV273(_TestServerList):
|
|
|
5492
5532
|
partial_server = next(data)
|
|
5493
5533
|
expected_row = (
|
|
5494
5534
|
'server-id-95a56bfc4xxxxxx28d7e418bfd97813a',
|
|
5495
|
-
|
|
5535
|
+
None,
|
|
5496
5536
|
'UNKNOWN',
|
|
5497
|
-
server.AddressesColumn(
|
|
5537
|
+
server.AddressesColumn(None),
|
|
5498
5538
|
'',
|
|
5499
5539
|
'',
|
|
5500
5540
|
)
|
|
@@ -5503,7 +5543,7 @@ class TestServerListV273(_TestServerList):
|
|
|
5503
5543
|
|
|
5504
5544
|
class TestServerAction(compute_fakes.TestComputev2):
|
|
5505
5545
|
def run_method_with_sdk_servers(self, method_name, server_count):
|
|
5506
|
-
servers = compute_fakes.
|
|
5546
|
+
servers = compute_fakes.create_servers(count=server_count)
|
|
5507
5547
|
self.compute_client.find_server.side_effect = servers
|
|
5508
5548
|
|
|
5509
5549
|
arglist = [s.id for s in servers]
|
|
@@ -5536,7 +5576,7 @@ class TestServerLock(TestServerAction):
|
|
|
5536
5576
|
def test_server_lock_with_reason(self):
|
|
5537
5577
|
self.set_compute_api_version('2.73')
|
|
5538
5578
|
|
|
5539
|
-
self.server = compute_fakes.
|
|
5579
|
+
self.server = compute_fakes.create_one_server()
|
|
5540
5580
|
self.compute_client.find_server.return_value = self.server
|
|
5541
5581
|
self.compute_client.lock_server.return_value = None
|
|
5542
5582
|
|
|
@@ -5565,8 +5605,8 @@ class TestServerLock(TestServerAction):
|
|
|
5565
5605
|
def test_server_lock_with_reason_multi_servers(self):
|
|
5566
5606
|
self.set_compute_api_version('2.73')
|
|
5567
5607
|
|
|
5568
|
-
server_a = compute_fakes.
|
|
5569
|
-
server_b = compute_fakes.
|
|
5608
|
+
server_a = compute_fakes.create_one_server()
|
|
5609
|
+
server_b = compute_fakes.create_one_server()
|
|
5570
5610
|
|
|
5571
5611
|
self.compute_client.find_server.side_effect = [server_a, server_b]
|
|
5572
5612
|
self.compute_client.lock_server.return_value = None
|
|
@@ -5595,7 +5635,7 @@ class TestServerLock(TestServerAction):
|
|
|
5595
5635
|
def test_server_lock_with_reason_pre_v273(self):
|
|
5596
5636
|
self.set_compute_api_version('2.72')
|
|
5597
5637
|
|
|
5598
|
-
server = compute_fakes.
|
|
5638
|
+
server = compute_fakes.create_one_server()
|
|
5599
5639
|
|
|
5600
5640
|
arglist = [
|
|
5601
5641
|
server.id,
|
|
@@ -5623,7 +5663,7 @@ class TestServerMigrate(TestServer):
|
|
|
5623
5663
|
def setUp(self):
|
|
5624
5664
|
super().setUp()
|
|
5625
5665
|
|
|
5626
|
-
self.server = compute_fakes.
|
|
5666
|
+
self.server = compute_fakes.create_one_server()
|
|
5627
5667
|
self.compute_client.find_server.return_value = self.server
|
|
5628
5668
|
self.compute_client.migrate_server.return_value = None
|
|
5629
5669
|
self.compute_client.live_migrate_server.return_value = None
|
|
@@ -6168,7 +6208,7 @@ class TestServerRebuild(TestServer):
|
|
|
6168
6208
|
'status': 'ACTIVE',
|
|
6169
6209
|
'image': {'id': self.image.id},
|
|
6170
6210
|
}
|
|
6171
|
-
self.server = compute_fakes.
|
|
6211
|
+
self.server = compute_fakes.create_one_server(attrs=attrs)
|
|
6172
6212
|
self.compute_client.find_server.return_value = self.server
|
|
6173
6213
|
self.compute_client.rebuild_server.return_value = self.server
|
|
6174
6214
|
|
|
@@ -6903,7 +6943,7 @@ class TestServerRebuildVolumeBacked(TestServer):
|
|
|
6903
6943
|
'status': 'ACTIVE',
|
|
6904
6944
|
'image': '',
|
|
6905
6945
|
}
|
|
6906
|
-
self.server = compute_fakes.
|
|
6946
|
+
self.server = compute_fakes.create_one_server(attrs=attrs)
|
|
6907
6947
|
self.compute_client.find_server.return_value = self.server
|
|
6908
6948
|
self.compute_client.rebuild_server.return_value = self.server
|
|
6909
6949
|
|
|
@@ -6993,10 +7033,11 @@ class TestServerEvacuate(TestServer):
|
|
|
6993
7033
|
'image': self.image,
|
|
6994
7034
|
'networks': {},
|
|
6995
7035
|
'adminPass': 'passw0rd',
|
|
7036
|
+
'status': 'ACTIVE',
|
|
6996
7037
|
}
|
|
6997
|
-
self.server = compute_fakes.
|
|
7038
|
+
self.server = compute_fakes.create_one_server(attrs=attrs)
|
|
6998
7039
|
attrs['id'] = self.server.id
|
|
6999
|
-
self.new_server = compute_fakes.
|
|
7040
|
+
self.new_server = compute_fakes.create_one_server(attrs=attrs)
|
|
7000
7041
|
|
|
7001
7042
|
# Return value for utils.find_resource for server.
|
|
7002
7043
|
self.compute_client.find_server.return_value = self.server
|
|
@@ -7130,6 +7171,33 @@ class TestServerEvacuate(TestServer):
|
|
|
7130
7171
|
mock_wait_for_status.assert_called_once_with(
|
|
7131
7172
|
self.compute_client.get_server,
|
|
7132
7173
|
self.server.id,
|
|
7174
|
+
success_status=['ACTIVE'],
|
|
7175
|
+
callback=mock.ANY,
|
|
7176
|
+
)
|
|
7177
|
+
|
|
7178
|
+
@mock.patch.object(common_utils, 'wait_for_status', return_value=True)
|
|
7179
|
+
def test_evacuate_with_wait_ok_shutoff(self, mock_wait_for_status):
|
|
7180
|
+
self.server.status = 'SHUTOFF'
|
|
7181
|
+
self.compute_client.get_server.return_value = self.server
|
|
7182
|
+
|
|
7183
|
+
args = [
|
|
7184
|
+
self.server.id,
|
|
7185
|
+
'--wait',
|
|
7186
|
+
]
|
|
7187
|
+
verify_args = [
|
|
7188
|
+
('server', self.server.id),
|
|
7189
|
+
('wait', True),
|
|
7190
|
+
]
|
|
7191
|
+
evac_args = {
|
|
7192
|
+
'host': None,
|
|
7193
|
+
'on_shared_storage': False,
|
|
7194
|
+
'admin_pass': None,
|
|
7195
|
+
}
|
|
7196
|
+
self._test_evacuate(args, verify_args, evac_args)
|
|
7197
|
+
mock_wait_for_status.assert_called_once_with(
|
|
7198
|
+
self.compute_client.get_server,
|
|
7199
|
+
self.server.id,
|
|
7200
|
+
success_status=['ACTIVE', 'SHUTOFF'],
|
|
7133
7201
|
callback=mock.ANY,
|
|
7134
7202
|
)
|
|
7135
7203
|
|
|
@@ -7138,7 +7206,7 @@ class TestServerRemoveFixedIP(compute_fakes.TestComputev2):
|
|
|
7138
7206
|
def setUp(self):
|
|
7139
7207
|
super().setUp()
|
|
7140
7208
|
|
|
7141
|
-
self.server = compute_fakes.
|
|
7209
|
+
self.server = compute_fakes.create_one_server()
|
|
7142
7210
|
|
|
7143
7211
|
# Get the command object to test
|
|
7144
7212
|
self.cmd = server.RemoveFixedIP(self.app, None)
|
|
@@ -7167,7 +7235,7 @@ class TestServerRescue(compute_fakes.TestComputev2):
|
|
|
7167
7235
|
def setUp(self):
|
|
7168
7236
|
super().setUp()
|
|
7169
7237
|
|
|
7170
|
-
self.server = compute_fakes.
|
|
7238
|
+
self.server = compute_fakes.create_one_server()
|
|
7171
7239
|
self.compute_client.find_server.return_value = self.server
|
|
7172
7240
|
|
|
7173
7241
|
self.cmd = server.RescueServer(self.app, None)
|
|
@@ -7247,7 +7315,7 @@ class TestServerRemoveFloatingIPCompute(compute_fakes.TestComputev2):
|
|
|
7247
7315
|
super().setUp()
|
|
7248
7316
|
|
|
7249
7317
|
self.app.client_manager.network_endpoint_enabled = False
|
|
7250
|
-
self.server = compute_fakes.
|
|
7318
|
+
self.server = compute_fakes.create_one_server()
|
|
7251
7319
|
self.compute_client.find_server.return_value = self.server
|
|
7252
7320
|
|
|
7253
7321
|
self.cmd = server.RemoveFloatingIP(self.app, None)
|
|
@@ -7277,14 +7345,14 @@ class TestServerRemoveFloatingIPNetwork(network_fakes.TestNetworkV2):
|
|
|
7277
7345
|
def setUp(self):
|
|
7278
7346
|
super().setUp()
|
|
7279
7347
|
|
|
7280
|
-
self.network_client.update_ip =
|
|
7348
|
+
self.network_client.update_ip.return_value = None
|
|
7281
7349
|
|
|
7282
7350
|
# Get the command object to test
|
|
7283
7351
|
self.cmd = server.RemoveFloatingIP(self.app, None)
|
|
7284
7352
|
|
|
7285
7353
|
def test_server_remove_floating_ip_default(self):
|
|
7286
7354
|
_floating_ip = network_fakes.FakeFloatingIP.create_one_floating_ip()
|
|
7287
|
-
self.network_client.find_ip =
|
|
7355
|
+
self.network_client.find_ip.return_value = _floating_ip
|
|
7288
7356
|
arglist = [
|
|
7289
7357
|
'fake_server',
|
|
7290
7358
|
_floating_ip['ip'],
|
|
@@ -7317,9 +7385,6 @@ class TestServerRemovePort(TestServer):
|
|
|
7317
7385
|
# Get the command object to test
|
|
7318
7386
|
self.cmd = server.RemovePort(self.app, None)
|
|
7319
7387
|
|
|
7320
|
-
self.find_port = mock.Mock()
|
|
7321
|
-
self.app.client_manager.network.find_port = self.find_port
|
|
7322
|
-
|
|
7323
7388
|
def _test_server_remove_port(self, port_id):
|
|
7324
7389
|
servers = self.setup_sdk_servers_mock(count=1)
|
|
7325
7390
|
port = 'fake-port'
|
|
@@ -7342,15 +7407,17 @@ class TestServerRemovePort(TestServer):
|
|
|
7342
7407
|
self.assertIsNone(result)
|
|
7343
7408
|
|
|
7344
7409
|
def test_server_remove_port(self):
|
|
7345
|
-
self._test_server_remove_port(
|
|
7346
|
-
|
|
7410
|
+
self._test_server_remove_port(
|
|
7411
|
+
self.network_client.find_port.return_value.id
|
|
7412
|
+
)
|
|
7413
|
+
self.network_client.find_port.assert_called_once_with(
|
|
7347
7414
|
'fake-port', ignore_missing=False
|
|
7348
7415
|
)
|
|
7349
7416
|
|
|
7350
7417
|
def test_server_remove_port_no_neutron(self):
|
|
7351
7418
|
self.app.client_manager.network_endpoint_enabled = False
|
|
7352
7419
|
self._test_server_remove_port('fake-port')
|
|
7353
|
-
self.find_port.assert_not_called()
|
|
7420
|
+
self.network_client.find_port.assert_not_called()
|
|
7354
7421
|
|
|
7355
7422
|
|
|
7356
7423
|
class TestServerRemoveNetwork(TestServer):
|
|
@@ -7360,16 +7427,12 @@ class TestServerRemoveNetwork(TestServer):
|
|
|
7360
7427
|
# Get the command object to test
|
|
7361
7428
|
self.cmd = server.RemoveNetwork(self.app, None)
|
|
7362
7429
|
|
|
7363
|
-
|
|
7364
|
-
self.
|
|
7365
|
-
|
|
7366
|
-
self.find_network = mock.Mock()
|
|
7367
|
-
self.app.client_manager.network.find_network = self.find_network
|
|
7368
|
-
self.compute_client.server_interfaces.return_value = [self.fake_inf]
|
|
7430
|
+
self.fake_if = mock.Mock()
|
|
7431
|
+
self.compute_client.server_interfaces.return_value = [self.fake_if]
|
|
7369
7432
|
|
|
7370
7433
|
def _test_server_remove_network(self, network_id):
|
|
7371
|
-
self.
|
|
7372
|
-
self.
|
|
7434
|
+
self.fake_if.net_id = network_id
|
|
7435
|
+
self.fake_if.port_id = 'fake-port'
|
|
7373
7436
|
servers = self.setup_sdk_servers_mock(count=1)
|
|
7374
7437
|
network = 'fake-network'
|
|
7375
7438
|
|
|
@@ -7394,22 +7457,24 @@ class TestServerRemoveNetwork(TestServer):
|
|
|
7394
7457
|
self.assertIsNone(result)
|
|
7395
7458
|
|
|
7396
7459
|
def test_server_remove_network(self):
|
|
7397
|
-
self._test_server_remove_network(
|
|
7398
|
-
|
|
7460
|
+
self._test_server_remove_network(
|
|
7461
|
+
self.network_client.find_network.return_value.id
|
|
7462
|
+
)
|
|
7463
|
+
self.network_client.find_network.assert_called_once_with(
|
|
7399
7464
|
'fake-network', ignore_missing=False
|
|
7400
7465
|
)
|
|
7401
7466
|
|
|
7402
7467
|
def test_server_remove_network_no_neutron(self):
|
|
7403
7468
|
self.app.client_manager.network_endpoint_enabled = False
|
|
7404
7469
|
self._test_server_remove_network('fake-network')
|
|
7405
|
-
self.find_network.assert_not_called()
|
|
7470
|
+
self.network_client.find_network.assert_not_called()
|
|
7406
7471
|
|
|
7407
7472
|
|
|
7408
7473
|
class TestServerRemoveSecurityGroup(TestServer):
|
|
7409
7474
|
def setUp(self):
|
|
7410
7475
|
super().setUp()
|
|
7411
7476
|
|
|
7412
|
-
self.server = compute_fakes.
|
|
7477
|
+
self.server = compute_fakes.create_one_server()
|
|
7413
7478
|
self.compute_client.find_server.return_value = self.server
|
|
7414
7479
|
self.compute_client.remove_security_group_from_server.return_value = (
|
|
7415
7480
|
None
|
|
@@ -7472,7 +7537,7 @@ class TestServerResize(compute_fakes.TestComputev2):
|
|
|
7472
7537
|
def setUp(self):
|
|
7473
7538
|
super().setUp()
|
|
7474
7539
|
|
|
7475
|
-
self.server = compute_fakes.
|
|
7540
|
+
self.server = compute_fakes.create_one_server()
|
|
7476
7541
|
self.compute_client.find_server.return_value = self.server
|
|
7477
7542
|
self.flavor = compute_fakes.create_one_flavor()
|
|
7478
7543
|
self.compute_client.find_flavor.return_value = self.flavor
|
|
@@ -7680,7 +7745,7 @@ class TestServerResizeConfirm(compute_fakes.TestComputev2):
|
|
|
7680
7745
|
def setUp(self):
|
|
7681
7746
|
super().setUp()
|
|
7682
7747
|
|
|
7683
|
-
self.server = compute_fakes.
|
|
7748
|
+
self.server = compute_fakes.create_one_server()
|
|
7684
7749
|
self.compute_client.find_server.return_value = self.server
|
|
7685
7750
|
self.compute_client.confirm_server_resize.return_value = None
|
|
7686
7751
|
|
|
@@ -7712,7 +7777,7 @@ class TestServerMigrateConfirm(compute_fakes.TestComputev2):
|
|
|
7712
7777
|
def setUp(self):
|
|
7713
7778
|
super().setUp()
|
|
7714
7779
|
|
|
7715
|
-
self.server = compute_fakes.
|
|
7780
|
+
self.server = compute_fakes.create_one_server()
|
|
7716
7781
|
self.compute_client.find_server.return_value = self.server
|
|
7717
7782
|
self.compute_client.confirm_server_resize.return_value = None
|
|
7718
7783
|
|
|
@@ -7750,7 +7815,7 @@ class TestServerConfirmMigration(compute_fakes.TestComputev2):
|
|
|
7750
7815
|
def setUp(self):
|
|
7751
7816
|
super().setUp()
|
|
7752
7817
|
|
|
7753
|
-
self.server = compute_fakes.
|
|
7818
|
+
self.server = compute_fakes.create_one_server()
|
|
7754
7819
|
self.compute_client.find_server.return_value = self.server
|
|
7755
7820
|
self.compute_client.confirm_server_resize.return_value = None
|
|
7756
7821
|
|
|
@@ -7781,7 +7846,7 @@ class TestServerResizeRevert(compute_fakes.TestComputev2):
|
|
|
7781
7846
|
def setUp(self):
|
|
7782
7847
|
super().setUp()
|
|
7783
7848
|
|
|
7784
|
-
self.server = compute_fakes.
|
|
7849
|
+
self.server = compute_fakes.create_one_server()
|
|
7785
7850
|
self.compute_client.find_server.return_value = self.server
|
|
7786
7851
|
self.compute_client.revert_server_resize.return_value = None
|
|
7787
7852
|
|
|
@@ -7813,7 +7878,7 @@ class TestServerMigrateRevert(compute_fakes.TestComputev2):
|
|
|
7813
7878
|
def setUp(self):
|
|
7814
7879
|
super().setUp()
|
|
7815
7880
|
|
|
7816
|
-
self.server = compute_fakes.
|
|
7881
|
+
self.server = compute_fakes.create_one_server()
|
|
7817
7882
|
self.compute_client.find_server.return_value = self.server
|
|
7818
7883
|
self.compute_client.revert_server_resize.return_value = None
|
|
7819
7884
|
|
|
@@ -7851,7 +7916,7 @@ class TestServerRevertMigration(compute_fakes.TestComputev2):
|
|
|
7851
7916
|
def setUp(self):
|
|
7852
7917
|
super().setUp()
|
|
7853
7918
|
|
|
7854
|
-
self.server = compute_fakes.
|
|
7919
|
+
self.server = compute_fakes.create_one_server()
|
|
7855
7920
|
self.compute_client.find_server.return_value = self.server
|
|
7856
7921
|
self.compute_client.revert_server_resize.return_value = None
|
|
7857
7922
|
|
|
@@ -7910,7 +7975,7 @@ class TestServerSet(TestServer):
|
|
|
7910
7975
|
def setUp(self):
|
|
7911
7976
|
super().setUp()
|
|
7912
7977
|
|
|
7913
|
-
self.server = compute_fakes.
|
|
7978
|
+
self.server = compute_fakes.create_one_server()
|
|
7914
7979
|
self.compute_client.find_server.return_value = self.server
|
|
7915
7980
|
|
|
7916
7981
|
# Get the command object to test
|
|
@@ -7935,6 +8000,7 @@ class TestServerSet(TestServer):
|
|
|
7935
8000
|
arglist = [
|
|
7936
8001
|
'--state',
|
|
7937
8002
|
'active',
|
|
8003
|
+
'--auto-approve',
|
|
7938
8004
|
self.server.id,
|
|
7939
8005
|
]
|
|
7940
8006
|
verifylist = [
|
|
@@ -7955,6 +8021,54 @@ class TestServerSet(TestServer):
|
|
|
7955
8021
|
self.compute_client.add_tag_to_server.assert_not_called()
|
|
7956
8022
|
self.assertIsNone(result)
|
|
7957
8023
|
|
|
8024
|
+
def test_server_set_with_state_prompt_y(self):
|
|
8025
|
+
arglist = [
|
|
8026
|
+
'--state',
|
|
8027
|
+
'active',
|
|
8028
|
+
self.server.id,
|
|
8029
|
+
]
|
|
8030
|
+
verifylist = [
|
|
8031
|
+
('state', 'active'),
|
|
8032
|
+
('server', self.server.id),
|
|
8033
|
+
]
|
|
8034
|
+
|
|
8035
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
8036
|
+
with mock.patch('getpass.getpass', return_value='y'):
|
|
8037
|
+
result = self.cmd.take_action(parsed_args)
|
|
8038
|
+
|
|
8039
|
+
self.compute_client.reset_server_state.assert_called_once_with(
|
|
8040
|
+
self.server, state='active'
|
|
8041
|
+
)
|
|
8042
|
+
self.compute_client.update_server.assert_not_called()
|
|
8043
|
+
self.compute_client.set_server_metadata.assert_not_called()
|
|
8044
|
+
self.compute_client.change_server_password.assert_not_called()
|
|
8045
|
+
self.compute_client.clear_server_password.assert_not_called()
|
|
8046
|
+
self.compute_client.add_tag_to_server.assert_not_called()
|
|
8047
|
+
self.assertIsNone(result)
|
|
8048
|
+
|
|
8049
|
+
def test_server_set_with_state_prompt_n(self):
|
|
8050
|
+
arglist = [
|
|
8051
|
+
'--state',
|
|
8052
|
+
'active',
|
|
8053
|
+
self.server.id,
|
|
8054
|
+
]
|
|
8055
|
+
verifylist = [
|
|
8056
|
+
('state', 'active'),
|
|
8057
|
+
('server', self.server.id),
|
|
8058
|
+
]
|
|
8059
|
+
|
|
8060
|
+
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
|
8061
|
+
with mock.patch('getpass.getpass', return_value='n'):
|
|
8062
|
+
result = self.cmd.take_action(parsed_args)
|
|
8063
|
+
|
|
8064
|
+
self.compute_client.reset_server_state.assert_not_called()
|
|
8065
|
+
self.compute_client.update_server.assert_not_called()
|
|
8066
|
+
self.compute_client.set_server_metadata.assert_not_called()
|
|
8067
|
+
self.compute_client.change_server_password.assert_not_called()
|
|
8068
|
+
self.compute_client.clear_server_password.assert_not_called()
|
|
8069
|
+
self.compute_client.add_tag_to_server.assert_not_called()
|
|
8070
|
+
self.assertIsNone(result)
|
|
8071
|
+
|
|
7958
8072
|
def test_server_set_with_invalid_state(self):
|
|
7959
8073
|
arglist = [
|
|
7960
8074
|
'--state',
|
|
@@ -8243,7 +8357,7 @@ class TestServerShelve(TestServer):
|
|
|
8243
8357
|
def setUp(self):
|
|
8244
8358
|
super().setUp()
|
|
8245
8359
|
|
|
8246
|
-
self.server = compute_fakes.
|
|
8360
|
+
self.server = compute_fakes.create_one_server(
|
|
8247
8361
|
attrs={'status': 'ACTIVE'},
|
|
8248
8362
|
)
|
|
8249
8363
|
|
|
@@ -8377,7 +8491,7 @@ class TestServerShow(TestServer):
|
|
|
8377
8491
|
self.compute_client.get_server_diagnostics.return_value = {
|
|
8378
8492
|
'test': 'test'
|
|
8379
8493
|
}
|
|
8380
|
-
self.server = compute_fakes.
|
|
8494
|
+
self.server = compute_fakes.create_one_server(
|
|
8381
8495
|
attrs=server_info,
|
|
8382
8496
|
)
|
|
8383
8497
|
self.server.fetch_topology = mock.MagicMock(return_value=self.topology)
|
|
@@ -8644,7 +8758,7 @@ class TestServerSsh(TestServer):
|
|
|
8644
8758
|
],
|
|
8645
8759
|
},
|
|
8646
8760
|
}
|
|
8647
|
-
self.server = compute_fakes.
|
|
8761
|
+
self.server = compute_fakes.create_one_server(
|
|
8648
8762
|
attrs=self.attrs,
|
|
8649
8763
|
)
|
|
8650
8764
|
self.compute_client.find_server.return_value = self.server
|
|
@@ -8765,7 +8879,7 @@ class TestServerStart(TestServerAction):
|
|
|
8765
8879
|
self.run_method_with_sdk_servers('start_server', 3)
|
|
8766
8880
|
|
|
8767
8881
|
def test_server_start_with_all_projects(self):
|
|
8768
|
-
server = compute_fakes.
|
|
8882
|
+
server = compute_fakes.create_one_server()
|
|
8769
8883
|
self.compute_client.find_server.return_value = server
|
|
8770
8884
|
|
|
8771
8885
|
arglist = [
|
|
@@ -8801,7 +8915,7 @@ class TestServerStop(TestServerAction):
|
|
|
8801
8915
|
self.run_method_with_sdk_servers('stop_server', 3)
|
|
8802
8916
|
|
|
8803
8917
|
def test_server_start_with_all_projects(self):
|
|
8804
|
-
server = compute_fakes.
|
|
8918
|
+
server = compute_fakes.create_one_server()
|
|
8805
8919
|
self.compute_client.find_server.return_value = server
|
|
8806
8920
|
|
|
8807
8921
|
arglist = [
|
|
@@ -8869,7 +8983,7 @@ class TestServerUnrescue(compute_fakes.TestComputev2):
|
|
|
8869
8983
|
def setUp(self):
|
|
8870
8984
|
super().setUp()
|
|
8871
8985
|
|
|
8872
|
-
self.server = compute_fakes.
|
|
8986
|
+
self.server = compute_fakes.create_one_server()
|
|
8873
8987
|
self.compute_client.find_server.return_value = self.server
|
|
8874
8988
|
|
|
8875
8989
|
self.cmd = server.UnrescueServer(self.app, None)
|
|
@@ -8898,7 +9012,7 @@ class TestServerUnset(TestServer):
|
|
|
8898
9012
|
def setUp(self):
|
|
8899
9013
|
super().setUp()
|
|
8900
9014
|
|
|
8901
|
-
self.server = compute_fakes.
|
|
9015
|
+
self.server = compute_fakes.create_one_server()
|
|
8902
9016
|
self.compute_client.find_server.return_value = self.server
|
|
8903
9017
|
|
|
8904
9018
|
# Get the command object to test
|
|
@@ -9048,7 +9162,7 @@ class TestServerUnshelve(TestServer):
|
|
|
9048
9162
|
def setUp(self):
|
|
9049
9163
|
super().setUp()
|
|
9050
9164
|
|
|
9051
|
-
self.server = compute_fakes.
|
|
9165
|
+
self.server = compute_fakes.create_one_server(
|
|
9052
9166
|
attrs={'status': 'SHELVED'},
|
|
9053
9167
|
)
|
|
9054
9168
|
|
|
@@ -9370,7 +9484,7 @@ class TestServerGeneral(TestServer):
|
|
|
9370
9484
|
'properties': '',
|
|
9371
9485
|
'volumes_attached': [{"id": "6344fe9d-ef20-45b2-91a6"}],
|
|
9372
9486
|
}
|
|
9373
|
-
_server = compute_fakes.
|
|
9487
|
+
_server = compute_fakes.create_one_server(server_info)
|
|
9374
9488
|
self.compute_client.get_server.return_value = _server
|
|
9375
9489
|
|
|
9376
9490
|
expected = {
|
|
@@ -9457,7 +9571,7 @@ class TestServerGeneral(TestServer):
|
|
|
9457
9571
|
'properties': '',
|
|
9458
9572
|
'volumes_attached': [{"id": "6344fe9d-ef20-45b2-91a6"}],
|
|
9459
9573
|
}
|
|
9460
|
-
_server = compute_fakes.
|
|
9574
|
+
_server = compute_fakes.create_one_server(server_info)
|
|
9461
9575
|
self.compute_client.get_server.return_value = _server
|
|
9462
9576
|
|
|
9463
9577
|
expected = {
|