1313# under the License.
1414#
1515
16+ import mock
17+
1618from osc_lib import exceptions
1719
1820from openstackclient .compute .v2 import service
@@ -225,8 +227,12 @@ def test_service_set_only_with_disable_reason(self):
225227 ('service' , self .service .binary ),
226228 ]
227229 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
228- self .assertRaises (exceptions .CommandError , self .cmd .take_action ,
229- parsed_args )
230+ try :
231+ self .cmd .take_action (parsed_args )
232+ self .fail ("CommandError should be raised." )
233+ except exceptions .CommandError as e :
234+ self .assertEqual ("Cannot specify option --disable-reason without "
235+ "--disable specified." , str (e ))
230236
231237 def test_service_set_enable_with_disable_reason (self ):
232238 reason = 'earthquake'
@@ -243,5 +249,93 @@ def test_service_set_enable_with_disable_reason(self):
243249 ('service' , self .service .binary ),
244250 ]
245251 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
246- self .assertRaises (exceptions .CommandError , self .cmd .take_action ,
247- parsed_args )
252+ try :
253+ self .cmd .take_action (parsed_args )
254+ self .fail ("CommandError should be raised." )
255+ except exceptions .CommandError as e :
256+ self .assertEqual ("Cannot specify option --disable-reason without "
257+ "--disable specified." , str (e ))
258+
259+ def test_service_set_state_up (self ):
260+ arglist = [
261+ '--up' ,
262+ self .service .host ,
263+ self .service .binary ,
264+ ]
265+ verifylist = [
266+ ('up' , True ),
267+ ('host' , self .service .host ),
268+ ('service' , self .service .binary ),
269+ ]
270+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
271+ result = self .cmd .take_action (parsed_args )
272+ self .service_mock .force_down .assert_called_once_with (
273+ self .service .host , self .service .binary , force_down = False )
274+ self .assertNotCalled (self .service_mock .enable )
275+ self .assertNotCalled (self .service_mock .disable )
276+ self .assertIsNone (result )
277+
278+ def test_service_set_state_down (self ):
279+ arglist = [
280+ '--down' ,
281+ self .service .host ,
282+ self .service .binary ,
283+ ]
284+ verifylist = [
285+ ('down' , True ),
286+ ('host' , self .service .host ),
287+ ('service' , self .service .binary ),
288+ ]
289+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
290+ result = self .cmd .take_action (parsed_args )
291+ self .service_mock .force_down .assert_called_once_with (
292+ self .service .host , self .service .binary , force_down = True )
293+ self .assertNotCalled (self .service_mock .enable )
294+ self .assertNotCalled (self .service_mock .disable )
295+ self .assertIsNone (result )
296+
297+ def test_service_set_enable_and_state_down (self ):
298+ arglist = [
299+ '--enable' ,
300+ '--down' ,
301+ self .service .host ,
302+ self .service .binary ,
303+ ]
304+ verifylist = [
305+ ('enable' , True ),
306+ ('down' , True ),
307+ ('host' , self .service .host ),
308+ ('service' , self .service .binary ),
309+ ]
310+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
311+ result = self .cmd .take_action (parsed_args )
312+ self .service_mock .enable .assert_called_once_with (
313+ self .service .host , self .service .binary )
314+ self .service_mock .force_down .assert_called_once_with (
315+ self .service .host , self .service .binary , force_down = True )
316+ self .assertIsNone (result )
317+
318+ def test_service_set_enable_and_state_down_with_exception (self ):
319+ arglist = [
320+ '--enable' ,
321+ '--down' ,
322+ self .service .host ,
323+ self .service .binary ,
324+ ]
325+ verifylist = [
326+ ('enable' , True ),
327+ ('down' , True ),
328+ ('host' , self .service .host ),
329+ ('service' , self .service .binary ),
330+ ]
331+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
332+
333+ with mock .patch .object (self .cmd .log , 'error' ) as mock_log :
334+ with mock .patch .object (self .service_mock , 'enable' ,
335+ side_effect = Exception ()):
336+ self .assertRaises (exceptions .CommandError ,
337+ self .cmd .take_action , parsed_args )
338+ mock_log .assert_called_once_with (
339+ "Failed to set service status to %s" , "enabled" )
340+ self .service_mock .force_down .assert_called_once_with (
341+ self .service .host , self .service .binary , force_down = True )
0 commit comments