api: artifacts: Move BundleTestUpdatePayloads into chroot
api/gen changes to pull in:
artifacts: Move BundleTestUpdatePayloads into chroot
We want to run this endpoint inside the chroot, because it forks out to
many programs that need to enter the chroot, and that's a bit unwieldy
to do properly (i.e., plumb all the right chroot arguments) in some
cases.
The router and field_handler layers do most of the artifact (ResultPath
and Path) translation and copying for us, so we only have to do a few
things to place artifacts into the in-chroot tmp directory, instead of
directly into the |result_path|.
I don't convert all the other "legacy" bundle endpoints here, since
AFAICT, they handle chroot entry properly today.
BUG=b:187787264
TEST=./run_tests
TEST=manual build_api execution
Cq-Depend: chromium:4703006
Change-Id: I60d106bbce1e324850aec4d4fc69fdc054b5c3e2
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/4701636
Reviewed-by: Alex Klein <saklein@chromium.org>
Tested-by: Brian Norris <briannorris@chromium.org>
Commit-Queue: Brian Norris <briannorris@chromium.org>
diff --git a/api/controller/artifacts_unittest.py b/api/controller/artifacts_unittest.py
index 9630a6d..57e72df 100644
--- a/api/controller/artifacts_unittest.py
+++ b/api/controller/artifacts_unittest.py
@@ -692,15 +692,19 @@
)
actual = [
- os.path.relpath(artifact.artifact_path.path, self.archive_root)
+ os.path.basename(artifact.artifact_path.path)
for artifact in self.output_proto.artifacts
]
expected = ["payload1.bin", "payload2.bin"]
self.assertCountEqual(actual, expected)
actual = [
- os.path.relpath(path, self.archive_root)
- for path in osutils.DirectoryIterator(self.archive_root)
+ os.path.basename(path)
+ for path in osutils.DirectoryIterator(
+ os.path.dirname(
+ self.output_proto.artifacts[0].artifact_path.path
+ )
+ )
]
self.assertCountEqual(actual, expected)