@@ -4261,7 +4261,7 @@ class ShelveServer(command.Command):
42614261 """
42624262
42634263 def get_parser (self , prog_name ):
4264- parser = super (ShelveServer , self ).get_parser (prog_name )
4264+ parser = super ().get_parser (prog_name )
42654265 parser .add_argument (
42664266 'servers' ,
42674267 metavar = '<server>' ,
@@ -4293,65 +4293,71 @@ def _show_progress(progress):
42934293 self .app .stdout .write ('\r Progress: %s' % progress )
42944294 self .app .stdout .flush ()
42954295
4296- compute_client = self .app .client_manager .compute
4296+ compute_client = self .app .client_manager .sdk_connection . compute
42974297
42984298 for server in parsed_args .servers :
4299- server_obj = utils .find_resource (
4300- compute_client .servers ,
4299+ server_obj = compute_client .find_server (
43014300 server ,
4301+ ignore_missing = False ,
43024302 )
43034303 if server_obj .status .lower () in ('shelved' , 'shelved_offloaded' ):
43044304 continue
43054305
4306- server_obj . shelve ( )
4306+ compute_client . shelve_server ( server_obj . id )
43074307
43084308 # if we don't have to wait, either because it was requested explicitly
43094309 # or is required implicitly, then our job is done
43104310 if not parsed_args .wait and not parsed_args .offload :
43114311 return
43124312
43134313 for server in parsed_args .servers :
4314+ # We use osc-lib's wait_for_status since that allows for a callback
43144315 # TODO(stephenfin): We should wait for these in parallel using e.g.
43154316 # https://review.opendev.org/c/openstack/osc-lib/+/762503/
43164317 if not utils .wait_for_status (
4317- compute_client .servers .get , server_obj .id ,
4318+ compute_client .get_server ,
4319+ server_obj .id ,
43184320 success_status = ('shelved' , 'shelved_offloaded' ),
43194321 callback = _show_progress ,
43204322 ):
43214323 LOG .error (_ ('Error shelving server: %s' ), server_obj .id )
43224324 self .app .stdout .write (
4323- _ ('Error shelving server: %s\n ' ) % server_obj .id )
4325+ _ ('Error shelving server: %s\n ' ) % server_obj .id
4326+ )
43244327 raise SystemExit
43254328
43264329 if not parsed_args .offload :
43274330 return
43284331
43294332 for server in parsed_args .servers :
4330- server_obj = utils .find_resource (
4331- compute_client .servers ,
4333+ server_obj = compute_client .find_server (
43324334 server ,
4335+ ignore_missing = False ,
43334336 )
43344337 if server_obj .status .lower () == 'shelved_offloaded' :
43354338 continue
43364339
4337- server_obj . shelve_offload ( )
4340+ compute_client . shelve_offload_server ( server_obj . id )
43384341
43394342 if not parsed_args .wait :
43404343 return
43414344
43424345 for server in parsed_args .servers :
4346+ # We use osc-lib's wait_for_status since that allows for a callback
43434347 # TODO(stephenfin): We should wait for these in parallel using e.g.
43444348 # https://review.opendev.org/c/openstack/osc-lib/+/762503/
43454349 if not utils .wait_for_status (
4346- compute_client .servers .get , server_obj .id ,
4350+ compute_client .get_server ,
4351+ server_obj .id ,
43474352 success_status = ('shelved_offloaded' ,),
43484353 callback = _show_progress ,
43494354 ):
43504355 LOG .error (
4351- _ ('Error offloading shelved server %s' ), server_obj .id )
4356+ _ ('Error offloading shelved server %s' ), server_obj .id ,
4357+ )
43524358 self .app .stdout .write (
4353- _ ('Error offloading shelved server: %s\n ' ) % (
4354- server_obj . id ) )
4359+ _ ('Error offloading shelved server: %s\n ' ) % server_obj . id
4360+ )
43554361 raise SystemExit
43564362
43574363
@@ -4825,7 +4831,7 @@ class UnshelveServer(command.Command):
48254831 _description = _ ("Unshelve server(s)" )
48264832
48274833 def get_parser (self , prog_name ):
4828- parser = super (UnshelveServer , self ).get_parser (prog_name )
4834+ parser = super ().get_parser (prog_name )
48294835 parser .add_argument (
48304836 'server' ,
48314837 metavar = '<server>' ,
@@ -4836,25 +4842,31 @@ def get_parser(self, prog_name):
48364842 group .add_argument (
48374843 '--availability-zone' ,
48384844 default = None ,
4839- help = _ ('Name of the availability zone in which to unshelve a '
4840- 'SHELVED_OFFLOADED server (supported by '
4841- '--os-compute-api-version 2.77 or above)' ),
4845+ help = _ (
4846+ 'Name of the availability zone in which to unshelve a '
4847+ 'SHELVED_OFFLOADED server '
4848+ '(supported by --os-compute-api-version 2.77 or above)'
4849+ ),
48424850 )
48434851 group .add_argument (
48444852 '--no-availability-zone' ,
48454853 action = 'store_true' ,
48464854 default = False ,
4847- help = _ ('Unpin the availability zone of a SHELVED_OFFLOADED '
4848- 'server. Server will be unshelved on a host without '
4849- 'availability zone constraint (supported by '
4850- '--os-compute-api-version 2.91 or above)' ),
4855+ help = _ (
4856+ 'Unpin the availability zone of a SHELVED_OFFLOADED '
4857+ 'server. Server will be unshelved on a host without '
4858+ 'availability zone constraint '
4859+ '(supported by --os-compute-api-version 2.91 or above)'
4860+ ),
48514861 )
48524862 parser .add_argument (
48534863 '--host' ,
48544864 default = None ,
4855- help = _ ('Name of the destination host in which to unshelve a '
4856- 'SHELVED_OFFLOADED server (supported by '
4857- '--os-compute-api-version 2.91 or above)' ),
4865+ help = _ (
4866+ 'Name of the destination host in which to unshelve a '
4867+ 'SHELVED_OFFLOADED server '
4868+ '(supported by --os-compute-api-version 2.91 or above)'
4869+ ),
48584870 )
48594871 parser .add_argument (
48604872 '--wait' ,
@@ -4871,11 +4883,11 @@ def _show_progress(progress):
48714883 self .app .stdout .write ('\r Progress: %s' % progress )
48724884 self .app .stdout .flush ()
48734885
4874- compute_client = self .app .client_manager .compute
4886+ compute_client = self .app .client_manager .sdk_connection . compute
48754887 kwargs = {}
48764888
48774889 if parsed_args .availability_zone :
4878- if compute_client . api_version < api_versions . APIVersion ( '2.77' ):
4890+ if not sdk_utils . supports_microversion ( compute_client , '2.77' ):
48794891 msg = _ (
48804892 '--os-compute-api-version 2.77 or greater is required '
48814893 'to support the --availability-zone option'
@@ -4885,7 +4897,7 @@ def _show_progress(progress):
48854897 kwargs ['availability_zone' ] = parsed_args .availability_zone
48864898
48874899 if parsed_args .host :
4888- if compute_client . api_version < api_versions . APIVersion ( '2.91' ):
4900+ if not sdk_utils . supports_microversion ( compute_client , '2.91' ):
48894901 msg = _ (
48904902 '--os-compute-api-version 2.91 or greater is required '
48914903 'to support the --host option'
@@ -4895,7 +4907,7 @@ def _show_progress(progress):
48954907 kwargs ['host' ] = parsed_args .host
48964908
48974909 if parsed_args .no_availability_zone :
4898- if compute_client . api_version < api_versions . APIVersion ( '2.91' ):
4910+ if not sdk_utils . supports_microversion ( compute_client , '2.91' ):
48994911 msg = _ (
49004912 '--os-compute-api-version 2.91 or greater is required '
49014913 'to support the --no-availability-zone option'
@@ -4905,25 +4917,27 @@ def _show_progress(progress):
49054917 kwargs ['availability_zone' ] = None
49064918
49074919 for server in parsed_args .server :
4908- server_obj = utils .find_resource (
4909- compute_client .servers ,
4920+ server_obj = compute_client .find_server (
49104921 server ,
4922+ ignore_missing = False ,
49114923 )
49124924
49134925 if server_obj .status .lower () not in (
49144926 'shelved' , 'shelved_offloaded' ,
49154927 ):
49164928 continue
49174929
4918- server_obj . unshelve ( ** kwargs )
4930+ compute_client . unshelve_server ( server_obj . id , ** kwargs )
49194931
49204932 if parsed_args .wait :
49214933 if not utils .wait_for_status (
4922- compute_client .servers .get , server_obj .id ,
4934+ compute_client .get_server ,
4935+ server_obj .id ,
49234936 success_status = ('active' , 'shutoff' ),
49244937 callback = _show_progress ,
49254938 ):
49264939 LOG .error (_ ('Error unshelving server %s' ), server_obj .id )
49274940 self .app .stdout .write (
4928- _ ('Error unshelving server: %s\n ' ) % server_obj .id )
4941+ _ ('Error unshelving server: %s\n ' ) % server_obj .id
4942+ )
49294943 raise SystemExit
0 commit comments