diff options
| author | Martin Chlumsky <martin.chlumsky@gmail.com> | 2019-06-13 23:16:53 -0400 |
|---|---|---|
| committer | Dean Troyer <dtroyer@gmail.com> | 2019-06-21 14:47:07 +0000 |
| commit | 1aad94349bcd8f4b772bd6f216e4af897d46053b (patch) | |
| tree | a322fd8059a4f73cfe1d263bae8ed67a205573fc /openstackclient/compute | |
| parent | 82823f89f04a931b2491b92b2d3b0349e286fd9b (diff) | |
| download | python-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.py | 26 |
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( |
