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/toolchain.py b/api/controller/toolchain.py
index 46bb62d..ab6645a 100644
--- a/api/controller/toolchain.py
+++ b/api/controller/toolchain.py
@@ -9,31 +9,36 @@
import os
+from chromite.api import validate
from chromite.lib import cros_logging as logging
from chromite.lib import gs
from chromite.lib import toolchain_util
-def UpdateChromeEbuildWithOrderfile(input_proto, _output_proto):
+@validate.require('build_target.name')
+@validate.validation_complete
+def UpdateChromeEbuildWithOrderfile(input_proto, _output_proto, _config):
"""Update Chrome ebuild with most recent unvetted orderfile.
Args:
input_proto (UpdateChromeEbuildRequest): The input proto
- output_proto (UpdateChromeEbuildResponse): Empty output proto
+ _output_proto (UpdateChromeEbuildResponse): Empty output proto
+ _config (api_config.ApiConfig): The API call config.
"""
board = input_proto.build_target.name
toolchain_util.OrderfileUpdateChromeEbuild(board)
-def UploadVettedOrderfile(_input_proto, output_proto):
+@validate.validation_complete
+def UploadVettedOrderfile(_input_proto, output_proto, _config):
"""Upload a vetted orderfile to GS bucket.
Args:
- input_proto (UploadVettedOrderfileRequest): Empty input proto
+ _input_proto (UploadVettedOrderfileRequest): Empty input proto
output_proto (UploadVettedOrderfileResponse): The output proto
+ _config (api_config.ApiConfig): The API call config.
"""
-
gs_context = gs.GSContext()
orderfile = toolchain_util.FindLatestChromeOrderfile(
toolchain_util.ORDERFILE_GS_URL_UNVETTED)