@@ -401,6 +401,20 @@ def _reboot_server(self, server, hard=False, expected_state='ACTIVE'):
401
401
fake_notifier .wait_for_versioned_notifications ('instance.reboot.end' )
402
402
return self ._wait_for_state_change (server , expected_state )
403
403
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
+
404
418
def _resize_server (self , server , flavor_id ):
405
419
self .api .post_server_action (
406
420
server ['id' ], {'resize' : {'flavorRef' : flavor_id }})
@@ -429,14 +443,18 @@ def _revert_resize(self, server):
429
443
'instance.resize_revert.end' )
430
444
return server
431
445
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
+ ):
434
450
self .api .post_server_action (
435
451
server ['id' ],
436
452
{'os-migrateLive' : {'host' : None , 'block_migration' : 'auto' }})
437
453
self ._wait_for_state_change (server , server_expected_state )
438
454
self ._wait_for_migration_status (server , [migration_expected_state ])
439
455
456
+ _live_migrate_server = _live_migrate
457
+
440
458
def _suspend_server (self , server , expected_state = 'SUSPENDED' ):
441
459
"""Suspend a server."""
442
460
self .api .post_server_action (server ['id' ], {'suspend' : {}})
@@ -449,6 +467,16 @@ def _resume_server(self, server, expected_state='ACTIVE'):
449
467
fake_notifier .wait_for_versioned_notifications ('instance.resume.end' )
450
468
return self ._wait_for_state_change (server , expected_state )
451
469
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
+
452
480
453
481
class PlacementHelperMixin :
454
482
"""A helper mixin for interacting with placement."""
0 commit comments