@@ -595,6 +595,64 @@ def test_server_image_create_name(self):
595595 self .assertEqual (self .columns , columns )
596596 self .assertEqual (self .datalist (), data )
597597
598+ @mock .patch .object (common_utils , 'wait_for_status' , return_value = False )
599+ def test_server_create_image_with_wait_fails (self , mock_wait_for_status ):
600+ arglist = [
601+ '--wait' ,
602+ self .server .id ,
603+ ]
604+ verifylist = [
605+ ('wait' , True ),
606+ ('server' , self .server .id ),
607+ ]
608+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
609+
610+ self .assertRaises (SystemExit , self .cmd .take_action , parsed_args )
611+
612+ mock_wait_for_status .assert_called_once_with (
613+ self .images_mock .get ,
614+ self .image .id ,
615+ callback = server ._show_progress
616+ )
617+
618+ # ServerManager.create_image(server, image_name, metadata=)
619+ self .servers_mock .create_image .assert_called_with (
620+ self .servers_mock .get .return_value ,
621+ self .server .name ,
622+ )
623+
624+ @mock .patch .object (common_utils , 'wait_for_status' , return_value = True )
625+ def test_server_create_image_with_wait_ok (self , mock_wait_for_status ):
626+ arglist = [
627+ '--wait' ,
628+ self .server .id ,
629+ ]
630+ verifylist = [
631+ ('wait' , True ),
632+ ('server' , self .server .id ),
633+ ]
634+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
635+
636+ # In base command class ShowOne in cliff, abstract method take_action()
637+ # returns a two-part tuple with a tuple of column names and a tuple of
638+ # data to be shown.
639+ columns , data = self .cmd .take_action (parsed_args )
640+
641+ # ServerManager.create_image(server, image_name, metadata=)
642+ self .servers_mock .create_image .assert_called_with (
643+ self .servers_mock .get .return_value ,
644+ self .server .name ,
645+ )
646+
647+ mock_wait_for_status .assert_called_once_with (
648+ self .images_mock .get ,
649+ self .image .id ,
650+ callback = server ._show_progress
651+ )
652+
653+ self .assertEqual (self .columns , columns )
654+ self .assertEqual (self .datalist (), data )
655+
598656
599657class TestServerList (TestServer ):
600658
@@ -831,6 +889,58 @@ def test_rebuild_with_current_image_and_password(self):
831889 self .cimages_mock .get .assert_called_with (self .image .id )
832890 self .server .rebuild .assert_called_with (self .image , password )
833891
892+ @mock .patch .object (common_utils , 'wait_for_status' , return_value = True )
893+ def test_rebuild_with_wait_ok (self , mock_wait_for_status ):
894+ arglist = [
895+ '--wait' ,
896+ self .server .id ,
897+ ]
898+ verifylist = [
899+ ('wait' , True ),
900+ ('server' , self .server .id ),
901+ ]
902+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
903+
904+ # Get the command object to test.
905+ self .cmd .take_action (parsed_args )
906+
907+ # kwargs = dict(success_status=['active', 'verify_resize'],)
908+
909+ mock_wait_for_status .assert_called_once_with (
910+ self .servers_mock .get ,
911+ self .server .id ,
912+ callback = server ._show_progress ,
913+ # **kwargs
914+ )
915+
916+ self .servers_mock .get .assert_called_with (self .server .id )
917+ self .cimages_mock .get .assert_called_with (self .image .id )
918+ self .server .rebuild .assert_called_with (self .image , None )
919+
920+ @mock .patch .object (common_utils , 'wait_for_status' , return_value = False )
921+ def test_rebuild_with_wait_fails (self , mock_wait_for_status ):
922+ arglist = [
923+ '--wait' ,
924+ self .server .id ,
925+ ]
926+ verifylist = [
927+ ('wait' , True ),
928+ ('server' , self .server .id ),
929+ ]
930+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
931+
932+ self .assertRaises (SystemExit , self .cmd .take_action , parsed_args )
933+
934+ mock_wait_for_status .assert_called_once_with (
935+ self .servers_mock .get ,
936+ self .server .id ,
937+ callback = server ._show_progress
938+ )
939+
940+ self .servers_mock .get .assert_called_with (self .server .id )
941+ self .cimages_mock .get .assert_called_with (self .image .id )
942+ self .server .rebuild .assert_called_with (self .image , None )
943+
834944
835945class TestServerResize (TestServer ):
836946
@@ -952,6 +1062,84 @@ def test_server_resize_revert(self):
9521062 self .server ,
9531063 )
9541064
1065+ @mock .patch .object (common_utils , 'wait_for_status' , return_value = True )
1066+ def test_server_resize_with_wait_ok (self , mock_wait_for_status ):
1067+
1068+ arglist = [
1069+ '--flavor' , self .flavors_get_return_value .id ,
1070+ '--wait' ,
1071+ self .server .id ,
1072+ ]
1073+
1074+ verifylist = [
1075+ ('flavor' , self .flavors_get_return_value .id ),
1076+ ('confirm' , False ),
1077+ ('revert' , False ),
1078+ ('wait' , True ),
1079+ ('server' , self .server .id ),
1080+ ]
1081+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
1082+
1083+ self .cmd .take_action (parsed_args )
1084+
1085+ self .servers_mock .get .assert_called_with (
1086+ self .server .id ,
1087+ )
1088+
1089+ kwargs = dict (success_status = ['active' , 'verify_resize' ],)
1090+
1091+ mock_wait_for_status .assert_called_once_with (
1092+ self .servers_mock .get ,
1093+ self .server .id ,
1094+ callback = server ._show_progress ,
1095+ ** kwargs
1096+ )
1097+
1098+ self .servers_mock .resize .assert_called_with (
1099+ self .server ,
1100+ self .flavors_get_return_value
1101+ )
1102+ self .assertNotCalled (self .servers_mock .confirm_resize )
1103+ self .assertNotCalled (self .servers_mock .revert_resize )
1104+
1105+ @mock .patch .object (common_utils , 'wait_for_status' , return_value = False )
1106+ def test_server_resize_with_wait_fails (self , mock_wait_for_status ):
1107+
1108+ arglist = [
1109+ '--flavor' , self .flavors_get_return_value .id ,
1110+ '--wait' ,
1111+ self .server .id ,
1112+ ]
1113+
1114+ verifylist = [
1115+ ('flavor' , self .flavors_get_return_value .id ),
1116+ ('confirm' , False ),
1117+ ('revert' , False ),
1118+ ('wait' , True ),
1119+ ('server' , self .server .id ),
1120+ ]
1121+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
1122+
1123+ self .assertRaises (SystemExit , self .cmd .take_action , parsed_args )
1124+
1125+ self .servers_mock .get .assert_called_with (
1126+ self .server .id ,
1127+ )
1128+
1129+ kwargs = dict (success_status = ['active' , 'verify_resize' ],)
1130+
1131+ mock_wait_for_status .assert_called_once_with (
1132+ self .servers_mock .get ,
1133+ self .server .id ,
1134+ callback = server ._show_progress ,
1135+ ** kwargs
1136+ )
1137+
1138+ self .servers_mock .resize .assert_called_with (
1139+ self .server ,
1140+ self .flavors_get_return_value
1141+ )
1142+
9551143
9561144class TestServerResume (TestServer ):
9571145
0 commit comments