image: support IMAGE_TYPE_NETBOOT
BUG=b:239795601
TEST=./run_tests
Change-Id: I5b8fbcfc317ed5fbbf66b298e52d867c4df247b1
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/3891711
Reviewed-by: George Engelbrecht <engeg@google.com>
Tested-by: Jack Neus <jackneus@google.com>
Commit-Queue: Jack Neus <jackneus@google.com>
diff --git a/api/controller/image.py b/api/controller/image.py
index 5a7b0c1..819494c 100644
--- a/api/controller/image.py
+++ b/api/controller/image.py
@@ -46,6 +46,7 @@
_FIRMWARE_ID = common_pb2.IMAGE_TYPE_FIRMWARE
_BASE_GUEST_VM_ID = common_pb2.IMAGE_TYPE_BASE_GUEST_VM
_TEST_GUEST_VM_ID = common_pb2.IMAGE_TYPE_TEST_GUEST_VM
+_NETBOOT_ID = common_pb2.IMAGE_TYPE_NETBOOT
# Dict to allow easily translating names to enum ids and vice versa.
_IMAGE_MAPPING = {
@@ -61,6 +62,8 @@
constants.IMAGE_TYPE_FACTORY_SHIM: _FACTORY_ID,
_FIRMWARE_ID: constants.IMAGE_TYPE_FIRMWARE,
constants.IMAGE_TYPE_FIRMWARE: _FIRMWARE_ID,
+ _NETBOOT_ID: constants.IMAGE_TYPE_NETBOOT,
+ constants.IMAGE_TYPE_NETBOOT: _NETBOOT_ID,
}
# Dict to describe the prerequisite built images for each VM image type.
@@ -74,6 +77,7 @@
# Dict to describe the prerequisite built images for each mod image type.
_MOD_IMAGE_MAPPING = {
_RECOVERY_ID: _IMAGE_MAPPING[_BASE_ID],
+ _NETBOOT_ID: _IMAGE_MAPPING[_RECOVERY_ID],
}
# Supported image types for PushImage.
@@ -327,8 +331,15 @@
)
else:
cros_build_lib.Die("Failed to create recovery image.")
+ elif mod_type == _NETBOOT_ID:
+ factory_shim_dir = os.path.basename(
+ factory_result.images[constants.IMAGE_TYPE_FACTORY_SHIM]
+ )
+ image.create_netboot_kernel(board, factory_shim_dir)
else:
- cros_build_lib.Die("_RECOVERY_ID is the only mod_image_type.")
+ cros_build_lib.Die(
+ "_RECOVERY_ID and _NETBOOT_ID are the only mod_image_type."
+ )
# Read metric events log and pipe them into output_proto.events.
if core_result.build_run and core_result.output_dir: