cli: Deploy compressed DLC metadata
Load the source metadata files and pipe to the device, then call the
`dlc_metadata_util` to set it on-device.
BUG=b:255627042
TEST=./scripts/run_tests cli/deploy_unittest.py
TEST=cros deploy ${HOST} sample-dlc
Change-Id: I6595edc64a04d8b3352f523c731d6619a0880b16
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/4679249
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Jae Hoon Kim <kimjae@chromium.org>
Tested-by: Yuanpeng Ni <yuanpengni@chromium.org>
Commit-Queue: Yuanpeng Ni <yuanpengni@chromium.org>
diff --git a/cli/deploy.py b/cli/deploy.py
index 976b416..253b882 100644
--- a/cli/deploy.py
+++ b/cli/deploy.py
@@ -1359,23 +1359,34 @@
logging.error("Failed to uninstall DLC.")
raise
- logging.notice("Deploy the DLC image for %s", dlc_id)
- dlc_img_path_src = os.path.join(
+ src_dlc_dir = os.path.join(
sysroot,
dlc_lib.DLC_BUILD_DIR,
dlc_id,
- dlc_package,
- dlc_lib.DLC_IMAGE,
)
- if not os.path.exists(dlc_img_path_src):
- dlc_img_path_src = os.path.join(
+ if not os.path.exists(src_dlc_dir):
+ src_dlc_dir = os.path.join(
sysroot,
dlc_lib.DLC_BUILD_DIR_SCALED,
dlc_id,
- dlc_package,
- dlc_lib.DLC_IMAGE,
)
+ # Deploy the metadata entry to compressed metadata on device.
+ logging.notice("Setting the DLC metadata for %s", dlc_id)
+ metadata = dlc_lib.DlcMetadata.LoadSrcMetadata(src_dlc_dir)
+ device.run(
+ [dlc_lib.DLC_METADATA_UTIL, "--set", f"--id={dlc_id}"],
+ input=json.dumps(metadata),
+ check=False,
+ )
+
+ logging.notice("Deploy the DLC image for %s", dlc_id)
+ dlc_img_path_src = os.path.join(
+ src_dlc_dir,
+ dlc_package,
+ dlc_lib.DLC_IMAGE,
+ )
+
dlc_img_path = os.path.join(_DLC_INSTALL_ROOT, dlc_id, dlc_package)
dlc_img_path_a = os.path.join(dlc_img_path, "dlc_a")
dlc_img_path_b = os.path.join(dlc_img_path, "dlc_b")
@@ -1400,23 +1411,15 @@
device.run(["chown", "-R", "dlcservice:dlcservice", _DLC_INSTALL_ROOT])
# Copy metadata to device.
+ # TODO(b/290961240): To be removed once the transition to compressed
+ # metadata is complete.
dest_meta_dir = Path("/") / dlc_lib.DLC_META_DIR / dlc_id / dlc_package
device.mkdir(dest_meta_dir)
src_meta_dir = os.path.join(
- sysroot,
- dlc_lib.DLC_BUILD_DIR,
- dlc_id,
+ src_dlc_dir,
dlc_package,
dlc_lib.DLC_TMP_META_DIR,
)
- if not os.path.exists(src_meta_dir):
- src_meta_dir = os.path.join(
- sysroot,
- dlc_lib.DLC_BUILD_DIR_SCALED,
- dlc_id,
- dlc_package,
- dlc_lib.DLC_TMP_META_DIR,
- )
device.CopyToDevice(
src_meta_dir + "/",
dest_meta_dir,