python-openstackclient 8.0.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/compute/client.py +5 -0
- openstackclient/compute/v2/console.py +7 -0
- openstackclient/compute/v2/console_connection.py +48 -0
- openstackclient/compute/v2/keypair.py +10 -3
- openstackclient/compute/v2/server.py +75 -10
- openstackclient/compute/v2/server_event.py +1 -1
- openstackclient/identity/common.py +79 -0
- openstackclient/identity/v3/application_credential.py +2 -2
- openstackclient/identity/v3/domain.py +62 -43
- openstackclient/identity/v3/group.py +113 -68
- openstackclient/identity/v3/project.py +17 -0
- openstackclient/identity/v3/user.py +38 -5
- openstackclient/image/client.py +5 -0
- openstackclient/image/v2/image.py +11 -11
- 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/router.py +1 -1
- openstackclient/network/v2/security_group.py +5 -4
- openstackclient/network/v2/security_group_rule.py +1 -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/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 +1 -1
- openstackclient/tests/unit/compute/v2/test_keypair.py +12 -5
- openstackclient/tests/unit/compute/v2/test_server.py +169 -46
- 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 +47 -25
- openstackclient/tests/unit/identity/v3/test_domain.py +115 -105
- openstackclient/tests/unit/identity/v3/test_group.py +353 -202
- openstackclient/tests/unit/identity/v3/test_project.py +16 -0
- openstackclient/tests/unit/identity/v3/test_user.py +86 -6
- openstackclient/tests/unit/image/v1/test_image.py +8 -9
- openstackclient/tests/unit/image/v2/test_image.py +49 -49
- openstackclient/tests/unit/network/v2/fakes.py +405 -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 +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_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 +17 -17
- openstackclient/tests/unit/network/v2/test_router.py +73 -57
- openstackclient/tests/unit/network/v2/test_security_group_network.py +25 -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 +33 -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 +108 -105
- 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 +130 -119
- 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 +63 -37
- 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 +200 -39
- openstackclient/volume/v3/volume_backup.py +24 -19
- openstackclient/volume/v3/volume_snapshot.py +485 -10
- {python_openstackclient-8.0.0.dist-info → python_openstackclient-8.1.0.dist-info}/AUTHORS +8 -0
- python_openstackclient-8.1.0.dist-info/METADATA +264 -0
- {python_openstackclient-8.0.0.dist-info → python_openstackclient-8.1.0.dist-info}/RECORD +83 -81
- {python_openstackclient-8.0.0.dist-info → python_openstackclient-8.1.0.dist-info}/entry_points.txt +7 -6
- python_openstackclient-8.1.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.1.0.dist-info}/LICENSE +0 -0
- {python_openstackclient-8.0.0.dist-info → python_openstackclient-8.1.0.dist-info}/WHEEL +0 -0
- {python_openstackclient-8.0.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,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
|
)
|
|
@@ -348,7 +349,7 @@ class TestServerAddFloatingIPCompute(compute_fakes.TestComputev2):
|
|
|
348
349
|
super().setUp()
|
|
349
350
|
|
|
350
351
|
self.app.client_manager.network_endpoint_enabled = False
|
|
351
|
-
self.server = compute_fakes.
|
|
352
|
+
self.server = compute_fakes.create_one_server()
|
|
352
353
|
self.compute_client.find_server.return_value = self.server
|
|
353
354
|
|
|
354
355
|
self.cmd = server.AddFloatingIP(self.app, None)
|
|
@@ -404,7 +405,7 @@ class TestServerAddFloatingIPNetwork(
|
|
|
404
405
|
def setUp(self):
|
|
405
406
|
super().setUp()
|
|
406
407
|
|
|
407
|
-
self.server = compute_fakes.
|
|
408
|
+
self.server = compute_fakes.create_one_server()
|
|
408
409
|
self.compute_client.find_server.return_value = self.server
|
|
409
410
|
|
|
410
411
|
self.network_client.update_ip = mock.Mock(return_value=None)
|
|
@@ -700,7 +701,7 @@ class TestServerVolume(TestServer):
|
|
|
700
701
|
def setUp(self):
|
|
701
702
|
super().setUp()
|
|
702
703
|
|
|
703
|
-
self.server = compute_fakes.
|
|
704
|
+
self.server = compute_fakes.create_one_server()
|
|
704
705
|
self.compute_client.find_server.return_value = self.server
|
|
705
706
|
|
|
706
707
|
self.volume = volume_fakes.create_one_sdk_volume()
|
|
@@ -1126,7 +1127,7 @@ class TestServerAddSecurityGroup(compute_fakes.TestComputev2):
|
|
|
1126
1127
|
def setUp(self):
|
|
1127
1128
|
super().setUp()
|
|
1128
1129
|
|
|
1129
|
-
self.server = compute_fakes.
|
|
1130
|
+
self.server = compute_fakes.create_one_server()
|
|
1130
1131
|
self.compute_client.find_server.return_value = self.server
|
|
1131
1132
|
self.compute_client.add_security_group_to_server.return_value = None
|
|
1132
1133
|
|
|
@@ -1295,7 +1296,7 @@ class TestServerCreate(TestServer):
|
|
|
1295
1296
|
'image': self.image,
|
|
1296
1297
|
'flavor': self.flavor,
|
|
1297
1298
|
}
|
|
1298
|
-
self.server = compute_fakes.
|
|
1299
|
+
self.server = compute_fakes.create_one_server(attrs=attrs)
|
|
1299
1300
|
|
|
1300
1301
|
self.compute_client.create_server.return_value = self.server
|
|
1301
1302
|
self.compute_client.get_server.return_value = self.server
|
|
@@ -1704,7 +1705,7 @@ class TestServerCreate(TestServer):
|
|
|
1704
1705
|
},
|
|
1705
1706
|
{
|
|
1706
1707
|
'uuid': network_net2.id,
|
|
1707
|
-
'
|
|
1708
|
+
'fixed_ip': '10.0.0.2',
|
|
1708
1709
|
},
|
|
1709
1710
|
{
|
|
1710
1711
|
'port': port_port1.id,
|
|
@@ -4382,7 +4383,7 @@ class TestServerDelete(compute_fakes.TestComputev2):
|
|
|
4382
4383
|
def setUp(self):
|
|
4383
4384
|
super().setUp()
|
|
4384
4385
|
|
|
4385
|
-
self.server = compute_fakes.
|
|
4386
|
+
self.server = compute_fakes.create_one_server()
|
|
4386
4387
|
self.compute_client.find_server.return_value = self.server
|
|
4387
4388
|
self.compute_client.delete_server.return_value = None
|
|
4388
4389
|
|
|
@@ -4429,7 +4430,7 @@ class TestServerDelete(compute_fakes.TestComputev2):
|
|
|
4429
4430
|
self.assertIsNone(result)
|
|
4430
4431
|
|
|
4431
4432
|
def test_server_delete_multi_servers(self):
|
|
4432
|
-
servers = compute_fakes.
|
|
4433
|
+
servers = compute_fakes.create_servers(count=3)
|
|
4433
4434
|
self.compute_client.find_server.return_value = None
|
|
4434
4435
|
self.compute_client.find_server.side_effect = servers
|
|
4435
4436
|
|
|
@@ -4591,6 +4592,16 @@ class _TestServerList(TestServer):
|
|
|
4591
4592
|
'Pinned Availability Zone',
|
|
4592
4593
|
'Host',
|
|
4593
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',
|
|
4594
4605
|
)
|
|
4595
4606
|
|
|
4596
4607
|
def setUp(self):
|
|
@@ -4730,6 +4741,7 @@ class TestServerList(_TestServerList):
|
|
|
4730
4741
|
getattr(s, 'pinned_availability_zone', ''),
|
|
4731
4742
|
server.HostColumn(getattr(s, 'hypervisor_hostname')),
|
|
4732
4743
|
format_columns.DictColumn(s.metadata),
|
|
4744
|
+
format_columns.DictListColumn(None),
|
|
4733
4745
|
)
|
|
4734
4746
|
for s in self.servers
|
|
4735
4747
|
)
|
|
@@ -4752,6 +4764,36 @@ class TestServerList(_TestServerList):
|
|
|
4752
4764
|
self.assertEqual(self.columns_long, columns)
|
|
4753
4765
|
self.assertEqual(self.data, tuple(data))
|
|
4754
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
|
+
|
|
4755
4797
|
def test_server_list_column_option(self):
|
|
4756
4798
|
arglist = [
|
|
4757
4799
|
'-c',
|
|
@@ -4778,6 +4820,8 @@ class TestServerList(_TestServerList):
|
|
|
4778
4820
|
'Host',
|
|
4779
4821
|
'-c',
|
|
4780
4822
|
'Properties',
|
|
4823
|
+
'-c',
|
|
4824
|
+
'Scheduler Hints',
|
|
4781
4825
|
'--long',
|
|
4782
4826
|
]
|
|
4783
4827
|
verifylist = [
|
|
@@ -4800,6 +4844,7 @@ class TestServerList(_TestServerList):
|
|
|
4800
4844
|
self.assertIn('Pinned Availability Zone', columns)
|
|
4801
4845
|
self.assertIn('Host', columns)
|
|
4802
4846
|
self.assertIn('Properties', columns)
|
|
4847
|
+
self.assertIn('Scheduler Hints', columns)
|
|
4803
4848
|
self.assertCountEqual(columns, set(columns))
|
|
4804
4849
|
|
|
4805
4850
|
def test_server_list_no_name_lookup_option(self):
|
|
@@ -5213,6 +5258,7 @@ class TestServerList(_TestServerList):
|
|
|
5213
5258
|
getattr(s, 'pinned_availability_zone', ''),
|
|
5214
5259
|
server.HostColumn(getattr(s, 'hypervisor_hostname')),
|
|
5215
5260
|
format_columns.DictColumn(s.metadata),
|
|
5261
|
+
format_columns.DictListColumn(s.scheduler_hints),
|
|
5216
5262
|
)
|
|
5217
5263
|
for s in self.servers
|
|
5218
5264
|
)
|
|
@@ -5268,6 +5314,7 @@ class TestServerList(_TestServerList):
|
|
|
5268
5314
|
getattr(s, 'pinned_availability_zone', ''),
|
|
5269
5315
|
server.HostColumn(getattr(s, 'hypervisor_hostname')),
|
|
5270
5316
|
format_columns.DictColumn(s.metadata),
|
|
5317
|
+
format_columns.DictListColumn(s.scheduler_hints),
|
|
5271
5318
|
s.host_status,
|
|
5272
5319
|
)
|
|
5273
5320
|
for s in servers
|
|
@@ -5305,6 +5352,7 @@ class TestServerListV273(_TestServerList):
|
|
|
5305
5352
|
'Pinned Availability Zone',
|
|
5306
5353
|
'Host',
|
|
5307
5354
|
'Properties',
|
|
5355
|
+
'Scheduler Hints',
|
|
5308
5356
|
)
|
|
5309
5357
|
|
|
5310
5358
|
def setUp(self):
|
|
@@ -5479,9 +5527,7 @@ class TestServerListV273(_TestServerList):
|
|
|
5479
5527
|
],
|
|
5480
5528
|
"networks": {},
|
|
5481
5529
|
}
|
|
5482
|
-
fake_server =
|
|
5483
|
-
info=server_dict,
|
|
5484
|
-
)
|
|
5530
|
+
fake_server = _server.Server(**server_dict)
|
|
5485
5531
|
self.servers.append(fake_server)
|
|
5486
5532
|
columns, data = self.cmd.take_action(parsed_args)
|
|
5487
5533
|
# get the first three servers out since our interest is in the partial
|
|
@@ -5492,9 +5538,9 @@ class TestServerListV273(_TestServerList):
|
|
|
5492
5538
|
partial_server = next(data)
|
|
5493
5539
|
expected_row = (
|
|
5494
5540
|
'server-id-95a56bfc4xxxxxx28d7e418bfd97813a',
|
|
5495
|
-
|
|
5541
|
+
None,
|
|
5496
5542
|
'UNKNOWN',
|
|
5497
|
-
server.AddressesColumn(
|
|
5543
|
+
server.AddressesColumn(None),
|
|
5498
5544
|
'',
|
|
5499
5545
|
'',
|
|
5500
5546
|
)
|
|
@@ -5503,7 +5549,7 @@ class TestServerListV273(_TestServerList):
|
|
|
5503
5549
|
|
|
5504
5550
|
class TestServerAction(compute_fakes.TestComputev2):
|
|
5505
5551
|
def run_method_with_sdk_servers(self, method_name, server_count):
|
|
5506
|
-
servers = compute_fakes.
|
|
5552
|
+
servers = compute_fakes.create_servers(count=server_count)
|
|
5507
5553
|
self.compute_client.find_server.side_effect = servers
|
|
5508
5554
|
|
|
5509
5555
|
arglist = [s.id for s in servers]
|
|
@@ -5536,7 +5582,7 @@ class TestServerLock(TestServerAction):
|
|
|
5536
5582
|
def test_server_lock_with_reason(self):
|
|
5537
5583
|
self.set_compute_api_version('2.73')
|
|
5538
5584
|
|
|
5539
|
-
self.server = compute_fakes.
|
|
5585
|
+
self.server = compute_fakes.create_one_server()
|
|
5540
5586
|
self.compute_client.find_server.return_value = self.server
|
|
5541
5587
|
self.compute_client.lock_server.return_value = None
|
|
5542
5588
|
|
|
@@ -5565,8 +5611,8 @@ class TestServerLock(TestServerAction):
|
|
|
5565
5611
|
def test_server_lock_with_reason_multi_servers(self):
|
|
5566
5612
|
self.set_compute_api_version('2.73')
|
|
5567
5613
|
|
|
5568
|
-
server_a = compute_fakes.
|
|
5569
|
-
server_b = compute_fakes.
|
|
5614
|
+
server_a = compute_fakes.create_one_server()
|
|
5615
|
+
server_b = compute_fakes.create_one_server()
|
|
5570
5616
|
|
|
5571
5617
|
self.compute_client.find_server.side_effect = [server_a, server_b]
|
|
5572
5618
|
self.compute_client.lock_server.return_value = None
|
|
@@ -5595,7 +5641,7 @@ class TestServerLock(TestServerAction):
|
|
|
5595
5641
|
def test_server_lock_with_reason_pre_v273(self):
|
|
5596
5642
|
self.set_compute_api_version('2.72')
|
|
5597
5643
|
|
|
5598
|
-
server = compute_fakes.
|
|
5644
|
+
server = compute_fakes.create_one_server()
|
|
5599
5645
|
|
|
5600
5646
|
arglist = [
|
|
5601
5647
|
server.id,
|
|
@@ -5623,7 +5669,7 @@ class TestServerMigrate(TestServer):
|
|
|
5623
5669
|
def setUp(self):
|
|
5624
5670
|
super().setUp()
|
|
5625
5671
|
|
|
5626
|
-
self.server = compute_fakes.
|
|
5672
|
+
self.server = compute_fakes.create_one_server()
|
|
5627
5673
|
self.compute_client.find_server.return_value = self.server
|
|
5628
5674
|
self.compute_client.migrate_server.return_value = None
|
|
5629
5675
|
self.compute_client.live_migrate_server.return_value = None
|
|
@@ -6168,7 +6214,7 @@ class TestServerRebuild(TestServer):
|
|
|
6168
6214
|
'status': 'ACTIVE',
|
|
6169
6215
|
'image': {'id': self.image.id},
|
|
6170
6216
|
}
|
|
6171
|
-
self.server = compute_fakes.
|
|
6217
|
+
self.server = compute_fakes.create_one_server(attrs=attrs)
|
|
6172
6218
|
self.compute_client.find_server.return_value = self.server
|
|
6173
6219
|
self.compute_client.rebuild_server.return_value = self.server
|
|
6174
6220
|
|
|
@@ -6903,7 +6949,7 @@ class TestServerRebuildVolumeBacked(TestServer):
|
|
|
6903
6949
|
'status': 'ACTIVE',
|
|
6904
6950
|
'image': '',
|
|
6905
6951
|
}
|
|
6906
|
-
self.server = compute_fakes.
|
|
6952
|
+
self.server = compute_fakes.create_one_server(attrs=attrs)
|
|
6907
6953
|
self.compute_client.find_server.return_value = self.server
|
|
6908
6954
|
self.compute_client.rebuild_server.return_value = self.server
|
|
6909
6955
|
|
|
@@ -6993,10 +7039,11 @@ class TestServerEvacuate(TestServer):
|
|
|
6993
7039
|
'image': self.image,
|
|
6994
7040
|
'networks': {},
|
|
6995
7041
|
'adminPass': 'passw0rd',
|
|
7042
|
+
'status': 'ACTIVE',
|
|
6996
7043
|
}
|
|
6997
|
-
self.server = compute_fakes.
|
|
7044
|
+
self.server = compute_fakes.create_one_server(attrs=attrs)
|
|
6998
7045
|
attrs['id'] = self.server.id
|
|
6999
|
-
self.new_server = compute_fakes.
|
|
7046
|
+
self.new_server = compute_fakes.create_one_server(attrs=attrs)
|
|
7000
7047
|
|
|
7001
7048
|
# Return value for utils.find_resource for server.
|
|
7002
7049
|
self.compute_client.find_server.return_value = self.server
|
|
@@ -7130,6 +7177,33 @@ class TestServerEvacuate(TestServer):
|
|
|
7130
7177
|
mock_wait_for_status.assert_called_once_with(
|
|
7131
7178
|
self.compute_client.get_server,
|
|
7132
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'],
|
|
7133
7207
|
callback=mock.ANY,
|
|
7134
7208
|
)
|
|
7135
7209
|
|
|
@@ -7138,7 +7212,7 @@ class TestServerRemoveFixedIP(compute_fakes.TestComputev2):
|
|
|
7138
7212
|
def setUp(self):
|
|
7139
7213
|
super().setUp()
|
|
7140
7214
|
|
|
7141
|
-
self.server = compute_fakes.
|
|
7215
|
+
self.server = compute_fakes.create_one_server()
|
|
7142
7216
|
|
|
7143
7217
|
# Get the command object to test
|
|
7144
7218
|
self.cmd = server.RemoveFixedIP(self.app, None)
|
|
@@ -7167,7 +7241,7 @@ class TestServerRescue(compute_fakes.TestComputev2):
|
|
|
7167
7241
|
def setUp(self):
|
|
7168
7242
|
super().setUp()
|
|
7169
7243
|
|
|
7170
|
-
self.server = compute_fakes.
|
|
7244
|
+
self.server = compute_fakes.create_one_server()
|
|
7171
7245
|
self.compute_client.find_server.return_value = self.server
|
|
7172
7246
|
|
|
7173
7247
|
self.cmd = server.RescueServer(self.app, None)
|
|
@@ -7247,7 +7321,7 @@ class TestServerRemoveFloatingIPCompute(compute_fakes.TestComputev2):
|
|
|
7247
7321
|
super().setUp()
|
|
7248
7322
|
|
|
7249
7323
|
self.app.client_manager.network_endpoint_enabled = False
|
|
7250
|
-
self.server = compute_fakes.
|
|
7324
|
+
self.server = compute_fakes.create_one_server()
|
|
7251
7325
|
self.compute_client.find_server.return_value = self.server
|
|
7252
7326
|
|
|
7253
7327
|
self.cmd = server.RemoveFloatingIP(self.app, None)
|
|
@@ -7409,7 +7483,7 @@ class TestServerRemoveSecurityGroup(TestServer):
|
|
|
7409
7483
|
def setUp(self):
|
|
7410
7484
|
super().setUp()
|
|
7411
7485
|
|
|
7412
|
-
self.server = compute_fakes.
|
|
7486
|
+
self.server = compute_fakes.create_one_server()
|
|
7413
7487
|
self.compute_client.find_server.return_value = self.server
|
|
7414
7488
|
self.compute_client.remove_security_group_from_server.return_value = (
|
|
7415
7489
|
None
|
|
@@ -7472,7 +7546,7 @@ class TestServerResize(compute_fakes.TestComputev2):
|
|
|
7472
7546
|
def setUp(self):
|
|
7473
7547
|
super().setUp()
|
|
7474
7548
|
|
|
7475
|
-
self.server = compute_fakes.
|
|
7549
|
+
self.server = compute_fakes.create_one_server()
|
|
7476
7550
|
self.compute_client.find_server.return_value = self.server
|
|
7477
7551
|
self.flavor = compute_fakes.create_one_flavor()
|
|
7478
7552
|
self.compute_client.find_flavor.return_value = self.flavor
|
|
@@ -7680,7 +7754,7 @@ class TestServerResizeConfirm(compute_fakes.TestComputev2):
|
|
|
7680
7754
|
def setUp(self):
|
|
7681
7755
|
super().setUp()
|
|
7682
7756
|
|
|
7683
|
-
self.server = compute_fakes.
|
|
7757
|
+
self.server = compute_fakes.create_one_server()
|
|
7684
7758
|
self.compute_client.find_server.return_value = self.server
|
|
7685
7759
|
self.compute_client.confirm_server_resize.return_value = None
|
|
7686
7760
|
|
|
@@ -7712,7 +7786,7 @@ class TestServerMigrateConfirm(compute_fakes.TestComputev2):
|
|
|
7712
7786
|
def setUp(self):
|
|
7713
7787
|
super().setUp()
|
|
7714
7788
|
|
|
7715
|
-
self.server = compute_fakes.
|
|
7789
|
+
self.server = compute_fakes.create_one_server()
|
|
7716
7790
|
self.compute_client.find_server.return_value = self.server
|
|
7717
7791
|
self.compute_client.confirm_server_resize.return_value = None
|
|
7718
7792
|
|
|
@@ -7750,7 +7824,7 @@ class TestServerConfirmMigration(compute_fakes.TestComputev2):
|
|
|
7750
7824
|
def setUp(self):
|
|
7751
7825
|
super().setUp()
|
|
7752
7826
|
|
|
7753
|
-
self.server = compute_fakes.
|
|
7827
|
+
self.server = compute_fakes.create_one_server()
|
|
7754
7828
|
self.compute_client.find_server.return_value = self.server
|
|
7755
7829
|
self.compute_client.confirm_server_resize.return_value = None
|
|
7756
7830
|
|
|
@@ -7781,7 +7855,7 @@ class TestServerResizeRevert(compute_fakes.TestComputev2):
|
|
|
7781
7855
|
def setUp(self):
|
|
7782
7856
|
super().setUp()
|
|
7783
7857
|
|
|
7784
|
-
self.server = compute_fakes.
|
|
7858
|
+
self.server = compute_fakes.create_one_server()
|
|
7785
7859
|
self.compute_client.find_server.return_value = self.server
|
|
7786
7860
|
self.compute_client.revert_server_resize.return_value = None
|
|
7787
7861
|
|
|
@@ -7813,7 +7887,7 @@ class TestServerMigrateRevert(compute_fakes.TestComputev2):
|
|
|
7813
7887
|
def setUp(self):
|
|
7814
7888
|
super().setUp()
|
|
7815
7889
|
|
|
7816
|
-
self.server = compute_fakes.
|
|
7890
|
+
self.server = compute_fakes.create_one_server()
|
|
7817
7891
|
self.compute_client.find_server.return_value = self.server
|
|
7818
7892
|
self.compute_client.revert_server_resize.return_value = None
|
|
7819
7893
|
|
|
@@ -7851,7 +7925,7 @@ class TestServerRevertMigration(compute_fakes.TestComputev2):
|
|
|
7851
7925
|
def setUp(self):
|
|
7852
7926
|
super().setUp()
|
|
7853
7927
|
|
|
7854
|
-
self.server = compute_fakes.
|
|
7928
|
+
self.server = compute_fakes.create_one_server()
|
|
7855
7929
|
self.compute_client.find_server.return_value = self.server
|
|
7856
7930
|
self.compute_client.revert_server_resize.return_value = None
|
|
7857
7931
|
|
|
@@ -7910,7 +7984,7 @@ class TestServerSet(TestServer):
|
|
|
7910
7984
|
def setUp(self):
|
|
7911
7985
|
super().setUp()
|
|
7912
7986
|
|
|
7913
|
-
self.server = compute_fakes.
|
|
7987
|
+
self.server = compute_fakes.create_one_server()
|
|
7914
7988
|
self.compute_client.find_server.return_value = self.server
|
|
7915
7989
|
|
|
7916
7990
|
# Get the command object to test
|
|
@@ -7935,6 +8009,7 @@ class TestServerSet(TestServer):
|
|
|
7935
8009
|
arglist = [
|
|
7936
8010
|
'--state',
|
|
7937
8011
|
'active',
|
|
8012
|
+
'--auto-approve',
|
|
7938
8013
|
self.server.id,
|
|
7939
8014
|
]
|
|
7940
8015
|
verifylist = [
|
|
@@ -7955,6 +8030,54 @@ class TestServerSet(TestServer):
|
|
|
7955
8030
|
self.compute_client.add_tag_to_server.assert_not_called()
|
|
7956
8031
|
self.assertIsNone(result)
|
|
7957
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()
|
|
8079
|
+
self.assertIsNone(result)
|
|
8080
|
+
|
|
7958
8081
|
def test_server_set_with_invalid_state(self):
|
|
7959
8082
|
arglist = [
|
|
7960
8083
|
'--state',
|
|
@@ -8243,7 +8366,7 @@ class TestServerShelve(TestServer):
|
|
|
8243
8366
|
def setUp(self):
|
|
8244
8367
|
super().setUp()
|
|
8245
8368
|
|
|
8246
|
-
self.server = compute_fakes.
|
|
8369
|
+
self.server = compute_fakes.create_one_server(
|
|
8247
8370
|
attrs={'status': 'ACTIVE'},
|
|
8248
8371
|
)
|
|
8249
8372
|
|
|
@@ -8377,7 +8500,7 @@ class TestServerShow(TestServer):
|
|
|
8377
8500
|
self.compute_client.get_server_diagnostics.return_value = {
|
|
8378
8501
|
'test': 'test'
|
|
8379
8502
|
}
|
|
8380
|
-
self.server = compute_fakes.
|
|
8503
|
+
self.server = compute_fakes.create_one_server(
|
|
8381
8504
|
attrs=server_info,
|
|
8382
8505
|
)
|
|
8383
8506
|
self.server.fetch_topology = mock.MagicMock(return_value=self.topology)
|
|
@@ -8644,7 +8767,7 @@ class TestServerSsh(TestServer):
|
|
|
8644
8767
|
],
|
|
8645
8768
|
},
|
|
8646
8769
|
}
|
|
8647
|
-
self.server = compute_fakes.
|
|
8770
|
+
self.server = compute_fakes.create_one_server(
|
|
8648
8771
|
attrs=self.attrs,
|
|
8649
8772
|
)
|
|
8650
8773
|
self.compute_client.find_server.return_value = self.server
|
|
@@ -8765,7 +8888,7 @@ class TestServerStart(TestServerAction):
|
|
|
8765
8888
|
self.run_method_with_sdk_servers('start_server', 3)
|
|
8766
8889
|
|
|
8767
8890
|
def test_server_start_with_all_projects(self):
|
|
8768
|
-
server = compute_fakes.
|
|
8891
|
+
server = compute_fakes.create_one_server()
|
|
8769
8892
|
self.compute_client.find_server.return_value = server
|
|
8770
8893
|
|
|
8771
8894
|
arglist = [
|
|
@@ -8801,7 +8924,7 @@ class TestServerStop(TestServerAction):
|
|
|
8801
8924
|
self.run_method_with_sdk_servers('stop_server', 3)
|
|
8802
8925
|
|
|
8803
8926
|
def test_server_start_with_all_projects(self):
|
|
8804
|
-
server = compute_fakes.
|
|
8927
|
+
server = compute_fakes.create_one_server()
|
|
8805
8928
|
self.compute_client.find_server.return_value = server
|
|
8806
8929
|
|
|
8807
8930
|
arglist = [
|
|
@@ -8869,7 +8992,7 @@ class TestServerUnrescue(compute_fakes.TestComputev2):
|
|
|
8869
8992
|
def setUp(self):
|
|
8870
8993
|
super().setUp()
|
|
8871
8994
|
|
|
8872
|
-
self.server = compute_fakes.
|
|
8995
|
+
self.server = compute_fakes.create_one_server()
|
|
8873
8996
|
self.compute_client.find_server.return_value = self.server
|
|
8874
8997
|
|
|
8875
8998
|
self.cmd = server.UnrescueServer(self.app, None)
|
|
@@ -8898,7 +9021,7 @@ class TestServerUnset(TestServer):
|
|
|
8898
9021
|
def setUp(self):
|
|
8899
9022
|
super().setUp()
|
|
8900
9023
|
|
|
8901
|
-
self.server = compute_fakes.
|
|
9024
|
+
self.server = compute_fakes.create_one_server()
|
|
8902
9025
|
self.compute_client.find_server.return_value = self.server
|
|
8903
9026
|
|
|
8904
9027
|
# Get the command object to test
|
|
@@ -9048,7 +9171,7 @@ class TestServerUnshelve(TestServer):
|
|
|
9048
9171
|
def setUp(self):
|
|
9049
9172
|
super().setUp()
|
|
9050
9173
|
|
|
9051
|
-
self.server = compute_fakes.
|
|
9174
|
+
self.server = compute_fakes.create_one_server(
|
|
9052
9175
|
attrs={'status': 'SHELVED'},
|
|
9053
9176
|
)
|
|
9054
9177
|
|
|
@@ -9370,7 +9493,7 @@ class TestServerGeneral(TestServer):
|
|
|
9370
9493
|
'properties': '',
|
|
9371
9494
|
'volumes_attached': [{"id": "6344fe9d-ef20-45b2-91a6"}],
|
|
9372
9495
|
}
|
|
9373
|
-
_server = compute_fakes.
|
|
9496
|
+
_server = compute_fakes.create_one_server(server_info)
|
|
9374
9497
|
self.compute_client.get_server.return_value = _server
|
|
9375
9498
|
|
|
9376
9499
|
expected = {
|
|
@@ -9457,7 +9580,7 @@ class TestServerGeneral(TestServer):
|
|
|
9457
9580
|
'properties': '',
|
|
9458
9581
|
'volumes_attached': [{"id": "6344fe9d-ef20-45b2-91a6"}],
|
|
9459
9582
|
}
|
|
9460
|
-
_server = compute_fakes.
|
|
9583
|
+
_server = compute_fakes.create_one_server(server_info)
|
|
9461
9584
|
self.compute_client.get_server.return_value = _server
|
|
9462
9585
|
|
|
9463
9586
|
expected = {
|