From f60caf8e6634003985f87ad2501f27e674c29a30 Mon Sep 17 00:00:00 2001 From: Jiri Podivin Date: Mon, 15 Feb 2021 10:54:29 +0100 Subject: [PATCH] show command now properly uses list of validations Signed-off-by: Jiri Podivin Change-Id: Iced465a7380acc2bd7065c1fc2dc34e6ddcd9b15 --- .../tests/test_validation_actions.py | 19 ++++++++++++++++++- validations_libs/validation_actions.py | 18 ++++++++++++------ 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/validations_libs/tests/test_validation_actions.py b/validations_libs/tests/test_validation_actions.py index 0952ac70..6f2c5446 100644 --- a/validations_libs/tests/test_validation_actions.py +++ b/validations_libs/tests/test_validation_actions.py @@ -212,7 +212,7 @@ class TestValidationActions(TestCase): @mock.patch('json.load', return_value=fakes.VALIDATIONS_LOGS_CONTENTS_LIST[0]) @mock.patch('six.moves.builtins.open') - def test_show_history(self, mock_open, mock_load, mock_get_log): + def test_show_history_str(self, mock_open, mock_load, mock_get_log): v_actions = ValidationActions() col, values = v_actions.show_history('512e') self.assertEqual(col, ('UUID', 'Validations', @@ -223,6 +223,23 @@ class TestValidationActions(TestCase): '2019-11-25T13:40:14.404623Z', '0:00:03.753')]) + @mock.patch('validations_libs.validation_logs.ValidationLogs.' + 'get_logfile_by_validation', + return_value=['/tmp/123_foo_2020-03-30T13:17:22.447857Z.json']) + @mock.patch('json.load', + return_value=fakes.VALIDATIONS_LOGS_CONTENTS_LIST[0]) + @mock.patch('six.moves.builtins.open') + def test_show_history_list(self, mock_open, mock_load, mock_get_log): + v_actions = ValidationActions() + col, values = v_actions.show_history(['512e']) + self.assertEqual(col, ('UUID', 'Validations', + 'Status', 'Execution at', + 'Duration')) + self.assertEqual(values, [('008886df-d297-1eaa-2a74-000000000008', + '512e', 'PASSED', + '2019-11-25T13:40:14.404623Z', + '0:00:03.753')]) + @mock.patch('validations_libs.validation_logs.ValidationLogs.' 'get_all_logfiles', return_value=['/tmp/123_foo_2020-03-30T13:17:22.447857Z.json']) diff --git a/validations_libs/validation_actions.py b/validations_libs/validation_actions.py index 2b31a8c8..71abcbbf 100644 --- a/validations_libs/validation_actions.py +++ b/validations_libs/validation_actions.py @@ -408,12 +408,12 @@ class ValidationActions(object): default_flow_style=False, indent=2) - def show_history(self, validation_id=None, extension='json', + def show_history(self, validation_ids=None, extension='json', log_path=constants.VALIDATIONS_LOG_BASEDIR): """Return validation executions history - :param validation_id: The validation id - :type validation_id: ``string`` + :param validation_ids: The validation ids + :type validation_ids: a list of strings :param extension: The log file extension (Defaults to ``json``) :type extension: ``string`` :param log_path: The absolute path of the validations logs directory @@ -449,7 +449,7 @@ class ValidationActions(object): '2020-11-13T11:47:50.279662Z', '0:00:02.237')]) >>> actions = ValidationActions(constants.ANSIBLE_VALIDATION_DIR) - >>> print(actions.show_history(validation_id='foo')) + >>> print(actions.show_history(validation_ids=['foo'])) (('UUID', 'Validations', 'Status', 'Execution at', 'Duration'), [('5afb1597-e2a1-4635-b2df-7afe21d00de6', 'foo', @@ -463,8 +463,14 @@ class ValidationActions(object): '0:00:02.237')]) """ vlogs = ValidationLogs(log_path) - logs = (vlogs.get_logfile_by_validation(validation_id) - if validation_id else vlogs.get_all_logfiles(extension)) + if validation_ids: + if not isinstance(validation_ids, list): + validation_ids = [validation_ids] + logs = [] + for validation_id in validation_ids: + logs.extend(vlogs.get_logfile_by_validation(validation_id)) + else: + logs = vlogs.get_all_logfiles(extension) values = [] column_name = ('UUID', 'Validations',