@@ -4416,6 +4416,7 @@ def _show_progress(progress):
44164416 self .app .stdout .flush ()
44174417
44184418 compute_client = self .app .client_manager .sdk_connection .compute
4419+ server_ids = []
44194420
44204421 for server in parsed_args .servers :
44214422 server_obj = compute_client .find_server (
@@ -4425,61 +4426,60 @@ def _show_progress(progress):
44254426 if server_obj .status .lower () in ('shelved' , 'shelved_offloaded' ):
44264427 continue
44274428
4429+ server_ids .append (server_obj .id )
4430+
44284431 compute_client .shelve_server (server_obj .id )
44294432
44304433 # if we don't have to wait, either because it was requested explicitly
44314434 # or is required implicitly, then our job is done
44324435 if not parsed_args .wait and not parsed_args .offload :
44334436 return
44344437
4435- for server in parsed_args . servers :
4438+ for server_id in server_ids :
44364439 # We use osc-lib's wait_for_status since that allows for a callback
44374440 # TODO(stephenfin): We should wait for these in parallel using e.g.
44384441 # https://review.opendev.org/c/openstack/osc-lib/+/762503/
44394442 if not utils .wait_for_status (
44404443 compute_client .get_server ,
4441- server_obj . id ,
4444+ server_id ,
44424445 success_status = ('shelved' , 'shelved_offloaded' ),
44434446 callback = _show_progress ,
44444447 ):
4445- LOG .error (_ ('Error shelving server: %s' ), server_obj . id )
4448+ LOG .error (_ ('Error shelving server: %s' ), server_id )
44464449 self .app .stdout .write (
4447- _ ('Error shelving server: %s\n ' ) % server_obj . id
4450+ _ ('Error shelving server: %s\n ' ) % server_id
44484451 )
44494452 raise SystemExit
44504453
44514454 if not parsed_args .offload :
44524455 return
44534456
4454- for server in parsed_args .servers :
4455- server_obj = compute_client .find_server (
4456- server ,
4457- ignore_missing = False ,
4458- )
4457+ for server_id in server_ids :
4458+ server_obj = compute_client .get_server (server_id )
44594459 if server_obj .status .lower () == 'shelved_offloaded' :
44604460 continue
44614461
4462- compute_client .shelve_offload_server (server_obj . id )
4462+ compute_client .shelve_offload_server (server_id )
44634463
44644464 if not parsed_args .wait :
44654465 return
44664466
4467- for server in parsed_args . servers :
4467+ for server_id in server_ids :
44684468 # We use osc-lib's wait_for_status since that allows for a callback
44694469 # TODO(stephenfin): We should wait for these in parallel using e.g.
44704470 # https://review.opendev.org/c/openstack/osc-lib/+/762503/
44714471 if not utils .wait_for_status (
44724472 compute_client .get_server ,
4473- server_obj . id ,
4473+ server_id ,
44744474 success_status = ('shelved_offloaded' ,),
44754475 callback = _show_progress ,
44764476 ):
44774477 LOG .error (
44784478 _ ('Error offloading shelved server %s' ),
4479- server_obj . id ,
4479+ server_id ,
44804480 )
44814481 self .app .stdout .write (
4482- _ ('Error offloading shelved server: %s\n ' ) % server_obj . id
4482+ _ ('Error offloading shelved server: %s\n ' ) % server_id
44834483 )
44844484 raise SystemExit
44854485
0 commit comments