diff --git a/rally/cmd/main.py b/rally/cmd/main.py index c4b08af1d1..01ff019a80 100644 --- a/rally/cmd/main.py +++ b/rally/cmd/main.py @@ -22,6 +22,8 @@ from __future__ import print_function import json import sys +import prettytable + from rally.cmd import cliutils from rally import db from rally.openstack.common.gettextutils import _ # noqa @@ -64,7 +66,15 @@ class TaskCommands(object): """Get list of all tasks Returns list of active tasks """ - print(_("Not implemented")) + + headers = ['uuid', 'created_at', 'status', 'failed'] + table = prettytable.PrettyTable(headers) + + for t in db.task_list(): + r = [t['uuid'], str(t['created_at']), t['status'], t['failed']] + table.add_row(r) + + print(table) def main(): diff --git a/requirements.txt b/requirements.txt index 3d0f0d7e13..296627a2d0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,6 +5,7 @@ jsonschema>=2.0.0 netaddr>=0.7.6 paramiko>=1.8.0 pbr>=0.5.21,<1.0 +PrettyTable>=0.6,<0.8 psutil pytest pytest-timeout diff --git a/tests/cmd/test_main.py b/tests/cmd/test_main.py index 5ba29459a7..0cb681623e 100644 --- a/tests/cmd/test_main.py +++ b/tests/cmd/test_main.py @@ -55,4 +55,10 @@ class TaskCommandsTestCase(test.BaseTestCase): mock_db.task_get_by_uuid.assert_called_once_with(test_uuid) def test_list(self): - self.task.list() + db_response = [ + {'uuid': 'a', 'created_at': 'b', 'status': 'c', 'failed': True} + ] + with mock.patch("rally.cmd.main.db") as mock_db: + mock_db.task_list = mock.MagicMock(return_value=db_response) + self.task.list() + mock_db.task_list.assert_called_once_with()