summaryrefslogtreecommitdiff
path: root/openstackclient/compute/v2
diff options
context:
space:
mode:
authorRené Ribaud <rribaud@redhat.com>2022-03-03 17:50:08 +0100
committerRené Ribaud <rribaud@redhat.com>2022-08-22 15:03:24 +0200
commit6e0699c1cf3e603850580a6bb5ca2e377fe1bc84 (patch)
tree05459c4776b841abc7f1181737d06578775fa5cb /openstackclient/compute/v2
parent27b2496e03ceb95b56b3b1b68a57058fe90251b5 (diff)
downloadpython-openstackclient-6e0699c1cf3e603850580a6bb5ca2e377fe1bc84.tar.gz
Microversion 2.91: Support specifying destination host to unshelve
This patch adds a new parameter ``--host`` to ``openstack server unshelve`` command. This can help administrators to specify an ``host`` to unshelve a shelve offloaded server. And add new parameter ``--no-availability-zone`` to unpin a server availability These parameters are available in the 2.91 microversion. Depends-On: https://review.opendev.org/c/openstack/python-novaclient/+/831651 Implements: blueprint unshelve-to-host Change-Id: I7986adc7563f63bcd4b3caf5eb7bc4329b4e1eca
Diffstat (limited to 'openstackclient/compute/v2')
-rw-r--r--openstackclient/compute/v2/server.py39
1 files changed, 38 insertions, 1 deletions
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index b02ee6ff..0bcad8fc 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -4564,13 +4564,30 @@ class UnshelveServer(command.Command):
nargs='+',
help=_('Server(s) to unshelve (name or ID)'),
)
- parser.add_argument(
+ group = parser.add_mutually_exclusive_group()
+ group.add_argument(
'--availability-zone',
default=None,
help=_('Name of the availability zone in which to unshelve a '
'SHELVED_OFFLOADED server (supported by '
'--os-compute-api-version 2.77 or above)'),
)
+ group.add_argument(
+ '--no-availability-zone',
+ action='store_true',
+ default=False,
+ help=_('Unpin the availability zone of a SHELVED_OFFLOADED '
+ 'server. Server will be unshelved on a host without '
+ 'availability zone constraint (supported by '
+ '--os-compute-api-version 2.91 or above)'),
+ )
+ parser.add_argument(
+ '--host',
+ default=None,
+ help=_('Name of the destination host in which to unshelve a '
+ 'SHELVED_OFFLOADED server (supported by '
+ '--os-compute-api-version 2.91 or above)'),
+ )
parser.add_argument(
'--wait',
action='store_true',
@@ -4599,6 +4616,26 @@ class UnshelveServer(command.Command):
kwargs['availability_zone'] = parsed_args.availability_zone
+ if parsed_args.host:
+ if compute_client.api_version < api_versions.APIVersion('2.91'):
+ msg = _(
+ '--os-compute-api-version 2.91 or greater is required '
+ 'to support the --host option'
+ )
+ raise exceptions.CommandError(msg)
+
+ kwargs['host'] = parsed_args.host
+
+ if parsed_args.no_availability_zone:
+ if compute_client.api_version < api_versions.APIVersion('2.91'):
+ msg = _(
+ '--os-compute-api-version 2.91 or greater is required '
+ 'to support the --no-availability-zone option'
+ )
+ raise exceptions.CommandError(msg)
+
+ kwargs['availability_zone'] = None
+
for server in parsed_args.server:
server_obj = utils.find_resource(
compute_client.servers,