@@ -2170,6 +2170,91 @@ def test_server_remove_fixed_ip(self):
21702170 self .assertIsNone (result )
21712171
21722172
2173+ class TestServerRescue (TestServer ):
2174+
2175+ def setUp (self ):
2176+ super (TestServerRescue , self ).setUp ()
2177+
2178+ # Return value for utils.find_resource for image
2179+ self .image = image_fakes .FakeImage .create_one_image ()
2180+ self .images_mock .get .return_value = self .image
2181+
2182+ new_server = compute_fakes .FakeServer .create_one_server ()
2183+ attrs = {
2184+ 'id' : new_server .id ,
2185+ 'image' : {
2186+ 'id' : self .image .id ,
2187+ },
2188+ 'networks' : {},
2189+ 'adminPass' : 'passw0rd' ,
2190+ }
2191+ methods = {
2192+ 'rescue' : new_server ,
2193+ }
2194+ self .server = compute_fakes .FakeServer .create_one_server (
2195+ attrs = attrs ,
2196+ methods = methods ,
2197+ )
2198+
2199+ # Return value for utils.find_resource for server
2200+ self .servers_mock .get .return_value = self .server
2201+
2202+ self .cmd = server .RescueServer (self .app , None )
2203+
2204+ def test_rescue_with_current_image (self ):
2205+ arglist = [
2206+ self .server .id ,
2207+ ]
2208+ verifylist = [
2209+ ('server' , self .server .id ),
2210+ ]
2211+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
2212+
2213+ # Get the command object to test
2214+ self .cmd .take_action (parsed_args )
2215+
2216+ self .servers_mock .get .assert_called_with (self .server .id )
2217+ self .server .rescue .assert_called_with (image = None , password = None )
2218+
2219+ def test_rescue_with_new_image (self ):
2220+ new_image = image_fakes .FakeImage .create_one_image ()
2221+ self .images_mock .get .return_value = new_image
2222+ arglist = [
2223+ '--image' , new_image .id ,
2224+ self .server .id ,
2225+ ]
2226+ verifylist = [
2227+ ('image' , new_image .id ),
2228+ ('server' , self .server .id ),
2229+ ]
2230+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
2231+
2232+ # Get the command object to test
2233+ self .cmd .take_action (parsed_args )
2234+
2235+ self .servers_mock .get .assert_called_with (self .server .id )
2236+ self .images_mock .get .assert_called_with (new_image .id )
2237+ self .server .rescue .assert_called_with (image = new_image , password = None )
2238+
2239+ def test_rescue_with_current_image_and_password (self ):
2240+ password = 'password-xxx'
2241+ arglist = [
2242+ '--password' , password ,
2243+ self .server .id ,
2244+ ]
2245+ verifylist = [
2246+ ('password' , password ),
2247+ ('server' , self .server .id ),
2248+ ]
2249+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
2250+
2251+ # Get the command object to test
2252+ self .cmd .take_action (parsed_args )
2253+
2254+ self .servers_mock .get .assert_called_with (self .server .id )
2255+ self .server .rescue .assert_called_with (image = None , password = password )
2256+
2257+
21732258class TestServerRemoveFloatingIP (TestServer ):
21742259
21752260 def setUp (self ):
0 commit comments