@@ -592,6 +592,64 @@ def test_server_image_create_name(self):
592592 self .assertEqual (self .columns , columns )
593593 self .assertEqual (self .datalist (), data )
594594
595+ @mock .patch .object (common_utils , 'wait_for_status' , return_value = False )
596+ def test_server_create_image_with_wait_fails (self , mock_wait_for_status ):
597+ arglist = [
598+ '--wait' ,
599+ self .server .id ,
600+ ]
601+ verifylist = [
602+ ('wait' , True ),
603+ ('server' , self .server .id ),
604+ ]
605+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
606+
607+ self .assertRaises (SystemExit , self .cmd .take_action , parsed_args )
608+
609+ mock_wait_for_status .assert_called_once_with (
610+ self .images_mock .get ,
611+ self .image .id ,
612+ callback = server ._show_progress
613+ )
614+
615+ # ServerManager.create_image(server, image_name, metadata=)
616+ self .servers_mock .create_image .assert_called_with (
617+ self .servers_mock .get .return_value ,
618+ self .server .name ,
619+ )
620+
621+ @mock .patch .object (common_utils , 'wait_for_status' , return_value = True )
622+ def test_server_create_image_with_wait_ok (self , mock_wait_for_status ):
623+ arglist = [
624+ '--wait' ,
625+ self .server .id ,
626+ ]
627+ verifylist = [
628+ ('wait' , True ),
629+ ('server' , self .server .id ),
630+ ]
631+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
632+
633+ # In base command class ShowOne in cliff, abstract method take_action()
634+ # returns a two-part tuple with a tuple of column names and a tuple of
635+ # data to be shown.
636+ columns , data = self .cmd .take_action (parsed_args )
637+
638+ # ServerManager.create_image(server, image_name, metadata=)
639+ self .servers_mock .create_image .assert_called_with (
640+ self .servers_mock .get .return_value ,
641+ self .server .name ,
642+ )
643+
644+ mock_wait_for_status .assert_called_once_with (
645+ self .images_mock .get ,
646+ self .image .id ,
647+ callback = server ._show_progress
648+ )
649+
650+ self .assertEqual (self .columns , columns )
651+ self .assertEqual (self .datalist (), data )
652+
595653
596654class TestServerList (TestServer ):
597655
@@ -872,6 +930,58 @@ def test_rebuild_with_current_image_and_password(self):
872930 self .cimages_mock .get .assert_called_with (self .image .id )
873931 self .server .rebuild .assert_called_with (self .image , password )
874932
933+ @mock .patch .object (common_utils , 'wait_for_status' , return_value = True )
934+ def test_rebuild_with_wait_ok (self , mock_wait_for_status ):
935+ arglist = [
936+ '--wait' ,
937+ self .server .id ,
938+ ]
939+ verifylist = [
940+ ('wait' , True ),
941+ ('server' , self .server .id ),
942+ ]
943+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
944+
945+ # Get the command object to test.
946+ self .cmd .take_action (parsed_args )
947+
948+ # kwargs = dict(success_status=['active', 'verify_resize'],)
949+
950+ mock_wait_for_status .assert_called_once_with (
951+ self .servers_mock .get ,
952+ self .server .id ,
953+ callback = server ._show_progress ,
954+ # **kwargs
955+ )
956+
957+ self .servers_mock .get .assert_called_with (self .server .id )
958+ self .cimages_mock .get .assert_called_with (self .image .id )
959+ self .server .rebuild .assert_called_with (self .image , None )
960+
961+ @mock .patch .object (common_utils , 'wait_for_status' , return_value = False )
962+ def test_rebuild_with_wait_fails (self , mock_wait_for_status ):
963+ arglist = [
964+ '--wait' ,
965+ self .server .id ,
966+ ]
967+ verifylist = [
968+ ('wait' , True ),
969+ ('server' , self .server .id ),
970+ ]
971+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
972+
973+ self .assertRaises (SystemExit , self .cmd .take_action , parsed_args )
974+
975+ mock_wait_for_status .assert_called_once_with (
976+ self .servers_mock .get ,
977+ self .server .id ,
978+ callback = server ._show_progress
979+ )
980+
981+ self .servers_mock .get .assert_called_with (self .server .id )
982+ self .cimages_mock .get .assert_called_with (self .image .id )
983+ self .server .rebuild .assert_called_with (self .image , None )
984+
875985
876986class TestServerResize (TestServer ):
877987
@@ -982,6 +1092,84 @@ def test_server_resize_revert(self):
9821092 self .servers_mock .revert_resize .assert_called_with (self .server )
9831093 self .assertIsNone (result )
9841094
1095+ @mock .patch .object (common_utils , 'wait_for_status' , return_value = True )
1096+ def test_server_resize_with_wait_ok (self , mock_wait_for_status ):
1097+
1098+ arglist = [
1099+ '--flavor' , self .flavors_get_return_value .id ,
1100+ '--wait' ,
1101+ self .server .id ,
1102+ ]
1103+
1104+ verifylist = [
1105+ ('flavor' , self .flavors_get_return_value .id ),
1106+ ('confirm' , False ),
1107+ ('revert' , False ),
1108+ ('wait' , True ),
1109+ ('server' , self .server .id ),
1110+ ]
1111+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
1112+
1113+ self .cmd .take_action (parsed_args )
1114+
1115+ self .servers_mock .get .assert_called_with (
1116+ self .server .id ,
1117+ )
1118+
1119+ kwargs = dict (success_status = ['active' , 'verify_resize' ],)
1120+
1121+ mock_wait_for_status .assert_called_once_with (
1122+ self .servers_mock .get ,
1123+ self .server .id ,
1124+ callback = server ._show_progress ,
1125+ ** kwargs
1126+ )
1127+
1128+ self .servers_mock .resize .assert_called_with (
1129+ self .server ,
1130+ self .flavors_get_return_value
1131+ )
1132+ self .assertNotCalled (self .servers_mock .confirm_resize )
1133+ self .assertNotCalled (self .servers_mock .revert_resize )
1134+
1135+ @mock .patch .object (common_utils , 'wait_for_status' , return_value = False )
1136+ def test_server_resize_with_wait_fails (self , mock_wait_for_status ):
1137+
1138+ arglist = [
1139+ '--flavor' , self .flavors_get_return_value .id ,
1140+ '--wait' ,
1141+ self .server .id ,
1142+ ]
1143+
1144+ verifylist = [
1145+ ('flavor' , self .flavors_get_return_value .id ),
1146+ ('confirm' , False ),
1147+ ('revert' , False ),
1148+ ('wait' , True ),
1149+ ('server' , self .server .id ),
1150+ ]
1151+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
1152+
1153+ self .assertRaises (SystemExit , self .cmd .take_action , parsed_args )
1154+
1155+ self .servers_mock .get .assert_called_with (
1156+ self .server .id ,
1157+ )
1158+
1159+ kwargs = dict (success_status = ['active' , 'verify_resize' ],)
1160+
1161+ mock_wait_for_status .assert_called_once_with (
1162+ self .servers_mock .get ,
1163+ self .server .id ,
1164+ callback = server ._show_progress ,
1165+ ** kwargs
1166+ )
1167+
1168+ self .servers_mock .resize .assert_called_with (
1169+ self .server ,
1170+ self .flavors_get_return_value
1171+ )
1172+
9851173
9861174class TestServerResume (TestServer ):
9871175
0 commit comments