diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py index a116ff3c35..aa85e3d9ae 100644 --- a/openstackclient/tests/unit/compute/v2/test_server.py +++ b/openstackclient/tests/unit/compute/v2/test_server.py @@ -78,30 +78,6 @@ class TestServer(compute_fakes.TestComputev2): return servers - def setup_sdk_volumes_mock(self, count): - volumes = volume_fakes.create_sdk_volumes(count=count) - - # This is the return value for volume_client.find_volume() - self.volume_sdk_client.find_volume.side_effect = volumes - - return volumes - - def run_method_with_sdk_servers(self, method_name, server_count): - servers = self.setup_sdk_servers_mock(count=server_count) - - arglist = [s.id for s in servers] - verifylist = [ - ('server', arglist), - ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) - - result = self.cmd.take_action(parsed_args) - - calls = [mock.call(s.id) for s in servers] - method = getattr(self.compute_sdk_client, method_name) - method.assert_has_calls(calls) - self.assertIsNone(result) - class TestServerAddFixedIP(TestServer): def setUp(self): @@ -730,12 +706,15 @@ class TestServerVolume(TestServer): def setUp(self): super().setUp() - self.servers = self.setup_sdk_servers_mock(count=1) - self.volumes = self.setup_sdk_volumes_mock(count=1) + self.server = compute_fakes.create_one_sdk_server() + self.compute_sdk_client.find_server.return_value = self.server + + self.volume = volume_fakes.create_one_sdk_volume() + self.volume_sdk_client.find_volume.return_value = self.volume attrs = { - 'server_id': self.servers[0].id, - 'volume_id': self.volumes[0].id, + 'server_id': self.server.id, + 'volume_id': self.volume.id, } self.volume_attachment = compute_fakes.create_one_volume_attachment( attrs=attrs @@ -758,12 +737,12 @@ class TestServerAddVolume(TestServerVolume): arglist = [ '--device', '/dev/sdb', - self.servers[0].id, - self.volumes[0].id, + self.server.id, + self.volume.id, ] verifylist = [ - ('server', self.servers[0].id), - ('volume', self.volumes[0].id), + ('server', self.server.id), + ('volume', self.volume.id), ('device', '/dev/sdb'), ] @@ -782,7 +761,7 @@ class TestServerAddVolume(TestServerVolume): self.assertEqual(expected_columns, columns) self.assertEqual(expected_data, data) self.compute_sdk_client.create_volume_attachment.assert_called_once_with( - self.servers[0], volumeId=self.volumes[0].id, device='/dev/sdb' + self.server, volumeId=self.volume.id, device='/dev/sdb' ) def test_server_add_volume_with_tag(self): @@ -793,12 +772,12 @@ class TestServerAddVolume(TestServerVolume): '/dev/sdb', '--tag', 'foo', - self.servers[0].id, - self.volumes[0].id, + self.server.id, + self.volume.id, ] verifylist = [ - ('server', self.servers[0].id), - ('volume', self.volumes[0].id), + ('server', self.server.id), + ('volume', self.volume.id), ('device', '/dev/sdb'), ('tag', 'foo'), ] @@ -819,8 +798,8 @@ class TestServerAddVolume(TestServerVolume): self.assertEqual(expected_columns, columns) self.assertEqual(expected_data, data) self.compute_sdk_client.create_volume_attachment.assert_called_once_with( - self.servers[0], - volumeId=self.volumes[0].id, + self.server, + volumeId=self.volume.id, device='/dev/sdb', tag='foo', ) @@ -829,14 +808,14 @@ class TestServerAddVolume(TestServerVolume): self.set_compute_api_version('2.48') arglist = [ - self.servers[0].id, - self.volumes[0].id, + self.server.id, + self.volume.id, '--tag', 'foo', ] verifylist = [ - ('server', self.servers[0].id), - ('volume', self.volumes[0].id), + ('server', self.server.id), + ('volume', self.volume.id), ('tag', 'foo'), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -856,13 +835,13 @@ class TestServerAddVolume(TestServerVolume): '--enable-delete-on-termination', '--device', '/dev/sdb', - self.servers[0].id, - self.volumes[0].id, + self.server.id, + self.volume.id, ] verifylist = [ - ('server', self.servers[0].id), - ('volume', self.volumes[0].id), + ('server', self.server.id), + ('volume', self.volume.id), ('device', '/dev/sdb'), ('enable_delete_on_termination', True), ] @@ -889,8 +868,8 @@ class TestServerAddVolume(TestServerVolume): self.assertEqual(expected_columns, columns) self.assertEqual(expected_data, data) self.compute_sdk_client.create_volume_attachment.assert_called_once_with( - self.servers[0], - volumeId=self.volumes[0].id, + self.server, + volumeId=self.volume.id, device='/dev/sdb', delete_on_termination=True, ) @@ -904,13 +883,13 @@ class TestServerAddVolume(TestServerVolume): '--disable-delete-on-termination', '--device', '/dev/sdb', - self.servers[0].id, - self.volumes[0].id, + self.server.id, + self.volume.id, ] verifylist = [ - ('server', self.servers[0].id), - ('volume', self.volumes[0].id), + ('server', self.server.id), + ('volume', self.volume.id), ('device', '/dev/sdb'), ('disable_delete_on_termination', True), ] @@ -938,8 +917,8 @@ class TestServerAddVolume(TestServerVolume): self.assertEqual(expected_columns, columns) self.assertEqual(expected_data, data) self.compute_sdk_client.create_volume_attachment.assert_called_once_with( - self.servers[0], - volumeId=self.volumes[0].id, + self.server, + volumeId=self.volume.id, device='/dev/sdb', delete_on_termination=False, ) @@ -950,13 +929,13 @@ class TestServerAddVolume(TestServerVolume): self.set_compute_api_version('2.78') arglist = [ - self.servers[0].id, - self.volumes[0].id, + self.server.id, + self.volume.id, '--enable-delete-on-termination', ] verifylist = [ - ('server', self.servers[0].id), - ('volume', self.volumes[0].id), + ('server', self.server.id), + ('volume', self.volume.id), ('enable_delete_on_termination', True), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -974,13 +953,13 @@ class TestServerAddVolume(TestServerVolume): self.set_compute_api_version('2.78') arglist = [ - self.servers[0].id, - self.volumes[0].id, + self.server.id, + self.volume.id, '--disable-delete-on-termination', ] verifylist = [ - ('server', self.servers[0].id), - ('volume', self.volumes[0].id), + ('server', self.server.id), + ('volume', self.volume.id), ('disable_delete_on_termination', True), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -1002,13 +981,13 @@ class TestServerAddVolume(TestServerVolume): '--disable-delete-on-termination', '--device', '/dev/sdb', - self.servers[0].id, - self.volumes[0].id, + self.server.id, + self.volume.id, ] verifylist = [ - ('server', self.servers[0].id), - ('volume', self.volumes[0].id), + ('server', self.server.id), + ('volume', self.volume.id), ('device', '/dev/sdb'), ('enable_delete_on_termination', True), ('disable_delete_on_termination', True), @@ -1036,13 +1015,13 @@ class TestServerRemoveVolume(TestServerVolume): def test_server_remove_volume(self): arglist = [ - self.servers[0].id, - self.volumes[0].id, + self.server.id, + self.volume.id, ] verifylist = [ - ('server', self.servers[0].id), - ('volume', self.volumes[0].id), + ('server', self.server.id), + ('volume', self.volume.id), ] parsed_args = self.check_parser(self.cmd, arglist, verifylist) @@ -1051,8 +1030,8 @@ class TestServerRemoveVolume(TestServerVolume): self.assertIsNone(result) self.compute_sdk_client.delete_volume_attachment.assert_called_once_with( - self.volumes[0], - self.servers[0], + self.volume, + self.server, ignore_missing=False, ) @@ -5476,15 +5455,29 @@ class TestServerListV273(_TestServerList): self.assertEqual(expected_row, partial_server) -class TestServerLock(TestServer): +class TestServerAction(compute_fakes.TestComputev2): + def run_method_with_sdk_servers(self, method_name, server_count): + servers = compute_fakes.create_sdk_servers(count=server_count) + self.compute_sdk_client.find_server.side_effect = servers + + arglist = [s.id for s in servers] + verifylist = [ + ('server', arglist), + ] + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + result = self.cmd.take_action(parsed_args) + + calls = [mock.call(s.id) for s in servers] + method = getattr(self.compute_sdk_client, method_name) + method.assert_has_calls(calls) + self.assertIsNone(result) + + +class TestServerLock(TestServerAction): def setUp(self): super().setUp() - self.server = compute_fakes.create_one_sdk_server() - - self.compute_sdk_client.find_server.return_value = self.server - self.compute_sdk_client.lock_server.return_value = None - # Get the command object to test self.cmd = server.LockServer(self.app, None) @@ -5497,6 +5490,10 @@ class TestServerLock(TestServer): def test_server_lock_with_reason(self): self.set_compute_api_version('2.73') + self.server = compute_fakes.create_one_sdk_server() + self.compute_sdk_client.find_server.return_value = self.server + self.compute_sdk_client.lock_server.return_value = None + arglist = [ self.server.id, '--reason', @@ -5506,8 +5503,10 @@ class TestServerLock(TestServer): ('server', [self.server.id]), ('reason', 'blah'), ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) self.cmd.take_action(parsed_args) + self.compute_sdk_client.find_server.assert_called_with( self.server.id, ignore_missing=False, @@ -5520,30 +5519,38 @@ class TestServerLock(TestServer): def test_server_lock_with_reason_multi_servers(self): self.set_compute_api_version('2.73') - server2 = compute_fakes.create_one_sdk_server() + server_a = compute_fakes.create_one_sdk_server() + server_b = compute_fakes.create_one_sdk_server() + + self.compute_sdk_client.find_server.side_effect = [server_a, server_b] + self.compute_sdk_client.lock_server.return_value = None arglist = [ - self.server.id, - server2.id, + server_a.id, + server_b.id, '--reason', 'choo..choo', ] verifylist = [ - ('server', [self.server.id, server2.id]), + ('server', [server_a.id, server_b.id]), ('reason', 'choo..choo'), ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) self.cmd.take_action(parsed_args) + self.assertEqual(2, self.compute_sdk_client.find_server.call_count) - self.compute_sdk_client.lock_server.assert_called_with( - self.server.id, - locked_reason="choo..choo", + self.compute_sdk_client.lock_server.assert_has_calls( + [ + mock.call(server_a.id, locked_reason="choo..choo"), + mock.call(server_b.id, locked_reason="choo..choo"), + ] ) - self.assertEqual(2, self.compute_sdk_client.lock_server.call_count) def test_server_lock_with_reason_pre_v273(self): self.set_compute_api_version('2.72') server = compute_fakes.create_one_sdk_server() + arglist = [ server.id, '--reason', @@ -5553,6 +5560,7 @@ class TestServerLock(TestServer): ('server', [server.id]), ('reason', "blah"), ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) ex = self.assertRaises( exceptions.CommandError, @@ -6089,7 +6097,7 @@ class TestServerReboot(TestServer): ) -class TestServerPause(TestServer): +class TestServerPause(TestServerAction): def setUp(self): super().setUp() @@ -7869,7 +7877,7 @@ class TestServerRevertMigration(compute_fakes.TestComputev2): self.assertIsNone(result) -class TestServerRestore(TestServer): +class TestServerRestore(TestServerAction): def setUp(self): super().setUp() @@ -7883,7 +7891,7 @@ class TestServerRestore(TestServer): self.run_method_with_sdk_servers('restore_server', 3) -class TestServerResume(TestServer): +class TestServerResume(TestServerAction): def setUp(self): super().setUp() @@ -8752,7 +8760,7 @@ class TestServerSsh(TestServer): ) -class TestServerStart(TestServer): +class TestServerStart(TestServerAction): def setUp(self): super().setUp() @@ -8766,28 +8774,29 @@ class TestServerStart(TestServer): self.run_method_with_sdk_servers('start_server', 3) def test_server_start_with_all_projects(self): - servers = self.setup_sdk_servers_mock(count=1) + server = compute_fakes.create_one_sdk_server() + self.compute_sdk_client.find_server.return_value = server arglist = [ - servers[0].id, + server.id, '--all-projects', ] verifylist = [ - ('server', [servers[0].id]), + ('server', [server.id]), ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) + parsed_args = self.check_parser(self.cmd, arglist, verifylist) self.cmd.take_action(parsed_args) self.compute_sdk_client.find_server.assert_called_once_with( - servers[0].id, + server.id, ignore_missing=False, details=False, all_projects=True, ) -class TestServerStop(TestServer): +class TestServerStop(TestServerAction): def setUp(self): super().setUp() @@ -8801,28 +8810,29 @@ class TestServerStop(TestServer): self.run_method_with_sdk_servers('stop_server', 3) def test_server_start_with_all_projects(self): - servers = self.setup_sdk_servers_mock(count=1) + server = compute_fakes.create_one_sdk_server() + self.compute_sdk_client.find_server.return_value = server arglist = [ - servers[0].id, + server.id, '--all-projects', ] verifylist = [ - ('server', [servers[0].id]), + ('server', [server.id]), ] - parsed_args = self.check_parser(self.cmd, arglist, verifylist) + parsed_args = self.check_parser(self.cmd, arglist, verifylist) self.cmd.take_action(parsed_args) self.compute_sdk_client.find_server.assert_called_once_with( - servers[0].id, + server.id, ignore_missing=False, details=False, all_projects=True, ) -class TestServerSuspend(TestServer): +class TestServerSuspend(TestServerAction): def setUp(self): super().setUp() @@ -8836,7 +8846,7 @@ class TestServerSuspend(TestServer): self.run_method_with_sdk_servers('suspend_server', 3) -class TestServerUnlock(TestServer): +class TestServerUnlock(TestServerAction): def setUp(self): super().setUp() @@ -8850,7 +8860,7 @@ class TestServerUnlock(TestServer): self.run_method_with_sdk_servers('unlock_server', 3) -class TestServerUnpause(TestServer): +class TestServerUnpause(TestServerAction): def setUp(self): super().setUp()