diff --git a/moganclient/osc/v1/server.py b/moganclient/osc/v1/server.py index 5e70629..d2317c7 100644 --- a/moganclient/osc/v1/server.py +++ b/moganclient/osc/v1/server.py @@ -374,3 +374,14 @@ class StartServer(ServersActionBase): def take_action(self, parsed_args): self._action_multiple_items(parsed_args, 'start', 'set_power_state', power_state='on') + + +class StopServer(ServersActionBase): + """Stop baremetal server(s).""" + + def get_parser(self, prog_name): + return self._get_parser_with_action(prog_name, 'stop') + + def take_action(self, parsed_args): + self._action_multiple_items(parsed_args, 'stop', 'set_power_state', + power_state='off') diff --git a/moganclient/tests/unit/osc/v1/test_server.py b/moganclient/tests/unit/osc/v1/test_server.py index 80af874..6ea0291 100644 --- a/moganclient/tests/unit/osc/v1/test_server.py +++ b/moganclient/tests/unit/osc/v1/test_server.py @@ -505,3 +505,24 @@ class TestServerStart(TestServerPowerActionBase): mock_update_all, mock_find): self._test_server_delete_more_than_one_partly_failed( mock_update_all, mock_find) + + +@mock.patch.object(utils, 'find_resource') +@mock.patch.object(server_mgr.ServerManager, '_update_all') +class TestServerStop(TestServerPowerActionBase): + def setUp(self): + super(TestServerStop, self).setUp() + self.cmd = server.StopServer(self.app, None) + self.action = 'off' + self.action_name = 'stop' + + def test_server_stop_one(self, mock_update_all, mock_find): + self._test_server_power_action_one(mock_update_all, mock_find) + + def test_server_stop_multiple(self, mock_update_all, mock_find): + self._test_server_power_action_multiple(mock_update_all, mock_find) + + def test_server_stop_multiple_partly_failed(self, + mock_update_all, mock_find): + self._test_server_delete_more_than_one_partly_failed( + mock_update_all, mock_find) diff --git a/setup.cfg b/setup.cfg index d597815..a6aec52 100644 --- a/setup.cfg +++ b/setup.cfg @@ -42,6 +42,7 @@ openstack.baremetal_compute.v1 = baremetal_server_list = moganclient.osc.v1.server:ListServer baremetal_server_show = moganclient.osc.v1.server:ShowServer baremetal_server_start = moganclient.osc.v1.server:StartServer + baremetal_server_stop = moganclient.osc.v1.server:StopServer baremetal_server_update = moganclient.osc.v1.server:UpdateServer baremetal_availability_zone_list = moganclient.osc.v1.availability_zone:ListAvailabilityZone