Add goma log handling to the Sysroot.InstallPackages endpoint.
goma_lib.LogsArchiver.Archive was modified to return a namedtuple
instead of a list of strings.
BUG=chromium:1013499
TEST=run_tests
Change-Id: I7d52ff09be9f27a9db3063d1592d16125d64fe57
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2008388
Reviewed-by: Alex Klein <saklein@chromium.org>
Tested-by: Michael Mortensen <mmortensen@google.com>
Commit-Queue: Michael Mortensen <mmortensen@google.com>
diff --git a/api/controller/sysroot.py b/api/controller/sysroot.py
index 6fe5bee..6d79fae 100644
--- a/api/controller/sysroot.py
+++ b/api/controller/sysroot.py
@@ -15,6 +15,7 @@
from chromite.lib import build_target_util
from chromite.lib import cros_build_lib
from chromite.lib import cros_logging as logging
+from chromite.lib import goma_lib
from chromite.lib import portage_util
from chromite.lib import sysroot_lib
from chromite.service import sysroot
@@ -164,6 +165,21 @@
return controller.RETURN_CODE_UNSUCCESSFUL_RESPONSE_AVAILABLE
+ # Copy goma logs to specified directory if there is a goma_config and
+ # it contains a log_dir to store artifacts.
+ if input_proto.goma_config.log_dir.dir:
+ archiver = goma_lib.LogsArchiver(
+ input_proto.goma_config.goma_dir,
+ dest_dir=input_proto.goma_config.log_dir.dir,
+ stats_file=input_proto.goma_config.stats_file,
+ counterz_file=input_proto.goma_config.counterz_file)
+ archiver_tuple = archiver.Archive()
+ if archiver_tuple.stats_file:
+ output_proto.goma_artifacts.stats_file = archiver_tuple.stats_file
+ if archiver_tuple.counterz_file:
+ output_proto.goma_artifacts.stats_file = archiver_tuple.counterz_file
+ output_proto.goma_artifacts.log_files[:] = archiver_tuple.log_files
+
# Read metric events log and pipe them into output_proto.events.
deserialize_metrics_log(output_proto.events, prefix=build_target.name)