@@ -6969,62 +6969,84 @@ def setUp(self):
69696969 self .methods = {
69706970 'unshelve' : None ,
69716971 }
6972+ self .attrs = {
6973+ 'status' : 'SHELVED' ,
6974+ }
69726975
69736976 def test_unshelve_one_server (self ):
69746977 self .run_method_with_servers ('unshelve' , 1 )
69756978
69766979 def test_unshelve_multi_servers (self ):
69776980 self .run_method_with_servers ('unshelve' , 3 )
69786981
6979- def test_unshelve_server_with_specified_az (self ):
6980- server = compute_fakes .FakeServer .create_one_server ()
6982+ def test_unshelve_with_specified_az (self ):
6983+ self .app .client_manager .compute .api_version = \
6984+ api_versions .APIVersion ('2.77' )
6985+
6986+ server = compute_fakes .FakeServer .create_one_server (
6987+ attrs = self .attrs , methods = self .methods )
6988+ self .servers_mock .get .return_value = server
69816989 arglist = [
6982- server .id ,
69836990 '--availability-zone' , "foo-az" ,
6991+ server .id ,
69846992 ]
69856993 verifylist = [
69866994 ('availability_zone' , "foo-az" ),
69876995 ('server' , [server .id ])
69886996 ]
69896997 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
6990- ex = self .assertRaises (exceptions .CommandError ,
6991- self .cmd .take_action ,
6992- parsed_args )
6993- self .assertIn (
6994- '--os-compute-api-version 2.77 or greater is required' , str (ex ))
6995-
69966998
6997- class TestServerUnshelveV277 (TestServerUnshelve ):
6998-
6999- def setUp (self ):
7000- super (TestServerUnshelveV277 , self ).setUp ()
7001-
7002- self .server = compute_fakes .FakeServer .create_one_server (
7003- methods = self .methods )
7004-
7005- # This is the return value for utils.find_resource()
7006- self .servers_mock .get .return_value = self .server
6999+ self .cmd .take_action (parsed_args )
70077000
7008- # Get the command object to test
7009- self . cmd = server .UnshelveServer ( self . app , None )
7001+ self . servers_mock . get . assert_called_with ( server . id )
7002+ server .unshelve . assert_called_with ( availability_zone = "foo-az" )
70107003
7011- def test_specified_az_to_unshelve_with_v277 (self ):
7012- self .app .client_manager .compute .api_version = api_versions . APIVersion (
7013- '2.77 ' )
7004+ def test_unshelve_with_specified_az_pre_v277 (self ):
7005+ self .app .client_manager .compute .api_version = \
7006+ api_versions . APIVersion ( '2.76 ' )
70147007
7008+ server = compute_fakes .FakeServer .create_one_server (
7009+ attrs = self .attrs , methods = self .methods )
70157010 arglist = [
7011+ server .id ,
70167012 '--availability-zone' , "foo-az" ,
7017- self .server .id ,
70187013 ]
70197014 verifylist = [
70207015 ('availability_zone' , "foo-az" ),
7021- ('server' , [self . server .id ])
7016+ ('server' , [server .id ])
70227017 ]
70237018 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
7019+ ex = self .assertRaises (
7020+ exceptions .CommandError ,
7021+ self .cmd .take_action ,
7022+ parsed_args )
7023+ self .assertIn (
7024+ '--os-compute-api-version 2.77 or greater is required' , str (ex ))
70247025
7025- self .cmd .take_action (parsed_args )
7026- self .servers_mock .get .assert_called_with (self .server .id )
7027- self .server .unshelve .assert_called_with (availability_zone = "foo-az" )
7026+ @mock .patch .object (common_utils , 'wait_for_status' , return_value = True )
7027+ def test_unshelve_with_wait (self , mock_wait_for_status ):
7028+ server = compute_fakes .FakeServer .create_one_server (
7029+ attrs = self .attrs , methods = self .methods )
7030+ self .servers_mock .get .return_value = server
7031+
7032+ arglist = ['--wait' , server .name ]
7033+ verifylist = [
7034+ ('server' , [server .name ]),
7035+ ('wait' , True ),
7036+ ]
7037+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
7038+
7039+ result = self .cmd .take_action (parsed_args )
7040+ self .assertIsNone (result )
7041+
7042+ self .servers_mock .get .assert_called_once_with (server .name )
7043+ server .unshelve .assert_called_once_with ()
7044+ mock_wait_for_status .assert_called_once_with (
7045+ self .servers_mock .get ,
7046+ server .id ,
7047+ callback = mock .ANY ,
7048+ success_status = ('active' , 'shutoff' ),
7049+ )
70287050
70297051
70307052class TestServerGeneral (TestServer ):
0 commit comments