Cleanup of 'server migration list' command
Address some post merge nits. Change-Id: Ie59521d81fab191194f6c1a114b007fa17f5299f Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
This commit is contained in:
@@ -1866,99 +1866,99 @@ revert to release the new server and restart the old one.""")
|
|||||||
|
|
||||||
|
|
||||||
class ListMigration(command.Command):
|
class ListMigration(command.Command):
|
||||||
_description = _("""List server migrations.""")
|
_description = _("""List server migrations""")
|
||||||
|
|
||||||
def get_parser(self, prog_name):
|
def get_parser(self, prog_name):
|
||||||
parser = super(ListMigration, self).get_parser(prog_name)
|
parser = super(ListMigration, self).get_parser(prog_name)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--server",
|
'--server',
|
||||||
metavar="<server>",
|
metavar='<server>',
|
||||||
dest='server',
|
help=_(
|
||||||
default=None,
|
'Filter migrations by server (name or ID)'
|
||||||
help=_('Server to show migration details (name or ID).')
|
)
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--host",
|
'--host',
|
||||||
metavar="<host>",
|
metavar='<host>',
|
||||||
default=None,
|
help=_(
|
||||||
help=_('Fetch migrations for the given host.')
|
'Filter migrations by source or destination host'
|
||||||
|
),
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--status",
|
'--status',
|
||||||
metavar="<status>",
|
metavar='<status>',
|
||||||
default=None,
|
help=_('Filter migrations by status')
|
||||||
help=_('Fetch migrations for the given status.')
|
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--marker",
|
'--marker',
|
||||||
metavar="<marker>",
|
metavar='<marker>',
|
||||||
dest='marker',
|
help=_(
|
||||||
default=None,
|
"The last migration of the previous page; displays list "
|
||||||
help=_("The last migration of the previous page; displays list "
|
"of migrations after 'marker'. Note that the marker is "
|
||||||
"of migrations after 'marker'. Note that the marker is "
|
"the migration UUID. "
|
||||||
"the migration UUID. (Supported with "
|
"(supported with --os-compute-api-version 2.59 or above)"
|
||||||
"``--os-compute-api-version`` 2.59 or greater.)")
|
),
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--limit",
|
'--limit',
|
||||||
metavar="<limit>",
|
metavar='<limit>',
|
||||||
dest='limit',
|
|
||||||
type=int,
|
type=int,
|
||||||
default=None,
|
help=_(
|
||||||
help=_("Maximum number of migrations to display. Note that there "
|
"Maximum number of migrations to display. Note that there "
|
||||||
"is a configurable max limit on the server, and the limit "
|
"is a configurable max limit on the server, and the limit "
|
||||||
"that is used will be the minimum of what is requested "
|
"that is used will be the minimum of what is requested "
|
||||||
"here and what is configured in the server. "
|
"here and what is configured in the server. "
|
||||||
"(Supported with ``--os-compute-api-version`` 2.59 "
|
"(supported with --os-compute-api-version 2.59 or above)"
|
||||||
"or greater.)")
|
),
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--changes-since',
|
'--changes-since',
|
||||||
dest='changes_since',
|
dest='changes_since',
|
||||||
metavar='<changes-since>',
|
metavar='<changes-since>',
|
||||||
default=None,
|
help=_(
|
||||||
help=_("List only migrations changed later or equal to a certain "
|
"List only migrations changed later or equal to a certain "
|
||||||
"point of time. The provided time should be an ISO 8061 "
|
"point of time. The provided time should be an ISO 8061 "
|
||||||
"formatted time, e.g. ``2016-03-04T06:27:59Z``. "
|
"formatted time, e.g. ``2016-03-04T06:27:59Z``. "
|
||||||
"(Supported with ``--os-compute-api-version`` 2.59 "
|
"(supported with --os-compute-api-version 2.59 or above)"
|
||||||
"or greater.)")
|
),
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--changes-before',
|
'--changes-before',
|
||||||
dest='changes_before',
|
dest='changes_before',
|
||||||
metavar='<changes-before>',
|
metavar='<changes-before>',
|
||||||
default=None,
|
help=_(
|
||||||
help=_("List only migrations changed earlier or equal to a "
|
"List only migrations changed earlier or equal to a "
|
||||||
"certain point of time. The provided time should be an ISO "
|
"certain point of time. The provided time should be an ISO "
|
||||||
"8061 formatted time, e.g. ``2016-03-04T06:27:59Z``. "
|
"8061 formatted time, e.g. ``2016-03-04T06:27:59Z``. "
|
||||||
"(Supported with ``--os-compute-api-version`` 2.66 or "
|
"(supported with --os-compute-api-version 2.66 or above)"
|
||||||
"greater.)")
|
),
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--project',
|
'--project',
|
||||||
metavar='<project>',
|
metavar='<project>',
|
||||||
dest='project_id',
|
dest='project_id',
|
||||||
default=None,
|
help=_(
|
||||||
help=_("Filter the migrations by the given project ID. "
|
"Filter migrations by project (ID) "
|
||||||
"(Supported with ``--os-compute-api-version`` 2.80 "
|
"(supported with --os-compute-api-version 2.80 or above)"
|
||||||
"or greater.)"),
|
),
|
||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--user',
|
'--user',
|
||||||
metavar='<user>',
|
metavar='<user>',
|
||||||
dest='user_id',
|
dest='user_id',
|
||||||
default=None,
|
help=_(
|
||||||
help=_("Filter the migrations by the given user ID. "
|
"Filter migrations by user (ID) "
|
||||||
"(Supported with ``--os-compute-api-version`` 2.80 "
|
"(supported with --os-compute-api-version 2.80 or above)"
|
||||||
"or greater.)"),
|
),
|
||||||
)
|
)
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def print_migrations(self, parsed_args, compute_client, migrations):
|
def print_migrations(self, parsed_args, compute_client, migrations):
|
||||||
columns = ['Source Node', 'Dest Node', 'Source Compute',
|
columns = [
|
||||||
'Dest Compute', 'Dest Host', 'Status',
|
'Source Node', 'Dest Node', 'Source Compute', 'Dest Compute',
|
||||||
'Server UUID', 'Old Flavor', 'New Flavor',
|
'Dest Host', 'Status', 'Server UUID', 'Old Flavor', 'New Flavor',
|
||||||
'Created At', 'Updated At']
|
'Created At', 'Updated At',
|
||||||
|
]
|
||||||
|
|
||||||
# Insert migrations UUID after ID
|
# Insert migrations UUID after ID
|
||||||
if compute_client.api_version >= api_versions.APIVersion("2.59"):
|
if compute_client.api_version >= api_versions.APIVersion("2.59"):
|
||||||
@@ -1978,48 +1978,73 @@ class ListMigration(command.Command):
|
|||||||
if parsed_args.user_id:
|
if parsed_args.user_id:
|
||||||
columns.insert(len(columns) - 2, "User")
|
columns.insert(len(columns) - 2, "User")
|
||||||
|
|
||||||
columns_header = columns
|
return (
|
||||||
return (columns_header, (utils.get_item_properties(
|
columns,
|
||||||
mig, columns) for mig in migrations))
|
(utils.get_item_properties(mig, columns) for mig in migrations),
|
||||||
|
)
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
compute_client = self.app.client_manager.compute
|
compute_client = self.app.client_manager.compute
|
||||||
|
|
||||||
search_opts = {
|
search_opts = {
|
||||||
"host": parsed_args.host,
|
'host': parsed_args.host,
|
||||||
"server": parsed_args.server,
|
'server': parsed_args.server,
|
||||||
"status": parsed_args.status,
|
'status': parsed_args.status,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parsed_args.marker or parsed_args.limit or
|
if parsed_args.marker:
|
||||||
parsed_args.changes_since):
|
if compute_client.api_version < api_versions.APIVersion('2.59'):
|
||||||
if compute_client.api_version < api_versions.APIVersion("2.59"):
|
msg = _(
|
||||||
msg = _("marker, limit and/or changes_since is not supported "
|
'--os-compute-api-version 2.59 or greater is required to '
|
||||||
"for --os-compute-api-version less than 2.59")
|
'support the --marker option'
|
||||||
|
)
|
||||||
raise exceptions.CommandError(msg)
|
raise exceptions.CommandError(msg)
|
||||||
if parsed_args.marker:
|
search_opts['marker'] = parsed_args.marker
|
||||||
search_opts['marker'] = parsed_args.marker
|
|
||||||
if parsed_args.limit:
|
if parsed_args.limit:
|
||||||
search_opts['limit'] = parsed_args.limit
|
if compute_client.api_version < api_versions.APIVersion('2.59'):
|
||||||
if parsed_args.changes_since:
|
msg = _(
|
||||||
search_opts['changes_since'] = parsed_args.changes_since
|
'--os-compute-api-version 2.59 or greater is required to '
|
||||||
|
'support the --limit option'
|
||||||
|
)
|
||||||
|
raise exceptions.CommandError(msg)
|
||||||
|
search_opts['limit'] = parsed_args.limit
|
||||||
|
|
||||||
|
if parsed_args.changes_since:
|
||||||
|
if compute_client.api_version < api_versions.APIVersion('2.59'):
|
||||||
|
msg = _(
|
||||||
|
'--os-compute-api-version 2.59 or greater is required to '
|
||||||
|
'support the --changes-since option'
|
||||||
|
)
|
||||||
|
raise exceptions.CommandError(msg)
|
||||||
|
search_opts['changes_since'] = parsed_args.changes_since
|
||||||
|
|
||||||
if parsed_args.changes_before:
|
if parsed_args.changes_before:
|
||||||
if compute_client.api_version < api_versions.APIVersion("2.66"):
|
if compute_client.api_version < api_versions.APIVersion('2.66'):
|
||||||
msg = _("changes_before is not supported for "
|
msg = _(
|
||||||
"--os-compute-api-version less than 2.66")
|
'--os-compute-api-version 2.66 or greater is required to '
|
||||||
|
'support the --changes-before option'
|
||||||
|
)
|
||||||
raise exceptions.CommandError(msg)
|
raise exceptions.CommandError(msg)
|
||||||
search_opts['changes_before'] = parsed_args.changes_before
|
search_opts['changes_before'] = parsed_args.changes_before
|
||||||
|
|
||||||
if parsed_args.project_id or parsed_args.user_id:
|
if parsed_args.project_id:
|
||||||
if compute_client.api_version < api_versions.APIVersion("2.80"):
|
if compute_client.api_version < api_versions.APIVersion('2.80'):
|
||||||
msg = _("Project and/or user is not supported for "
|
msg = _(
|
||||||
"--os-compute-api-version less than 2.80")
|
'--os-compute-api-version 2.80 or greater is required to '
|
||||||
|
'support the --project option'
|
||||||
|
)
|
||||||
raise exceptions.CommandError(msg)
|
raise exceptions.CommandError(msg)
|
||||||
if parsed_args.project_id:
|
search_opts['project_id'] = parsed_args.project_id
|
||||||
search_opts['project_id'] = parsed_args.project_id
|
|
||||||
if parsed_args.user_id:
|
if parsed_args.user_id:
|
||||||
search_opts['user_id'] = parsed_args.user_id
|
if compute_client.api_version < api_versions.APIVersion('2.80'):
|
||||||
|
msg = _(
|
||||||
|
'--os-compute-api-version 2.80 or greater is required to '
|
||||||
|
'support the --user option'
|
||||||
|
)
|
||||||
|
raise exceptions.CommandError(msg)
|
||||||
|
search_opts['user_id'] = parsed_args.user_id
|
||||||
|
|
||||||
migrations = compute_client.migrations.list(**search_opts)
|
migrations = compute_client.migrations.list(**search_opts)
|
||||||
|
|
||||||
|
@@ -47,10 +47,14 @@ class TestServer(compute_fakes.TestComputev2):
|
|||||||
self.app.client_manager.compute.server_migrations
|
self.app.client_manager.compute.server_migrations
|
||||||
self.server_migrations_mock.reset_mock()
|
self.server_migrations_mock.reset_mock()
|
||||||
|
|
||||||
# Get a shortcut to the compute client volumeManager Mock
|
# Get a shortcut to the compute client VolumeManager mock
|
||||||
self.servers_volumes_mock = self.app.client_manager.compute.volumes
|
self.servers_volumes_mock = self.app.client_manager.compute.volumes
|
||||||
self.servers_volumes_mock.reset_mock()
|
self.servers_volumes_mock.reset_mock()
|
||||||
|
|
||||||
|
# Get a shortcut to the compute client MigrationManager mock
|
||||||
|
self.migrations_mock = self.app.client_manager.compute.migrations
|
||||||
|
self.migrations_mock.reset_mock()
|
||||||
|
|
||||||
# Get a shortcut to the compute client FlavorManager Mock
|
# Get a shortcut to the compute client FlavorManager Mock
|
||||||
self.flavors_mock = self.app.client_manager.compute.flavors
|
self.flavors_mock = self.app.client_manager.compute.flavors
|
||||||
self.flavors_mock.reset_mock()
|
self.flavors_mock.reset_mock()
|
||||||
@@ -3728,34 +3732,7 @@ class TestServerMigrate(TestServer):
|
|||||||
self.assertNotCalled(self.servers_mock.live_migrate)
|
self.assertNotCalled(self.servers_mock.live_migrate)
|
||||||
|
|
||||||
|
|
||||||
class TestServerMigration(TestServer):
|
class TestListMigration(TestServer):
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
super(TestServerMigration, self).setUp()
|
|
||||||
|
|
||||||
# Get a shortcut to the compute client ServerManager Mock
|
|
||||||
self.servers_mock = self.app.client_manager.compute.servers
|
|
||||||
self.servers_mock.reset_mock()
|
|
||||||
|
|
||||||
self.migrations_mock = (
|
|
||||||
self.app.client_manager.compute.migrations)
|
|
||||||
self.migrations_mock.reset_mock()
|
|
||||||
|
|
||||||
self.server = self.setup_servers_mock(1)[0]
|
|
||||||
|
|
||||||
def setup_servers_mock(self, count):
|
|
||||||
servers = compute_fakes.FakeServer.create_servers(count=count)
|
|
||||||
|
|
||||||
# This is the return value for utils.find_resource()
|
|
||||||
self.servers_mock.get = compute_fakes.FakeServer.get_servers(servers)
|
|
||||||
return servers
|
|
||||||
|
|
||||||
def setup_server_migrations_mock(self, count):
|
|
||||||
return compute_fakes.FakeServerMigration.create_server_migrations(
|
|
||||||
count=count)
|
|
||||||
|
|
||||||
|
|
||||||
class TestListMigration(TestServerMigration):
|
|
||||||
"""Test fetch all migrations."""
|
"""Test fetch all migrations."""
|
||||||
|
|
||||||
MIGRATION_COLUMNS = [
|
MIGRATION_COLUMNS = [
|
||||||
@@ -3767,24 +3744,48 @@ class TestListMigration(TestServerMigration):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestListMigration, self).setUp()
|
super(TestListMigration, self).setUp()
|
||||||
|
|
||||||
self.cmd = server.ListMigration(self.app, None)
|
self.server = compute_fakes.FakeServer.create_one_server()
|
||||||
self.migrations = self.setup_server_migrations_mock(3)
|
self.servers_mock.get.return_value = self.server
|
||||||
|
|
||||||
|
self.migrations = compute_fakes.FakeServerMigration\
|
||||||
|
.create_server_migrations(count=3)
|
||||||
self.migrations_mock.list.return_value = self.migrations
|
self.migrations_mock.list.return_value = self.migrations
|
||||||
self.setup_server_migrations_data(self.migrations)
|
|
||||||
|
|
||||||
self.app.client_manager.compute.api_version = api_versions.APIVersion(
|
|
||||||
'2.20')
|
|
||||||
|
|
||||||
def setup_server_migrations_data(self, migrations):
|
|
||||||
self.data = (common_utils.get_item_properties(
|
self.data = (common_utils.get_item_properties(
|
||||||
s, self.MIGRATION_COLUMNS) for s in migrations)
|
s, self.MIGRATION_COLUMNS) for s in self.migrations)
|
||||||
|
|
||||||
def test_server_migraton_list(self):
|
# Get the command object to test
|
||||||
|
self.cmd = server.ListMigration(self.app, None)
|
||||||
|
|
||||||
|
def test_server_migration_list_no_options(self):
|
||||||
|
arglist = []
|
||||||
|
verifylist = []
|
||||||
|
|
||||||
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
columns, data = self.cmd.take_action(parsed_args)
|
||||||
|
|
||||||
|
# Set expected values
|
||||||
|
kwargs = {
|
||||||
|
'status': None,
|
||||||
|
'host': None,
|
||||||
|
'server': None,
|
||||||
|
}
|
||||||
|
|
||||||
|
self.migrations_mock.list.assert_called_with(**kwargs)
|
||||||
|
|
||||||
|
self.assertEqual(self.MIGRATION_COLUMNS, columns)
|
||||||
|
self.assertEqual(tuple(self.data), tuple(data))
|
||||||
|
|
||||||
|
def test_server_migration_list(self):
|
||||||
arglist = [
|
arglist = [
|
||||||
'--status', 'migrating'
|
'--server', 'server1',
|
||||||
|
'--host', 'host1',
|
||||||
|
'--status', 'migrating',
|
||||||
]
|
]
|
||||||
verifylist = [
|
verifylist = [
|
||||||
('status', 'migrating')
|
('server', 'server1'),
|
||||||
|
('host', 'host1'),
|
||||||
|
('status', 'migrating'),
|
||||||
]
|
]
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
columns, data = self.cmd.take_action(parsed_args)
|
columns, data = self.cmd.take_action(parsed_args)
|
||||||
@@ -3792,8 +3793,8 @@ class TestListMigration(TestServerMigration):
|
|||||||
# Set expected values
|
# Set expected values
|
||||||
kwargs = {
|
kwargs = {
|
||||||
'status': 'migrating',
|
'status': 'migrating',
|
||||||
'host': None,
|
'host': 'host1',
|
||||||
'server': None,
|
'server': 'server1',
|
||||||
}
|
}
|
||||||
|
|
||||||
self.migrations_mock.list.assert_called_with(**kwargs)
|
self.migrations_mock.list.assert_called_with(**kwargs)
|
||||||
@@ -3813,15 +3814,11 @@ class TestListMigrationV223(TestListMigration):
|
|||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestListMigrationV223, self).setUp()
|
super(TestListMigrationV223, self).setUp()
|
||||||
self.cmd = server.ListMigration(self.app, None)
|
|
||||||
self.migrations = self.setup_server_migrations_mock(3)
|
|
||||||
self.migrations_mock.list.return_value = self.migrations
|
|
||||||
self.setup_server_migrations_data(self.migrations)
|
|
||||||
|
|
||||||
self.app.client_manager.compute.api_version = api_versions.APIVersion(
|
self.app.client_manager.compute.api_version = api_versions.APIVersion(
|
||||||
'2.23')
|
'2.23')
|
||||||
|
|
||||||
def test_server_migraton_list(self):
|
def test_server_migration_list(self):
|
||||||
arglist = [
|
arglist = [
|
||||||
'--status', 'migrating'
|
'--status', 'migrating'
|
||||||
]
|
]
|
||||||
@@ -3858,15 +3855,11 @@ class TestListMigrationV259(TestListMigration):
|
|||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestListMigrationV259, self).setUp()
|
super(TestListMigrationV259, self).setUp()
|
||||||
self.cmd = server.ListMigration(self.app, None)
|
|
||||||
self.migrations = self.setup_server_migrations_mock(3)
|
|
||||||
self.migrations_mock.list.return_value = self.migrations
|
|
||||||
self.setup_server_migrations_data(self.migrations)
|
|
||||||
|
|
||||||
self.app.client_manager.compute.api_version = api_versions.APIVersion(
|
self.app.client_manager.compute.api_version = api_versions.APIVersion(
|
||||||
'2.59')
|
'2.59')
|
||||||
|
|
||||||
def test_server_migraton_list(self):
|
def test_server_migration_list(self):
|
||||||
arglist = [
|
arglist = [
|
||||||
'--status', 'migrating',
|
'--status', 'migrating',
|
||||||
'--limit', '1',
|
'--limit', '1',
|
||||||
@@ -3897,7 +3890,7 @@ class TestListMigrationV259(TestListMigration):
|
|||||||
self.assertEqual(self.MIGRATION_COLUMNS, columns)
|
self.assertEqual(self.MIGRATION_COLUMNS, columns)
|
||||||
self.assertEqual(tuple(self.data), tuple(data))
|
self.assertEqual(tuple(self.data), tuple(data))
|
||||||
|
|
||||||
def test_server_migraton_list_with_limit_pre_v259(self):
|
def test_server_migration_list_with_limit_pre_v259(self):
|
||||||
self.app.client_manager.compute.api_version = api_versions.APIVersion(
|
self.app.client_manager.compute.api_version = api_versions.APIVersion(
|
||||||
'2.58')
|
'2.58')
|
||||||
arglist = [
|
arglist = [
|
||||||
@@ -3909,10 +3902,15 @@ class TestListMigrationV259(TestListMigration):
|
|||||||
('limit', 1)
|
('limit', 1)
|
||||||
]
|
]
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
self.assertRaises(exceptions.CommandError, self.cmd.take_action,
|
ex = self.assertRaises(
|
||||||
parsed_args)
|
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_migraton_list_with_marker_pre_v259(self):
|
def test_server_migration_list_with_marker_pre_v259(self):
|
||||||
self.app.client_manager.compute.api_version = api_versions.APIVersion(
|
self.app.client_manager.compute.api_version = api_versions.APIVersion(
|
||||||
'2.58')
|
'2.58')
|
||||||
arglist = [
|
arglist = [
|
||||||
@@ -3924,10 +3922,15 @@ class TestListMigrationV259(TestListMigration):
|
|||||||
('marker', 'test_kp')
|
('marker', 'test_kp')
|
||||||
]
|
]
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
self.assertRaises(exceptions.CommandError, self.cmd.take_action,
|
ex = self.assertRaises(
|
||||||
parsed_args)
|
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_migraton_list_with_changes_since_pre_v259(self):
|
def test_server_migration_list_with_changes_since_pre_v259(self):
|
||||||
self.app.client_manager.compute.api_version = api_versions.APIVersion(
|
self.app.client_manager.compute.api_version = api_versions.APIVersion(
|
||||||
'2.58')
|
'2.58')
|
||||||
arglist = [
|
arglist = [
|
||||||
@@ -3939,8 +3942,13 @@ class TestListMigrationV259(TestListMigration):
|
|||||||
('changes_since', '2019-08-09T08:03:25Z')
|
('changes_since', '2019-08-09T08:03:25Z')
|
||||||
]
|
]
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
self.assertRaises(exceptions.CommandError, self.cmd.take_action,
|
ex = self.assertRaises(
|
||||||
parsed_args)
|
exceptions.CommandError,
|
||||||
|
self.cmd.take_action,
|
||||||
|
parsed_args)
|
||||||
|
self.assertIn(
|
||||||
|
'--os-compute-api-version 2.59 or greater is required',
|
||||||
|
str(ex))
|
||||||
|
|
||||||
|
|
||||||
class TestListMigrationV266(TestListMigration):
|
class TestListMigrationV266(TestListMigration):
|
||||||
@@ -3954,15 +3962,11 @@ class TestListMigrationV266(TestListMigration):
|
|||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestListMigrationV266, self).setUp()
|
super(TestListMigrationV266, self).setUp()
|
||||||
self.cmd = server.ListMigration(self.app, None)
|
|
||||||
self.migrations = self.setup_server_migrations_mock(3)
|
|
||||||
self.migrations_mock.list.return_value = self.migrations
|
|
||||||
self.setup_server_migrations_data(self.migrations)
|
|
||||||
|
|
||||||
self.app.client_manager.compute.api_version = api_versions.APIVersion(
|
self.app.client_manager.compute.api_version = api_versions.APIVersion(
|
||||||
'2.66')
|
'2.66')
|
||||||
|
|
||||||
def test_server_migraton_list_with_changes_before(self):
|
def test_server_migration_list_with_changes_before(self):
|
||||||
arglist = [
|
arglist = [
|
||||||
'--status', 'migrating',
|
'--status', 'migrating',
|
||||||
'--limit', '1',
|
'--limit', '1',
|
||||||
@@ -3996,7 +4000,7 @@ class TestListMigrationV266(TestListMigration):
|
|||||||
self.assertEqual(self.MIGRATION_COLUMNS, columns)
|
self.assertEqual(self.MIGRATION_COLUMNS, columns)
|
||||||
self.assertEqual(tuple(self.data), tuple(data))
|
self.assertEqual(tuple(self.data), tuple(data))
|
||||||
|
|
||||||
def test_server_migraton_list_with_changes_before_pre_v266(self):
|
def test_server_migration_list_with_changes_before_pre_v266(self):
|
||||||
self.app.client_manager.compute.api_version = api_versions.APIVersion(
|
self.app.client_manager.compute.api_version = api_versions.APIVersion(
|
||||||
'2.65')
|
'2.65')
|
||||||
arglist = [
|
arglist = [
|
||||||
@@ -4008,8 +4012,13 @@ class TestListMigrationV266(TestListMigration):
|
|||||||
('changes_before', '2019-08-09T08:03:25Z')
|
('changes_before', '2019-08-09T08:03:25Z')
|
||||||
]
|
]
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
self.assertRaises(exceptions.CommandError, self.cmd.take_action,
|
ex = self.assertRaises(
|
||||||
parsed_args)
|
exceptions.CommandError,
|
||||||
|
self.cmd.take_action,
|
||||||
|
parsed_args)
|
||||||
|
self.assertIn(
|
||||||
|
'--os-compute-api-version 2.66 or greater is required',
|
||||||
|
str(ex))
|
||||||
|
|
||||||
|
|
||||||
class TestListMigrationV280(TestListMigration):
|
class TestListMigrationV280(TestListMigration):
|
||||||
@@ -4023,15 +4032,11 @@ class TestListMigrationV280(TestListMigration):
|
|||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestListMigrationV280, self).setUp()
|
super(TestListMigrationV280, self).setUp()
|
||||||
self.cmd = server.ListMigration(self.app, None)
|
|
||||||
self.migrations = self.setup_server_migrations_mock(3)
|
|
||||||
self.migrations_mock.list.return_value = self.migrations
|
|
||||||
self.setup_server_migrations_data(self.migrations)
|
|
||||||
|
|
||||||
self.app.client_manager.compute.api_version = api_versions.APIVersion(
|
self.app.client_manager.compute.api_version = api_versions.APIVersion(
|
||||||
'2.80')
|
'2.80')
|
||||||
|
|
||||||
def test_server_migraton_list_with_project(self):
|
def test_server_migration_list_with_project(self):
|
||||||
arglist = [
|
arglist = [
|
||||||
'--status', 'migrating',
|
'--status', 'migrating',
|
||||||
'--limit', '1',
|
'--limit', '1',
|
||||||
@@ -4086,10 +4091,15 @@ class TestListMigrationV280(TestListMigration):
|
|||||||
('project_id', '0c2accde-644a-45fa-8c10-e76debc7fbc3')
|
('project_id', '0c2accde-644a-45fa-8c10-e76debc7fbc3')
|
||||||
]
|
]
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
self.assertRaises(exceptions.CommandError, self.cmd.take_action,
|
ex = self.assertRaises(
|
||||||
parsed_args)
|
exceptions.CommandError,
|
||||||
|
self.cmd.take_action,
|
||||||
|
parsed_args)
|
||||||
|
self.assertIn(
|
||||||
|
'--os-compute-api-version 2.80 or greater is required',
|
||||||
|
str(ex))
|
||||||
|
|
||||||
def test_server_migraton_list_with_user(self):
|
def test_server_migration_list_with_user(self):
|
||||||
arglist = [
|
arglist = [
|
||||||
'--status', 'migrating',
|
'--status', 'migrating',
|
||||||
'--limit', '1',
|
'--limit', '1',
|
||||||
@@ -4144,11 +4154,15 @@ class TestListMigrationV280(TestListMigration):
|
|||||||
('user_id', 'dd214878-ca12-40fb-b035-fa7d2c1e86d6')
|
('user_id', 'dd214878-ca12-40fb-b035-fa7d2c1e86d6')
|
||||||
]
|
]
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, 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.80 or greater is required',
|
||||||
|
str(ex))
|
||||||
|
|
||||||
self.assertRaises(exceptions.CommandError, self.cmd.take_action,
|
def test_server_migration_list_with_project_and_user(self):
|
||||||
parsed_args)
|
|
||||||
|
|
||||||
def test_server_migraton_list_with_project_and_user(self):
|
|
||||||
arglist = [
|
arglist = [
|
||||||
'--status', 'migrating',
|
'--status', 'migrating',
|
||||||
'--limit', '1',
|
'--limit', '1',
|
||||||
@@ -4208,8 +4222,13 @@ class TestListMigrationV280(TestListMigration):
|
|||||||
('user_id', 'dd214878-ca12-40fb-b035-fa7d2c1e86d6')
|
('user_id', 'dd214878-ca12-40fb-b035-fa7d2c1e86d6')
|
||||||
]
|
]
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
self.assertRaises(exceptions.CommandError, self.cmd.take_action,
|
ex = self.assertRaises(
|
||||||
parsed_args)
|
exceptions.CommandError,
|
||||||
|
self.cmd.take_action,
|
||||||
|
parsed_args)
|
||||||
|
self.assertIn(
|
||||||
|
'--os-compute-api-version 2.80 or greater is required',
|
||||||
|
str(ex))
|
||||||
|
|
||||||
|
|
||||||
class TestServerMigrationAbort(TestServer):
|
class TestServerMigrationAbort(TestServer):
|
||||||
|
Reference in New Issue
Block a user