diff --git a/magnum/api/controllers/v1/container.py b/magnum/api/controllers/v1/container.py index 9365b9e45a..642d9b2562 100644 --- a/magnum/api/controllers/v1/container.py +++ b/magnum/api/controllers/v1/container.py @@ -175,9 +175,59 @@ class Container(_Base): desc='Docker Containers') +class StartController(object): + @wsme_pecan.wsexpose(wtypes.text, wtypes.text) + def _default(self, container_id): + return "Start Container %s" % container_id + + +class StopController(object): + @wsme_pecan.wsexpose(wtypes.text, wtypes.text) + def _default(self, container_id, *remainder): + return "Stop Container %s" % container_id + + +class RebootController(object): + @wsme_pecan.wsexpose(wtypes.text, wtypes.text) + def _default(self, container_id, *remainder): + return "Reboot Container %s" % container_id + + +class PauseController(object): + @wsme_pecan.wsexpose(wtypes.text, wtypes.text) + def _default(self, container_id, *remainder): + return "Pause Container %s" % container_id + + +class UnpauseController(object): + @wsme_pecan.wsexpose(wtypes.text, wtypes.text) + def _default(self, container_id, *remainder): + return "Unpause Container %s" % container_id + + +class LogsController(object): + @wsme_pecan.wsexpose(wtypes.text, wtypes.text) + def _default(self, container_id, *remainder): + return "Logs Container %s" % container_id + + +class ExecuteController(object): + @wsme_pecan.wsexpose(wtypes.text, wtypes.text) + def _default(self, container_id, *remainder): + return "Execute Container %s" % container_id + + class ContainerController(rest.RestController): """Manages Containers.""" + start = StartController() + stop = StopController() + reboot = RebootController() + pause = PauseController() + unpause = UnpauseController() + logs = LogsController() + execute = ExecuteController() + @wsme_pecan.wsexpose(Container, wtypes.text) def get_one(self, container_id): """Retrieve details about one container. diff --git a/magnum/tests/test_functional.py b/magnum/tests/test_functional.py index 25e0b11434..686073bda9 100644 --- a/magnum/tests/test_functional.py +++ b/magnum/tests/test_functional.py @@ -80,3 +80,10 @@ class TestContainerController(tests.FunctionalTest): def test_delete(self): response = self.app.delete('/v1/containers/xyz') self.assertEqual(response.status_int, 200) + + def test_container_actions(self): + actions = ['start', 'stop', 'pause', 'unpause', + 'reboot', 'logs', 'execute'] + for action in actions: + response = self.app.get('/v1/containers/xyz/%s' % action) + self.assertEqual(response.status_int, 200) \ No newline at end of file