Build API: Add validation decorators.
Simplify the easy proto validation tasks by providing decorators
that can handle the simple validation cases.
BUG=None
TEST=run_tests
Change-Id: Ib799d43c7d0dca5312a58771ff67b610e9ff4f2c
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1669636
Reviewed-by: Alex Klein <saklein@chromium.org>
Tested-by: Alex Klein <saklein@chromium.org>
Commit-Queue: Alex Klein <saklein@chromium.org>
Auto-Submit: Alex Klein <saklein@chromium.org>
diff --git a/api/controller/artifacts.py b/api/controller/artifacts.py
index 2181173..ddee4f6 100644
--- a/api/controller/artifacts.py
+++ b/api/controller/artifacts.py
@@ -9,6 +9,7 @@
import os
+from chromite.api import validate
from chromite.api.controller import controller_util
from chromite.cbuildbot import commands
from chromite.cbuildbot.stages import vm_test_stages
@@ -310,6 +311,8 @@
output_proto.artifacts.add().path = file_name
+@validate.require('chroot.path', 'sysroot.path', 'test_results_dir',
+ 'output_dir')
def BundleVmFiles(input_proto, output_proto):
"""Tar VM disk and memory files.
@@ -318,23 +321,12 @@
output_proto (BundleResponse): The output proto.
"""
chroot = input_proto.chroot.path
- sysroot = input_proto.sysroot.path
- test_results_dir = input_proto.test_results_dir
+ sysroot = input_proto.sysroot.path.lstrip(os.sep)
+ test_results_dir = input_proto.test_results_dir.lstrip(os.sep)
output_dir = input_proto.output_dir
- if not chroot:
- cros_build_lib.Die('chroot.path is required.')
- if not sysroot:
- cros_build_lib.Die('sysroot.path is required.')
- if not test_results_dir:
- cros_build_lib.Die('test_results_dir is required.')
- if not output_dir:
- cros_build_lib.Die('output_dir is required.')
-
# TODO(crbug.com/954344): Replace with a chromite/service implementation.
- sysroot = sysroot.lstrip(os.sep)
- result_dir = test_results_dir.lstrip(os.sep)
- image_dir = os.path.join(chroot, sysroot, result_dir)
+ image_dir = os.path.join(chroot, sysroot, test_results_dir)
archives = vm_test_stages.ArchiveVMFilesFromImageDir(image_dir, output_dir)
for archive in archives:
output_proto.artifacts.add().path = archive