@@ -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 ('\r Progress: %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 ('\r Progress: %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