@@ -6434,16 +6434,126 @@ def setUp(self):
64346434 # Get the command object to test
64356435 self .cmd = server .ShelveServer (self .app , None )
64366436
6437- # Set shelve method to be tested.
6438- self .methods = {
6437+ def test_shelve (self ):
6438+ server_info = {'status' : 'ACTIVE' }
6439+ server_methods = {
64396440 'shelve' : None ,
6441+ 'shelve_offload' : None ,
64406442 }
64416443
6442- def test_shelve_one_server (self ):
6443- self .run_method_with_servers ('shelve' , 1 )
6444+ server = compute_fakes .FakeServer .create_one_server (
6445+ attrs = server_info , methods = server_methods )
6446+ self .servers_mock .get .return_value = server
64446447
6445- def test_shelve_multi_servers (self ):
6446- self .run_method_with_servers ('shelve' , 3 )
6448+ arglist = [server .name ]
6449+ verifylist = [
6450+ ('servers' , [server .name ]),
6451+ ('wait' , False ),
6452+ ('offload' , False ),
6453+ ]
6454+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
6455+
6456+ result = self .cmd .take_action (parsed_args )
6457+ self .assertIsNone (result )
6458+
6459+ self .servers_mock .get .assert_called_once_with (server .name )
6460+ server .shelve .assert_called_once_with ()
6461+ server .shelve_offload .assert_not_called ()
6462+
6463+ def test_shelve_already_shelved (self ):
6464+ server_info = {'status' : 'SHELVED' }
6465+ server_methods = {
6466+ 'shelve' : None ,
6467+ 'shelve_offload' : None ,
6468+ }
6469+
6470+ server = compute_fakes .FakeServer .create_one_server (
6471+ attrs = server_info , methods = server_methods )
6472+ self .servers_mock .get .return_value = server
6473+
6474+ arglist = [server .name ]
6475+ verifylist = [
6476+ ('servers' , [server .name ]),
6477+ ('wait' , False ),
6478+ ('offload' , False ),
6479+ ]
6480+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
6481+
6482+ result = self .cmd .take_action (parsed_args )
6483+ self .assertIsNone (result )
6484+
6485+ self .servers_mock .get .assert_called_once_with (server .name )
6486+ server .shelve .assert_not_called ()
6487+ server .shelve_offload .assert_not_called ()
6488+
6489+ @mock .patch .object (common_utils , 'wait_for_status' , return_value = True )
6490+ def test_shelve_with_wait (self , mock_wait_for_status ):
6491+ server_info = {'status' : 'ACTIVE' }
6492+ server_methods = {
6493+ 'shelve' : None ,
6494+ 'shelve_offload' : None ,
6495+ }
6496+
6497+ server = compute_fakes .FakeServer .create_one_server (
6498+ attrs = server_info , methods = server_methods )
6499+ self .servers_mock .get .return_value = server
6500+
6501+ arglist = ['--wait' , server .name ]
6502+ verifylist = [
6503+ ('servers' , [server .name ]),
6504+ ('wait' , True ),
6505+ ('offload' , False ),
6506+ ]
6507+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
6508+
6509+ result = self .cmd .take_action (parsed_args )
6510+ self .assertIsNone (result )
6511+
6512+ self .servers_mock .get .assert_called_once_with (server .name )
6513+ server .shelve .assert_called_once_with ()
6514+ server .shelve_offload .assert_not_called ()
6515+ mock_wait_for_status .assert_called_once_with (
6516+ self .servers_mock .get ,
6517+ server .id ,
6518+ callback = mock .ANY ,
6519+ success_status = ('shelved' , 'shelved_offloaded' ),
6520+ )
6521+
6522+ @mock .patch .object (common_utils , 'wait_for_status' , return_value = True )
6523+ def test_shelve_offload (self , mock_wait_for_status ):
6524+ server_info = {'status' : 'ACTIVE' }
6525+ server_methods = {
6526+ 'shelve' : None ,
6527+ 'shelve_offload' : None ,
6528+ }
6529+
6530+ server = compute_fakes .FakeServer .create_one_server (
6531+ attrs = server_info , methods = server_methods )
6532+ self .servers_mock .get .return_value = server
6533+
6534+ arglist = ['--offload' , server .name ]
6535+ verifylist = [
6536+ ('servers' , [server .name ]),
6537+ ('wait' , False ),
6538+ ('offload' , True ),
6539+ ]
6540+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
6541+
6542+ result = self .cmd .take_action (parsed_args )
6543+ self .assertIsNone (result )
6544+
6545+ self .servers_mock .get .assert_has_calls ([
6546+ mock .call (server .name ),
6547+ mock .call (server .name ),
6548+ ])
6549+ server .shelve .assert_called_once_with ()
6550+ server .shelve_offload .assert_called_once_with ()
6551+ mock_wait_for_status .assert_called_once_with (
6552+ self .servers_mock .get ,
6553+ server .id ,
6554+ callback = mock .ANY ,
6555+ success_status = ('shelved' , 'shelved_offloaded' ),
6556+ )
64476557
64486558
64496559class TestServerShow (TestServer ):
0 commit comments