diff --git a/validations_libs/tests/test_validation_logs.py b/validations_libs/tests/test_validation_logs.py index 72a723a6..43aefc31 100644 --- a/validations_libs/tests/test_validation_logs.py +++ b/validations_libs/tests/test_validation_logs.py @@ -172,3 +172,34 @@ class TestValidationLogs(TestCase): 'Unreachable_Hosts': '', 'Duration': '0:00:03.753', 'Validations': 'foo'}]) + + def test_get_results_none(self): + vlogs = ValidationLogs('/tmp/foo') + self.assertRaises(RuntimeError, vlogs.get_results, uuid=None) + + @mock.patch('validations_libs.validation_logs.ValidationLogs.' + 'get_logfile_by_uuid_validation_id') + @mock.patch('json.load', + return_value=fakes.VALIDATIONS_LOGS_CONTENTS_LIST[0]) + @mock.patch('six.moves.builtins.open') + def test_get_results_list(self, mock_open, mock_json, mock_get_validation): + mock_get_validation.return_value = \ + ['/tmp/123_foo_2020-03-30T13:17:22.447857Z.json'] + vlogs = ValidationLogs('/tmp/foo') + content = vlogs.get_results(uuid=['123', '123'], validation_id='foo') + self.assertEquals(content, [{'UUID': '123', + 'Validations': 'foo', + 'Status': 'PASSED', + 'Status_by_Host': 'undercloud,PASSED', + 'Host_Group': 'undercloud', + 'Unreachable_Hosts': '', + 'Duration': '0:00:03.753', + 'Validations': 'foo'}, + {'UUID': '123', + 'Validations': 'foo', + 'Status': 'PASSED', + 'Status_by_Host': 'undercloud,PASSED', + 'Host_Group': 'undercloud', + 'Unreachable_Hosts': '', + 'Duration': '0:00:03.753', + 'Validations': 'foo'}]) diff --git a/validations_libs/validation_actions.py b/validations_libs/validation_actions.py index 6cafa3e0..ff187fa2 100644 --- a/validations_libs/validation_actions.py +++ b/validations_libs/validation_actions.py @@ -125,8 +125,9 @@ class ValidationActions(object): if run_async: return results # Return log results + uuid = [id['UUID'] for id in results] vlog = ValidationLogs() - return vlog.get_results(validation_uuid) + return vlog.get_results(uuid) def group_information(self, groups): """Get Information about Validation Groups""" diff --git a/validations_libs/validation_logs.py b/validations_libs/validation_logs.py index 51541b51..1393ea10 100644 --- a/validations_libs/validation_logs.py +++ b/validations_libs/validation_logs.py @@ -232,13 +232,24 @@ class ValidationLogs(object): Return a list of validation results by uuid Can be filter by validation_id """ - results = (self.get_logfile_by_uuid_validation_id(uuid, - validation_id) - if validation_id else self.get_logfile_by_uuid(uuid)) - data = {} + if isinstance(uuid, list): + results = [] + for id in uuid: + results.extend(self.get_logfile_by_uuid_validation_id( + id, + validation_id) + if validation_id else + self.get_logfile_by_uuid(id)) + elif isinstance(uuid, str): + results = (self.get_logfile_by_uuid_validation_id(uuid, + validation_id) + if validation_id else self.get_logfile_by_uuid(uuid)) + else: + raise RuntimeError("uuid should be either a str or a list") res = [] for result in results: vlog = ValidationLog(logfile=result) + data = {} data['UUID'] = vlog.get_uuid data['Validations'] = vlog.get_validation_id data['Status'] = vlog.get_status