diff --git a/validations_libs/tests/test_validation_actions.py b/validations_libs/tests/test_validation_actions.py index 8fbb9215..889d0192 100644 --- a/validations_libs/tests/test_validation_actions.py +++ b/validations_libs/tests/test_validation_actions.py @@ -317,7 +317,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', @@ -328,6 +328,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 e1183543..e78acffa 100644 --- a/validations_libs/validation_actions.py +++ b/validations_libs/validation_actions.py @@ -498,12 +498,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 @@ -539,7 +539,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', @@ -553,8 +553,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',