From 5cf9bef1027faaca23b716c9fc354e4b567adca7 Mon Sep 17 00:00:00 2001 From: Jeny Sadadia Date: Thu, 18 Apr 2024 11:38:20 +0530 Subject: [PATCH] src/tarball: update checkout node when update repo fails Tarball updates source code repo and creates tarball. If update repo operation fails even with second attempt, it means it failed to checkout souce code. Hence, update `checkout` node with state `done` state and result `fail`. Also, set appropriate error information to the `data` field. Signed-off-by: Jeny Sadadia --- src/tarball.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/tarball.py b/src/tarball.py index 80210044c..b49eb1769 100755 --- a/src/tarball.py +++ b/src/tarball.py @@ -136,6 +136,22 @@ def _update_node(self, checkout_node, describe, version, tarball_url): err_msg = json.loads(err.response.content).get("detail", []) self.log.error(err_msg) + def _update_failed_checkout_node(self, checkout_node, error_code, error_msg): + node = checkout_node.copy() + node.update({ + 'state': 'done', + 'result': 'fail', + }) + if 'data' not in node: + node['data'] = {} + node['data']['error_code'] = error_code + node['data']['error_msg'] = error_msg + try: + self._api.node.update(node) + except requests.exceptions.HTTPError as err: + err_msg = json.loads(err.response.content).get("detail", []) + self.log.error(err_msg) + def _setup(self, args): return self._api_helper.subscribe_filters({ 'op': 'created', @@ -163,6 +179,10 @@ def _run(self, sub_id): if self._update_repo(build_config): # critical failure, something wrong with git self.log.error("Failed to update repo again, exit") + # Set checkout node result to fail + self._update_failed_checkout_node(checkout_node, + 'git_checkout_failure', + 'Failed to init/update git repo') os._exit(1) describe = kernelci.build.git_describe(