build api metrics: ingest metrics from build_image
Set up required environment variables and deserialize metrics events log
into output proto for downstream ingestion by Recipes layer.
BUG=chromium:1000449
TEST=./run_tests
Change-Id: Id5e73f88bc00ff6b5ae28297fa20dec67b0ed816
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1853685
Tested-by: Will Bradley <wbbradley@chromium.org>
Reviewed-by: Alex Klein <saklein@chromium.org>
diff --git a/api/controller/image.py b/api/controller/image.py
index 6a2dcf0..6296599 100644
--- a/api/controller/image.py
+++ b/api/controller/image.py
@@ -16,10 +16,12 @@
from chromite.api import faux
from chromite.api import validate
from chromite.api.gen.chromiumos import common_pb2
+from chromite.api.metrics import deserialize_metrics_log
from chromite.lib import cros_build_lib
from chromite.lib import constants
from chromite.lib import image_lib
from chromite.service import image
+from chromite.utils import metrics
# The image.proto ImageType enum ids.
_BASE_ID = common_pb2.BASE
@@ -56,6 +58,7 @@
@faux.all_empty
@validate.require('build_target.name')
@validate.validation_complete
+@metrics.collect_metrics
def Create(input_proto, output_proto, _config):
"""Build an image.
@@ -111,6 +114,9 @@
new_image.type = vm_type
new_image.build_target.name = board
+ # Read metric events log and pipe them into output_proto.events.
+ deserialize_metrics_log(output_proto.events, prefix=board)
+
def _ParseImagesToCreate(to_build):
"""Helper function to parse the image types to build.