summaryrefslogtreecommitdiff
path: root/openstackclient/compute
diff options
context:
space:
mode:
authorMartin Chlumsky <martin.chlumsky@gmail.com>2019-06-13 23:16:53 -0400
committerDean Troyer <dtroyer@gmail.com>2019-06-21 14:47:07 +0000
commit1aad94349bcd8f4b772bd6f216e4af897d46053b (patch)
treea322fd8059a4f73cfe1d263bae8ed67a205573fc /openstackclient/compute
parent82823f89f04a931b2491b92b2d3b0349e286fd9b (diff)
downloadpython-openstackclient-1aad94349bcd8f4b772bd6f216e4af897d46053b.tar.gz
Allow "server migrate" (not live) to take "--host" option
Currently, doing a cold migration while specifying a target host is not possible however nova api supports it since version 2.56. This patch allows passing "--host" when doing a cold migration. It runs normally if --os-compute-api-version is 2.56 or greater and returns an error otherwise. Change-Id: I960109008096ce8bb4e4c8ca6ffb22c33aacd995 Story: 2003325 Task: 24359
Diffstat (limited to 'openstackclient/compute')
-rw-r--r--openstackclient/compute/v2/server.py26
1 files changed, 16 insertions, 10 deletions
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index 3e1deed5..1d022f03 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -1470,13 +1470,13 @@ class MigrateServer(command.Command):
'and ``--live-migration`` are used, ``--live-migration`` '
'takes priority.'),
)
- # TODO(mriedem): Add support for --os-compute-api-version >= 2.56 where
- # you can cold migrate to a specified target host.
host_group.add_argument(
'--host',
metavar='<hostname>',
- help=_('Live migrate the server to the specified host. Requires '
- '``--os-compute-api-version`` 2.30 or greater.'),
+ help=_('Migrate the server to the specified host. Requires '
+ '``--os-compute-api-version`` 2.30 or greater when used '
+ 'with the ``--live-migration`` option, otherwise requires '
+ '``--os-compute-api-version`` 2.56 or greater.'),
)
migration_group = parser.add_mutually_exclusive_group()
migration_group.add_argument(
@@ -1566,16 +1566,22 @@ class MigrateServer(command.Command):
kwargs['disk_over_commit'] = parsed_args.disk_overcommit
server.live_migrate(**kwargs)
else:
- if (parsed_args.block_migration or parsed_args.disk_overcommit or
- parsed_args.host):
- # TODO(mriedem): Allow --host for cold migration if
- # --os-compute-api-version >= 2.56.
+ if parsed_args.block_migration or parsed_args.disk_overcommit:
raise exceptions.CommandError(
"--live-migration must be specified if "
- "--block-migration, --disk-overcommit or --host is "
+ "--block-migration or --disk-overcommit is "
"specified")
+ if parsed_args.host:
+ if (compute_client.api_version <
+ api_versions.APIVersion('2.56')):
+ msg = _(
+ '--os-compute-api-version 2.56 or greater is '
+ 'required to use --host without --live-migration.'
+ )
+ raise exceptions.CommandError(msg)
- server.migrate()
+ kwargs = {'host': parsed_args.host} if parsed_args.host else {}
+ server.migrate(**kwargs)
if parsed_args.wait:
if utils.wait_for_status(