Skip to content

Commit 5d2687b

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "Switch server shelve, unshelve to SDK"
2 parents eafe579 + f56f0e3 commit 5d2687b

3 files changed

Lines changed: 245 additions & 278 deletions

File tree

openstackclient/compute/v2/server.py

Lines changed: 48 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -4255,7 +4255,7 @@ class ShelveServer(command.Command):
42554255
"""
42564256

42574257
def get_parser(self, prog_name):
4258-
parser = super(ShelveServer, self).get_parser(prog_name)
4258+
parser = super().get_parser(prog_name)
42594259
parser.add_argument(
42604260
'servers',
42614261
metavar='<server>',
@@ -4287,65 +4287,71 @@ def _show_progress(progress):
42874287
self.app.stdout.write('\rProgress: %s' % progress)
42884288
self.app.stdout.flush()
42894289

4290-
compute_client = self.app.client_manager.compute
4290+
compute_client = self.app.client_manager.sdk_connection.compute
42914291

42924292
for server in parsed_args.servers:
4293-
server_obj = utils.find_resource(
4294-
compute_client.servers,
4293+
server_obj = compute_client.find_server(
42954294
server,
4295+
ignore_missing=False,
42964296
)
42974297
if server_obj.status.lower() in ('shelved', 'shelved_offloaded'):
42984298
continue
42994299

4300-
server_obj.shelve()
4300+
compute_client.shelve_server(server_obj.id)
43014301

43024302
# if we don't have to wait, either because it was requested explicitly
43034303
# or is required implicitly, then our job is done
43044304
if not parsed_args.wait and not parsed_args.offload:
43054305
return
43064306

43074307
for server in parsed_args.servers:
4308+
# We use osc-lib's wait_for_status since that allows for a callback
43084309
# TODO(stephenfin): We should wait for these in parallel using e.g.
43094310
# https://review.opendev.org/c/openstack/osc-lib/+/762503/
43104311
if not utils.wait_for_status(
4311-
compute_client.servers.get, server_obj.id,
4312+
compute_client.get_server,
4313+
server_obj.id,
43124314
success_status=('shelved', 'shelved_offloaded'),
43134315
callback=_show_progress,
43144316
):
43154317
LOG.error(_('Error shelving server: %s'), server_obj.id)
43164318
self.app.stdout.write(
4317-
_('Error shelving server: %s\n') % server_obj.id)
4319+
_('Error shelving server: %s\n') % server_obj.id
4320+
)
43184321
raise SystemExit
43194322

43204323
if not parsed_args.offload:
43214324
return
43224325

43234326
for server in parsed_args.servers:
4324-
server_obj = utils.find_resource(
4325-
compute_client.servers,
4327+
server_obj = compute_client.find_server(
43264328
server,
4329+
ignore_missing=False,
43274330
)
43284331
if server_obj.status.lower() == 'shelved_offloaded':
43294332
continue
43304333

4331-
server_obj.shelve_offload()
4334+
compute_client.shelve_offload_server(server_obj.id)
43324335

43334336
if not parsed_args.wait:
43344337
return
43354338

43364339
for server in parsed_args.servers:
4340+
# We use osc-lib's wait_for_status since that allows for a callback
43374341
# TODO(stephenfin): We should wait for these in parallel using e.g.
43384342
# https://review.opendev.org/c/openstack/osc-lib/+/762503/
43394343
if not utils.wait_for_status(
4340-
compute_client.servers.get, server_obj.id,
4344+
compute_client.get_server,
4345+
server_obj.id,
43414346
success_status=('shelved_offloaded',),
43424347
callback=_show_progress,
43434348
):
43444349
LOG.error(
4345-
_('Error offloading shelved server %s'), server_obj.id)
4350+
_('Error offloading shelved server %s'), server_obj.id,
4351+
)
43464352
self.app.stdout.write(
4347-
_('Error offloading shelved server: %s\n') % (
4348-
server_obj.id))
4353+
_('Error offloading shelved server: %s\n') % server_obj.id
4354+
)
43494355
raise SystemExit
43504356

43514357

@@ -4819,7 +4825,7 @@ class UnshelveServer(command.Command):
48194825
_description = _("Unshelve server(s)")
48204826

48214827
def get_parser(self, prog_name):
4822-
parser = super(UnshelveServer, self).get_parser(prog_name)
4828+
parser = super().get_parser(prog_name)
48234829
parser.add_argument(
48244830
'server',
48254831
metavar='<server>',
@@ -4830,25 +4836,31 @@ def get_parser(self, prog_name):
48304836
group.add_argument(
48314837
'--availability-zone',
48324838
default=None,
4833-
help=_('Name of the availability zone in which to unshelve a '
4834-
'SHELVED_OFFLOADED server (supported by '
4835-
'--os-compute-api-version 2.77 or above)'),
4839+
help=_(
4840+
'Name of the availability zone in which to unshelve a '
4841+
'SHELVED_OFFLOADED server '
4842+
'(supported by --os-compute-api-version 2.77 or above)'
4843+
),
48364844
)
48374845
group.add_argument(
48384846
'--no-availability-zone',
48394847
action='store_true',
48404848
default=False,
4841-
help=_('Unpin the availability zone of a SHELVED_OFFLOADED '
4842-
'server. Server will be unshelved on a host without '
4843-
'availability zone constraint (supported by '
4844-
'--os-compute-api-version 2.91 or above)'),
4849+
help=_(
4850+
'Unpin the availability zone of a SHELVED_OFFLOADED '
4851+
'server. Server will be unshelved on a host without '
4852+
'availability zone constraint '
4853+
'(supported by --os-compute-api-version 2.91 or above)'
4854+
),
48454855
)
48464856
parser.add_argument(
48474857
'--host',
48484858
default=None,
4849-
help=_('Name of the destination host in which to unshelve a '
4850-
'SHELVED_OFFLOADED server (supported by '
4851-
'--os-compute-api-version 2.91 or above)'),
4859+
help=_(
4860+
'Name of the destination host in which to unshelve a '
4861+
'SHELVED_OFFLOADED server '
4862+
'(supported by --os-compute-api-version 2.91 or above)'
4863+
),
48524864
)
48534865
parser.add_argument(
48544866
'--wait',
@@ -4865,11 +4877,11 @@ def _show_progress(progress):
48654877
self.app.stdout.write('\rProgress: %s' % progress)
48664878
self.app.stdout.flush()
48674879

4868-
compute_client = self.app.client_manager.compute
4880+
compute_client = self.app.client_manager.sdk_connection.compute
48694881
kwargs = {}
48704882

48714883
if parsed_args.availability_zone:
4872-
if compute_client.api_version < api_versions.APIVersion('2.77'):
4884+
if not sdk_utils.supports_microversion(compute_client, '2.77'):
48734885
msg = _(
48744886
'--os-compute-api-version 2.77 or greater is required '
48754887
'to support the --availability-zone option'
@@ -4879,7 +4891,7 @@ def _show_progress(progress):
48794891
kwargs['availability_zone'] = parsed_args.availability_zone
48804892

48814893
if parsed_args.host:
4882-
if compute_client.api_version < api_versions.APIVersion('2.91'):
4894+
if not sdk_utils.supports_microversion(compute_client, '2.91'):
48834895
msg = _(
48844896
'--os-compute-api-version 2.91 or greater is required '
48854897
'to support the --host option'
@@ -4889,7 +4901,7 @@ def _show_progress(progress):
48894901
kwargs['host'] = parsed_args.host
48904902

48914903
if parsed_args.no_availability_zone:
4892-
if compute_client.api_version < api_versions.APIVersion('2.91'):
4904+
if not sdk_utils.supports_microversion(compute_client, '2.91'):
48934905
msg = _(
48944906
'--os-compute-api-version 2.91 or greater is required '
48954907
'to support the --no-availability-zone option'
@@ -4899,25 +4911,27 @@ def _show_progress(progress):
48994911
kwargs['availability_zone'] = None
49004912

49014913
for server in parsed_args.server:
4902-
server_obj = utils.find_resource(
4903-
compute_client.servers,
4914+
server_obj = compute_client.find_server(
49044915
server,
4916+
ignore_missing=False,
49054917
)
49064918

49074919
if server_obj.status.lower() not in (
49084920
'shelved', 'shelved_offloaded',
49094921
):
49104922
continue
49114923

4912-
server_obj.unshelve(**kwargs)
4924+
compute_client.unshelve_server(server_obj.id, **kwargs)
49134925

49144926
if parsed_args.wait:
49154927
if not utils.wait_for_status(
4916-
compute_client.servers.get, server_obj.id,
4928+
compute_client.get_server,
4929+
server_obj.id,
49174930
success_status=('active', 'shutoff'),
49184931
callback=_show_progress,
49194932
):
49204933
LOG.error(_('Error unshelving server %s'), server_obj.id)
49214934
self.app.stdout.write(
4922-
_('Error unshelving server: %s\n') % server_obj.id)
4935+
_('Error unshelving server: %s\n') % server_obj.id
4936+
)
49234937
raise SystemExit

0 commit comments

Comments
 (0)