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.
Files changed (85) hide show
  1. openstackclient/compute/client.py +5 -0
  2. openstackclient/compute/v2/console.py +7 -0
  3. openstackclient/compute/v2/console_connection.py +48 -0
  4. openstackclient/compute/v2/keypair.py +10 -3
  5. openstackclient/compute/v2/server.py +75 -10
  6. openstackclient/compute/v2/server_event.py +1 -1
  7. openstackclient/identity/common.py +79 -0
  8. openstackclient/identity/v3/application_credential.py +2 -2
  9. openstackclient/identity/v3/domain.py +62 -43
  10. openstackclient/identity/v3/group.py +113 -68
  11. openstackclient/identity/v3/project.py +17 -0
  12. openstackclient/identity/v3/user.py +38 -5
  13. openstackclient/image/client.py +5 -0
  14. openstackclient/image/v2/image.py +11 -11
  15. openstackclient/network/client.py +0 -6
  16. openstackclient/network/v2/floating_ip.py +58 -29
  17. openstackclient/network/v2/network_qos_rule.py +3 -11
  18. openstackclient/network/v2/router.py +1 -1
  19. openstackclient/network/v2/security_group.py +5 -4
  20. openstackclient/network/v2/security_group_rule.py +1 -1
  21. openstackclient/shell.py +1 -1
  22. openstackclient/tests/functional/base.py +5 -1
  23. openstackclient/tests/functional/compute/v2/test_keypair.py +41 -5
  24. openstackclient/tests/unit/compute/v2/fakes.py +81 -305
  25. openstackclient/tests/unit/compute/v2/test_console.py +18 -1
  26. openstackclient/tests/unit/compute/v2/test_console_connection.py +72 -0
  27. openstackclient/tests/unit/compute/v2/test_flavor.py +1 -1
  28. openstackclient/tests/unit/compute/v2/test_keypair.py +12 -5
  29. openstackclient/tests/unit/compute/v2/test_server.py +169 -46
  30. openstackclient/tests/unit/compute/v2/test_server_backup.py +32 -71
  31. openstackclient/tests/unit/compute/v2/test_server_event.py +2 -2
  32. openstackclient/tests/unit/compute/v2/test_server_image.py +33 -72
  33. openstackclient/tests/unit/compute/v2/test_server_migration.py +4 -4
  34. openstackclient/tests/unit/identity/v3/test_application_credential.py +47 -25
  35. openstackclient/tests/unit/identity/v3/test_domain.py +115 -105
  36. openstackclient/tests/unit/identity/v3/test_group.py +353 -202
  37. openstackclient/tests/unit/identity/v3/test_project.py +16 -0
  38. openstackclient/tests/unit/identity/v3/test_user.py +86 -6
  39. openstackclient/tests/unit/image/v1/test_image.py +8 -9
  40. openstackclient/tests/unit/image/v2/test_image.py +49 -49
  41. openstackclient/tests/unit/network/v2/fakes.py +405 -485
  42. openstackclient/tests/unit/network/v2/test_floating_ip_network.py +13 -19
  43. openstackclient/tests/unit/network/v2/test_l3_conntrack_helper.py +2 -2
  44. openstackclient/tests/unit/network/v2/test_ndp_proxy.py +1 -3
  45. openstackclient/tests/unit/network/v2/test_network.py +4 -4
  46. openstackclient/tests/unit/network/v2/test_network_agent.py +15 -29
  47. openstackclient/tests/unit/network/v2/test_network_qos_policy.py +16 -19
  48. openstackclient/tests/unit/network/v2/test_network_qos_rule.py +79 -152
  49. openstackclient/tests/unit/network/v2/test_network_qos_rule_type.py +4 -6
  50. openstackclient/tests/unit/network/v2/test_network_rbac.py +2 -2
  51. openstackclient/tests/unit/network/v2/test_port.py +17 -17
  52. openstackclient/tests/unit/network/v2/test_router.py +73 -57
  53. openstackclient/tests/unit/network/v2/test_security_group_network.py +25 -27
  54. openstackclient/tests/unit/network/v2/test_security_group_rule_compute.py +1 -3
  55. openstackclient/tests/unit/network/v2/test_security_group_rule_network.py +33 -39
  56. openstackclient/tests/unit/volume/v2/fakes.py +1 -2
  57. openstackclient/tests/unit/volume/v2/test_service.py +57 -91
  58. openstackclient/tests/unit/volume/v2/test_volume.py +108 -105
  59. openstackclient/tests/unit/volume/v2/test_volume_backup.py +141 -148
  60. openstackclient/tests/unit/volume/v2/test_volume_snapshot.py +293 -283
  61. openstackclient/tests/unit/volume/v3/test_block_storage_log_level.py +61 -71
  62. openstackclient/tests/unit/volume/v3/test_service.py +221 -141
  63. openstackclient/tests/unit/volume/v3/test_volume.py +130 -119
  64. openstackclient/tests/unit/volume/v3/test_volume_attachment.py +1 -1
  65. openstackclient/tests/unit/volume/v3/test_volume_backup.py +198 -203
  66. openstackclient/tests/unit/volume/v3/test_volume_snapshot.py +682 -47
  67. openstackclient/volume/v2/service.py +41 -38
  68. openstackclient/volume/v2/volume.py +63 -37
  69. openstackclient/volume/v2/volume_backup.py +9 -3
  70. openstackclient/volume/v2/volume_snapshot.py +121 -84
  71. openstackclient/volume/v3/block_storage_log_level.py +22 -28
  72. openstackclient/volume/v3/service.py +105 -14
  73. openstackclient/volume/v3/volume.py +200 -39
  74. openstackclient/volume/v3/volume_backup.py +24 -19
  75. openstackclient/volume/v3/volume_snapshot.py +485 -10
  76. {python_openstackclient-8.0.0.dist-info → python_openstackclient-8.1.0.dist-info}/AUTHORS +8 -0
  77. python_openstackclient-8.1.0.dist-info/METADATA +264 -0
  78. {python_openstackclient-8.0.0.dist-info → python_openstackclient-8.1.0.dist-info}/RECORD +83 -81
  79. {python_openstackclient-8.0.0.dist-info → python_openstackclient-8.1.0.dist-info}/entry_points.txt +7 -6
  80. python_openstackclient-8.1.0.dist-info/pbr.json +1 -0
  81. python_openstackclient-8.0.0.dist-info/METADATA +0 -166
  82. python_openstackclient-8.0.0.dist-info/pbr.json +0 -1
  83. {python_openstackclient-8.0.0.dist-info → python_openstackclient-8.1.0.dist-info}/LICENSE +0 -0
  84. {python_openstackclient-8.0.0.dist-info → python_openstackclient-8.1.0.dist-info}/WHEEL +0 -0
  85. {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.create_sdk_servers(
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.create_one_sdk_server()
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.create_one_sdk_server()
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.create_one_sdk_server()
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.create_one_sdk_server()
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.create_one_sdk_server(attrs=attrs)
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
- 'fixed': '10.0.0.2',
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.create_one_sdk_server()
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.create_sdk_servers(count=3)
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 = compute_fakes.fakes.FakeResource(
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.create_sdk_servers(count=server_count)
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.create_one_sdk_server()
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.create_one_sdk_server()
5569
- server_b = compute_fakes.create_one_sdk_server()
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.create_one_sdk_server()
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.create_one_sdk_server()
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.create_one_sdk_server(attrs=attrs)
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.create_one_sdk_server(attrs=attrs)
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.create_one_sdk_server(attrs=attrs)
7044
+ self.server = compute_fakes.create_one_server(attrs=attrs)
6998
7045
  attrs['id'] = self.server.id
6999
- self.new_server = compute_fakes.create_one_sdk_server(attrs=attrs)
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.create_one_sdk_server()
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.create_one_sdk_server()
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.create_one_sdk_server()
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.create_one_sdk_server()
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.create_one_sdk_server()
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.create_one_sdk_server()
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.create_one_sdk_server()
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.create_one_sdk_server()
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.create_one_sdk_server()
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.create_one_sdk_server()
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.create_one_sdk_server()
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.create_one_sdk_server()
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.create_one_sdk_server(
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.create_one_sdk_server(
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.create_one_sdk_server(
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.create_one_sdk_server()
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.create_one_sdk_server()
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.create_one_sdk_server()
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.create_one_sdk_server()
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.create_one_sdk_server(
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.create_one_sdk_server(server_info)
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.create_one_sdk_server(server_info)
9583
+ _server = compute_fakes.create_one_server(server_info)
9461
9584
  self.compute_client.get_server.return_value = _server
9462
9585
 
9463
9586
  expected = {