diff options
| author | Stephen Finucane <sfinucan@redhat.com> | 2022-02-10 18:30:37 +0000 |
|---|---|---|
| committer | Stephen Finucane <sfinucan@redhat.com> | 2022-03-09 17:31:44 +0000 |
| commit | cffec4517f8bfbe3a6d6d1610c5b3217271a9a9f (patch) | |
| tree | f207cbb2616b7aa1a987e1a0cface95de29168d5 /openstackclient/tests/unit | |
| parent | 8c975ba09790f9fe57c32293fb4320bf5c56e012 (diff) | |
| download | python-openstackclient-cffec4517f8bfbe3a6d6d1610c5b3217271a9a9f.tar.gz | |
compute: Allow retrieval of migration by UUID
The nova API doesn't allow you to retrieve migration records by UUID,
only ID. This is confusing. Work around it by listing records and
filtering this list.
Change-Id: I932c9c70420e85056509513e005bb78168e70611
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
Diffstat (limited to 'openstackclient/tests/unit')
| -rw-r--r-- | openstackclient/tests/unit/compute/v2/test_server.py | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py index 480dcfe1..e1002d28 100644 --- a/openstackclient/tests/unit/compute/v2/test_server.py +++ b/openstackclient/tests/unit/compute/v2/test_server.py @@ -6232,6 +6232,88 @@ class TestServerMigrationShow(TestServer): '--os-compute-api-version 2.24 or greater is required', str(ex)) + def test_server_migration_show_by_uuid(self): + self.app.client_manager.compute.api_version = api_versions.APIVersion( + '2.59') + self.server_migrations_mock.list.return_value = [self.server_migration] + + self.columns += ('UUID',) + self.data += (self.server_migration.uuid,) + + arglist = [ + self.server.id, + self.server_migration.uuid, # arbitrary migration UUID + ] + verifylist = [] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + columns, data = self.cmd.take_action(parsed_args) + + self.assertEqual(self.columns, columns) + self.assertEqual(self.data, data) + + self.servers_mock.get.assert_called_with(self.server.id) + self.server_migrations_mock.list.assert_called_with(self.server.id) + self.server_migrations_mock.get.assert_not_called() + + def test_server_migration_show_by_uuid_no_matches(self): + self.app.client_manager.compute.api_version = api_versions.APIVersion( + '2.59') + self.server_migrations_mock.list.return_value = [] + + arglist = [ + self.server.id, + '69f95745-bfe3-4302-90f7-5b0022cba1ce', # arbitrary migration UUID + ] + verifylist = [] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + ex = self.assertRaises( + exceptions.CommandError, + self.cmd.take_action, + parsed_args) + self.assertIn( + 'In-progress live migration 69f95745-bfe3-4302-90f7-5b0022cba1ce', + str(ex)) + + def test_server_migration_show_by_uuid_pre_v259(self): + self.app.client_manager.compute.api_version = api_versions.APIVersion( + '2.58') + + arglist = [ + self.server.id, + '69f95745-bfe3-4302-90f7-5b0022cba1ce', # arbitrary migration UUID + ] + verifylist = [] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + ex = self.assertRaises( + exceptions.CommandError, + self.cmd.take_action, + parsed_args) + self.assertIn( + '--os-compute-api-version 2.59 or greater is required', + str(ex)) + + def test_server_migration_show_invalid_id(self): + self.app.client_manager.compute.api_version = api_versions.APIVersion( + '2.24') + + arglist = [ + self.server.id, + 'foo', # invalid migration ID + ] + verifylist = [] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + ex = self.assertRaises( + exceptions.CommandError, + self.cmd.take_action, + parsed_args) + self.assertIn( + 'The <migration> argument must be an ID or UUID', + str(ex)) + class TestServerMigrationAbort(TestServer): @@ -6283,6 +6365,69 @@ class TestServerMigrationAbort(TestServer): '--os-compute-api-version 2.24 or greater is required', str(ex)) + def test_server_migration_abort_by_uuid(self): + self.app.client_manager.compute.api_version = api_versions.APIVersion( + '2.59') + + self.server_migration = compute_fakes.FakeServerMigration\ + .create_one_server_migration() + self.server_migrations_mock.list.return_value = [self.server_migration] + + arglist = [ + self.server.id, + self.server_migration.uuid, # arbitrary migration UUID + ] + verifylist = [] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + result = self.cmd.take_action(parsed_args) + + self.servers_mock.get.assert_called_with(self.server.id) + self.server_migrations_mock.list.assert_called_with(self.server.id) + self.server_migrations_mock.live_migration_abort.assert_called_with( + self.server.id, self.server_migration.id) + self.assertIsNone(result) + + def test_server_migration_abort_by_uuid_no_matches(self): + self.app.client_manager.compute.api_version = api_versions.APIVersion( + '2.59') + + self.server_migrations_mock.list.return_value = [] + + arglist = [ + self.server.id, + '69f95745-bfe3-4302-90f7-5b0022cba1ce', # arbitrary migration UUID + ] + verifylist = [] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + ex = self.assertRaises( + exceptions.CommandError, + self.cmd.take_action, + parsed_args) + self.assertIn( + 'In-progress live migration 69f95745-bfe3-4302-90f7-5b0022cba1ce', + str(ex)) + + def test_server_migration_abort_by_uuid_pre_v259(self): + self.app.client_manager.compute.api_version = api_versions.APIVersion( + '2.58') + + arglist = [ + self.server.id, + '69f95745-bfe3-4302-90f7-5b0022cba1ce', # arbitrary migration UUID + ] + verifylist = [] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + ex = self.assertRaises( + exceptions.CommandError, + self.cmd.take_action, + parsed_args) + self.assertIn( + '--os-compute-api-version 2.59 or greater is required', + str(ex)) + class TestServerMigrationForceComplete(TestServer): @@ -6334,6 +6479,69 @@ class TestServerMigrationForceComplete(TestServer): '--os-compute-api-version 2.22 or greater is required', str(ex)) + def test_server_migration_force_complete_by_uuid(self): + self.app.client_manager.compute.api_version = api_versions.APIVersion( + '2.59') + + self.server_migration = compute_fakes.FakeServerMigration\ + .create_one_server_migration() + self.server_migrations_mock.list.return_value = [self.server_migration] + + arglist = [ + self.server.id, + self.server_migration.uuid, # arbitrary migration UUID + ] + verifylist = [] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + result = self.cmd.take_action(parsed_args) + + self.servers_mock.get.assert_called_with(self.server.id) + self.server_migrations_mock.list.assert_called_with(self.server.id) + self.server_migrations_mock.live_migrate_force_complete\ + .assert_called_with(self.server.id, self.server_migration.id) + self.assertIsNone(result) + + def test_server_migration_force_complete_by_uuid_no_matches(self): + self.app.client_manager.compute.api_version = api_versions.APIVersion( + '2.59') + + self.server_migrations_mock.list.return_value = [] + + arglist = [ + self.server.id, + '69f95745-bfe3-4302-90f7-5b0022cba1ce', # arbitrary migration UUID + ] + verifylist = [] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + ex = self.assertRaises( + exceptions.CommandError, + self.cmd.take_action, + parsed_args) + self.assertIn( + 'In-progress live migration 69f95745-bfe3-4302-90f7-5b0022cba1ce', + str(ex)) + + def test_server_migration_force_complete_by_uuid_pre_v259(self): + self.app.client_manager.compute.api_version = api_versions.APIVersion( + '2.58') + + arglist = [ + self.server.id, + '69f95745-bfe3-4302-90f7-5b0022cba1ce', # arbitrary migration UUID + ] + verifylist = [] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + ex = self.assertRaises( + exceptions.CommandError, + self.cmd.take_action, + parsed_args) + self.assertIn( + '--os-compute-api-version 2.59 or greater is required', + str(ex)) + class TestServerPause(TestServer): |
