From 6510f6a7770e359fb32179930e60773d3e2325a9 Mon Sep 17 00:00:00 2001 From: Denys Fedoryshchenko Date: Fri, 9 Feb 2024 10:17:30 +0200 Subject: [PATCH] lava_callback.py: Handle failed jobs properly As mentioned in https://github.com/kernelci/kernelci-api/issues/474, even if job failed, node still registered as pass, and trying to upload non-existing log file. Fix that, if job is not completed, set node status to incomplete and do not upload log file. Fixes: https://github.com/kernelci/kernelci-api/issues/474 Depends on: https://github.com/kernelci/kernelci-core/pull/2363 Signed-off-by: Denys Fedoryshchenko --- src/lava_callback.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/lava_callback.py b/src/lava_callback.py index 640ff08b0..a2f8b6c8e 100755 --- a/src/lava_callback.py +++ b/src/lava_callback.py @@ -71,12 +71,21 @@ def async_job_submit(api_helper, node_id, job_callback): # Or at least first record job_id in node metadata log_parser = job_callback.get_log_parser() - storage_config_name = job_callback.get_meta('storage_config_name') - storage = _get_storage(storage_config_name) - log_txt_url = _upload_log(log_parser, job_node, storage) - job_node['artifacts']['lava_log'] = log_txt_url - hierarchy = job_callback.get_hierarchy(results, job_node) - api_helper.submit_results(hierarchy, job_node) + job_result = log_parser.get_job_result() + if job_result and job_result == 'pass': + storage_config_name = job_callback.get_meta('storage_config_name') + storage = _get_storage(storage_config_name) + log_txt_url = _upload_log(log_parser, job_node, storage) + job_node['artifacts']['lava_log'] = log_txt_url + hierarchy = job_callback.get_hierarchy(results, job_node) + api_helper.submit_results(hierarchy, job_node) + else: + # As in https://github.com/kernelci/kernelci-api/issues/474 + # failed LAVA job should not upload empty log file and set result + # as 'pass' + job_node['result'] = job_result + job_node['state'] = 'done' + api_helper.api.node.update(job_node) @app.post('/node/')