api: Output failed package data in SdkService/Update response.
If a host package failed to compile in the SDK update call, then return
the package name and logs so that it can be surfaced by the builders.
BUG=b:271120919
TEST=./run_tests
TEST=led https://chromeos-swarming.appspot.com/task?id=640ec62cfcc82c10
Change-Id: I20825ebd4e2d74fbd08accc5488818fbe6d19e28
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/4772528
Reviewed-by: Alex Klein <saklein@chromium.org>
Reviewed-by: Lee Presland <zland@google.com>
Commit-Queue: Navil Perez <navil@google.com>
Tested-by: Navil Perez <navil@google.com>
diff --git a/api/controller/sdk.py b/api/controller/sdk.py
index 127d7af..8417dfa 100644
--- a/api/controller/sdk.py
+++ b/api/controller/sdk.py
@@ -13,6 +13,7 @@
from chromite.api.controller import controller_util
from chromite.api.gen.chromiumos import common_pb2
from chromite.lib import cros_build_lib
+from chromite.lib import sysroot_lib
from chromite.service import sdk
@@ -167,16 +168,17 @@
toolchain_changed=toolchain_changed,
)
- version = sdk.Update(args)
-
- if version:
- output_proto.version.version = version
- else:
- # This should be very rare, if ever used, but worth noting.
- cros_build_lib.Die(
- "No chroot version could be found. There was likely an"
- "error creating the chroot that was not detected."
+ result = sdk.Update(args)
+ if result.success:
+ output_proto.version.version = result.version
+ elif result.failed_pkgs:
+ sysroot = sysroot_lib.Sysroot("/")
+ controller_util.retrieve_package_log_paths(
+ result.failed_pkgs, output_proto, sysroot
)
+ return controller.RETURN_CODE_UNSUCCESSFUL_RESPONSE_AVAILABLE
+ else:
+ return controller.RETURN_CODE_COMPLETED_UNSUCCESSFULLY
@faux.all_empty