api: artifacts: Switch over to result_path and artifact_path
For everything still using Bundle{Request,Response}. This will make
the transition to running these APIs inside the chroot easier.
NB: this leaves out BundleVmFiles(), because it uses a unique request
type, and it has a simple implementation than handles outside-chroot
operation just fine.
BUG=b:187787264
TEST=./run_tests
TEST=api/compile_build_api_proto
Change-Id: I0315bd2e83663dfbb752c2a501bb29f4e1af0ed4
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/4698295
Commit-Queue: Brian Norris <briannorris@chromium.org>
Tested-by: Brian Norris <briannorris@chromium.org>
Reviewed-by: Alex Klein <saklein@chromium.org>
diff --git a/api/controller/artifacts_unittest.py b/api/controller/artifacts_unittest.py
index 7520acb..9630a6d 100644
--- a/api/controller/artifacts_unittest.py
+++ b/api/controller/artifacts_unittest.py
@@ -42,7 +42,8 @@
if build_target:
request.build_target.name = build_target
if output_dir:
- request.output_dir = output_dir
+ request.result_path.path.path = str(output_dir)
+ request.result_path.path.location = common_pb2.Path.Location.OUTSIDE
if chroot:
request.chroot.path = chroot
@@ -63,7 +64,8 @@
if build_target:
request.sysroot.build_target.name = build_target
if output_dir:
- request.output_dir = output_dir
+ request.result_path.path.path = output_dir
+ request.result_path.path.location = common_pb2.Path.Location.OUTSIDE
if chroot:
request.chroot.path = str(chroot)
if chroot_out:
@@ -137,11 +139,11 @@
patch.assert_not_called()
self.assertEqual(len(self.response.artifacts), 2)
self.assertEqual(
- self.response.artifacts[0].path,
+ self.response.artifacts[0].artifact_path.path,
os.path.join(self.output_dir, "path0.tar.xz"),
)
self.assertEqual(
- self.response.artifacts[1].path,
+ self.response.artifacts[1].artifact_path.path,
os.path.join(self.output_dir, "path1.tar.xz"),
)
@@ -182,7 +184,7 @@
)
self.assertCountEqual(
- expected, [a.path for a in self.response.artifacts]
+ expected, [a.artifact_path.path for a in self.response.artifacts]
)
@@ -206,7 +208,7 @@
patch.assert_not_called()
self.assertEqual(len(self.response.artifacts), 1)
self.assertEqual(
- self.response.artifacts[0].path,
+ self.response.artifacts[0].artifact_path.path,
os.path.join(self.output_dir, "image.zip"),
)
@@ -220,7 +222,10 @@
self.target_request, self.response, self.api_config
)
self.assertEqual(
- [artifact.path for artifact in self.response.artifacts],
+ [
+ artifact.artifact_path.path
+ for artifact in self.response.artifacts
+ ],
[os.path.join(self.output_dir, "image.zip")],
)
@@ -261,7 +266,7 @@
patch.assert_not_called()
self.assertEqual(len(self.response.artifacts), 1)
self.assertEqual(
- self.response.artifacts[0].path,
+ self.response.artifacts[0].artifact_path.path,
os.path.join(self.output_dir, "autotest-a.tar.gz"),
)
@@ -287,7 +292,9 @@
# Verify the output proto is being populated correctly.
self.assertTrue(self.response.artifacts)
- paths = [artifact.path for artifact in self.response.artifacts]
+ paths = [
+ artifact.artifact_path.path for artifact in self.response.artifacts
+ ]
self.assertCountEqual(list(files.values()), paths)
def testInvalidOutputDir(self):
@@ -344,7 +351,7 @@
patch.assert_not_called()
self.assertEqual(len(self.response.artifacts), 1)
self.assertEqual(
- self.response.artifacts[0].path,
+ self.response.artifacts[0].artifact_path.path,
os.path.join(self.output_dir, "tast_bundles.tar.gz"),
)
@@ -372,7 +379,9 @@
# Make sure the artifact got recorded successfully.
self.assertTrue(self.response.artifacts)
- self.assertEqual(expected_archive, self.response.artifacts[0].path)
+ self.assertEqual(
+ expected_archive, self.response.artifacts[0].artifact_path.path
+ )
# Make sure the service got called correctly.
bundle_patch.assert_called_once_with(
self.chroot, self.sysroot, self.output_dir
@@ -399,7 +408,7 @@
patch.assert_not_called()
self.assertEqual(len(self.response.artifacts), 1)
self.assertEqual(
- self.response.artifacts[0].path,
+ self.response.artifacts[0].artifact_path.path,
os.path.join(self.output_dir, "firmware.tar.gz"),
)
@@ -415,7 +424,10 @@
self.sysroot_request, self.response, self.api_config
)
self.assertEqual(
- [artifact.path for artifact in self.response.artifacts],
+ [
+ artifact.artifact_path.path
+ for artifact in self.response.artifacts
+ ],
[os.path.join(self.output_dir, "firmware.tar.gz")],
)
@@ -448,7 +460,7 @@
patch.assert_not_called()
self.assertEqual(len(self.response.artifacts), 1)
self.assertEqual(
- self.response.artifacts[0].path,
+ self.response.artifacts[0].artifact_path.path,
os.path.join(self.output_dir, "fpmcu_unittests.tar.gz"),
)
@@ -465,7 +477,10 @@
self.sysroot_request, self.response, self.api_config
)
self.assertEqual(
- [artifact.path for artifact in self.response.artifacts],
+ [
+ artifact.artifact_path.path
+ for artifact in self.response.artifacts
+ ],
[os.path.join(self.output_dir, "fpmcu_unittests.tar.gz")],
)
@@ -500,7 +515,7 @@
patch.assert_not_called()
self.assertEqual(len(self.response.artifacts), 1)
self.assertEqual(
- self.response.artifacts[0].path,
+ self.response.artifacts[0].artifact_path.path,
os.path.join(self.output_dir, "ebuild-logs.tar.gz"),
)
@@ -515,7 +530,10 @@
self.sysroot_request, self.response, self.api_config
)
self.assertEqual(
- [artifact.path for artifact in self.response.artifacts],
+ [
+ artifact.artifact_path.path
+ for artifact in self.response.artifacts
+ ],
[os.path.join(self.output_dir, "ebuild-logs.tar.gz")],
)
self.assertEqual(
@@ -553,7 +571,7 @@
patch.assert_not_called()
self.assertEqual(len(self.response.artifacts), 1)
self.assertEqual(
- self.response.artifacts[0].path,
+ self.response.artifacts[0].artifact_path.path,
os.path.join(self.output_dir, "config.yaml"),
)
@@ -566,7 +584,10 @@
self.sysroot_request, self.response, self.api_config
)
self.assertEqual(
- [artifact.path for artifact in self.response.artifacts],
+ [
+ artifact.artifact_path.path
+ for artifact in self.response.artifacts
+ ],
[os.path.join(self.output_dir, "config.yaml")],
)
@@ -607,6 +628,11 @@
self.input_proto = artifacts_pb2.BundleRequest()
self.input_proto.build_target.name = self.target
self.input_proto.output_dir = self.archive_root
+ self.input_proto.result_path.path.path = self.archive_root
+ self.input_proto.result_path.path.location = (
+ common_pb2.Path.Location.OUTSIDE
+ )
+
self.output_proto = artifacts_pb2.BundleResponse()
self.PatchObject(constants, "SOURCE_ROOT", new=self.source_root)
@@ -644,15 +670,15 @@
patch.assert_not_called()
self.assertEqual(len(self.output_proto.artifacts), 3)
self.assertEqual(
- self.output_proto.artifacts[0].path,
+ self.output_proto.artifacts[0].artifact_path.path,
os.path.join(self.archive_root, "payload1.bin"),
)
self.assertEqual(
- self.output_proto.artifacts[1].path,
+ self.output_proto.artifacts[1].artifact_path.path,
os.path.join(self.archive_root, "payload1.json"),
)
self.assertEqual(
- self.output_proto.artifacts[2].path,
+ self.output_proto.artifacts[2].artifact_path.path,
os.path.join(self.archive_root, "payload1.log"),
)
@@ -666,7 +692,7 @@
)
actual = [
- os.path.relpath(artifact.path, self.archive_root)
+ os.path.relpath(artifact.artifact_path.path, self.archive_root)
for artifact in self.output_proto.artifacts
]
expected = ["payload1.bin", "payload2.bin"]
@@ -739,7 +765,12 @@
"path": chroot.path if chroot else None,
"out_path": str(chroot.out_path) if chroot else None,
},
- output_dir=output_dir,
+ result_path=common_pb2.ResultPath(
+ path=common_pb2.Path(
+ path=output_dir,
+ location=common_pb2.Path.OUTSIDE,
+ )
+ ),
)
def testValidateOnly(self):
@@ -771,7 +802,7 @@
patch.assert_not_called()
self.assertEqual(len(self.response.artifacts), 1)
self.assertEqual(
- self.response.artifacts[0].path,
+ self.response.artifacts[0].artifact_path.path,
os.path.join(self.output_dir, "simple_chrome.txt"),
)
@@ -862,7 +893,7 @@
self.assertTrue(response.artifacts)
self.assertCountEqual(
- expected_files, [a.path for a in response.artifacts]
+ expected_files, [a.artifact_path.path for a in response.artifacts]
)
@@ -1029,11 +1060,11 @@
patch.assert_not_called()
self.assertEqual(len(self.response.artifacts), 2)
self.assertEqual(
- self.response.artifacts[0].path,
+ self.response.artifacts[0].artifact_path.path,
os.path.join(self.output_dir, "cpe_report.txt"),
)
self.assertEqual(
- self.response.artifacts[1].path,
+ self.response.artifacts[1].artifact_path.path,
os.path.join(self.output_dir, "cpe_warnings.txt"),
)
@@ -1051,7 +1082,10 @@
)
for artifact in self.response.artifacts:
- self.assertIn(artifact.path, [expected.report, expected.warnings])
+ self.assertIn(
+ artifact.artifact_path.path,
+ [expected.report, expected.warnings],
+ )
class BundleGceTarballTest(BundleTestCase):
@@ -1074,7 +1108,7 @@
patch.assert_not_called()
self.assertEqual(len(self.response.artifacts), 1)
self.assertEqual(
- self.response.artifacts[0].path,
+ self.response.artifacts[0].artifact_path.path,
os.path.join(self.output_dir, constants.TEST_IMAGE_GCE_TAR),
)
@@ -1092,7 +1126,10 @@
self.target_request, self.response, self.api_config
)
self.assertEqual(
- [artifact.path for artifact in self.response.artifacts],
+ [
+ artifact.artifact_path.path
+ for artifact in self.response.artifacts
+ ],
[os.path.join(self.output_dir, constants.TEST_IMAGE_GCE_TAR)],
)