Build API: Implement validate_only calls.
Add validate-only support to all existing endpoints and
tests to enforce the setting is respected.
Add is_in validator to help transition some endpoints
to decorator-only validation.
Some cleanup and standardization in the controller tests.
BUG=chromium:987263
TEST=run_tests
Cq-Depend: chromium:1726252
Change-Id: I108dfc1a221847eae47a18f2f60e12d2575c9ea8
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/1726253
Reviewed-by: David Burger <dburger@chromium.org>
Commit-Queue: Alex Klein <saklein@chromium.org>
Tested-by: Alex Klein <saklein@chromium.org>
diff --git a/api/controller/packages.py b/api/controller/packages.py
index b314091..090b54c 100644
--- a/api/controller/packages.py
+++ b/api/controller/packages.py
@@ -24,14 +24,11 @@
}
-def Uprev(input_proto, output_proto):
+@validate.require('overlay_type')
+@validate.is_in('overlay_type', _OVERLAY_TYPE_TO_NAME)
+@validate.validation_complete
+def Uprev(input_proto, output_proto, _config):
"""Uprev all cros workon ebuilds that have changes."""
- if not input_proto.overlay_type:
- cros_build_lib.Die('Overlay type is required.')
- elif input_proto.overlay_type not in _OVERLAY_TYPE_TO_NAME:
- cros_build_lib.Die('Overlay type must be one of: %s',
- ', '.join(_OVERLAY_TYPE_TO_NAME.values()))
-
target_names = [t.name for t in input_proto.build_targets]
build_targets = [build_target_util.BuildTarget(t) for t in target_names]
overlay_type = _OVERLAY_TYPE_TO_NAME[input_proto.overlay_type]
@@ -48,6 +45,8 @@
for path in uprevved:
output_proto.modified_ebuilds.add().path = path
+
+@validate.validation_complete
def UprevVersionedPackage(_input_proto, _output_proto):
"""Uprev a versioned package.
@@ -55,8 +54,10 @@
"""
pass
+
@validate.require('atom')
-def GetBestVisible(input_proto, output_proto):
+@validate.validation_complete
+def GetBestVisible(input_proto, output_proto, _config):
"""Returns the best visible PackageInfo for the indicated atom."""
cpv = packages.get_best_visible(input_proto.atom)
package_info = common_pb2.PackageInfo()