@@ -401,6 +401,20 @@ def _reboot_server(self, server, hard=False, expected_state='ACTIVE'):
401401 fake_notifier .wait_for_versioned_notifications ('instance.reboot.end' )
402402 return self ._wait_for_state_change (server , expected_state )
403403
404+ def _rebuild_server (self , server , image_uuid , expected_state = 'ACTIVE' ):
405+ """Rebuild a server."""
406+ self .api .post_server_action (
407+ server ['id' ], {'rebuild' : {'imageRef' : image_uuid }},
408+ )
409+ fake_notifier .wait_for_versioned_notifications ('instance.rebuild.end' )
410+ return self ._wait_for_state_change (server , expected_state )
411+
412+ def _migrate_server (self , server , host = None ):
413+ """Cold migrate a server."""
414+ body = {'host' : host } if host else None
415+ self .api .post_server_action (server ['id' ], {'migrate' : body })
416+ return self ._wait_for_state_change (server , 'VERIFY_RESIZE' )
417+
404418 def _resize_server (self , server , flavor_id ):
405419 self .api .post_server_action (
406420 server ['id' ], {'resize' : {'flavorRef' : flavor_id }})
@@ -429,14 +443,18 @@ def _revert_resize(self, server):
429443 'instance.resize_revert.end' )
430444 return server
431445
432- def _live_migrate (self , server , migration_expected_state ,
433- server_expected_state = 'ACTIVE' ):
446+ def _live_migrate (
447+ self , server , migration_expected_state = 'completed' ,
448+ server_expected_state = 'ACTIVE' ,
449+ ):
434450 self .api .post_server_action (
435451 server ['id' ],
436452 {'os-migrateLive' : {'host' : None , 'block_migration' : 'auto' }})
437453 self ._wait_for_state_change (server , server_expected_state )
438454 self ._wait_for_migration_status (server , [migration_expected_state ])
439455
456+ _live_migrate_server = _live_migrate
457+
440458 def _suspend_server (self , server , expected_state = 'SUSPENDED' ):
441459 """Suspend a server."""
442460 self .api .post_server_action (server ['id' ], {'suspend' : {}})
@@ -449,6 +467,16 @@ def _resume_server(self, server, expected_state='ACTIVE'):
449467 fake_notifier .wait_for_versioned_notifications ('instance.resume.end' )
450468 return self ._wait_for_state_change (server , expected_state )
451469
470+ def _shelve_server (self , server , expected_state = 'SHELVED_OFFLOADED' ):
471+ """Shelve a server."""
472+ self .api .post_server_action (server ['id' ], {'shelve' : {}})
473+ return self ._wait_for_state_change (server , expected_state )
474+
475+ def _unshelve_server (self , server , expected_state = 'ACTIVE' ):
476+ """Unshelve a server."""
477+ self .api .post_server_action (server ['id' ], {'unshelve' : {}})
478+ return self ._wait_for_state_change (server , expected_state )
479+
452480
453481class PlacementHelperMixin :
454482 """A helper mixin for interacting with placement."""
0 commit comments