Chroot snapshot endpoints
Add service endpoints to create and restore LVM snapshots of the chroot.
BUG=chromium:1043296
TEST=`run_tests`
Change-Id: Iafca6497fb9a6f03adda61fad6c30aea22f3e275
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2065288
Tested-by: Chris McDonald <cjmcdonald@chromium.org>
Auto-Submit: Chris McDonald <cjmcdonald@chromium.org>
Commit-Queue: Alex Klein <saklein@chromium.org>
Reviewed-by: Alex Klein <saklein@chromium.org>
diff --git a/api/controller/sdk.py b/api/controller/sdk.py
index ffa7cad..4dd5c3b 100644
--- a/api/controller/sdk.py
+++ b/api/controller/sdk.py
@@ -118,3 +118,21 @@
"""Clean unneeded files from a chroot."""
chroot = controller_util.ParseChroot(input_proto.chroot)
sdk.Clean(chroot, sysroots=True, tmp=True)
+
+
+@faux.all_empty
+@validate.validation_complete
+def CreateSnapshot(input_proto, output_proto, _config):
+ """Create a chroot snapshot and return a corresponding opaque snapshot key."""
+ chroot = controller_util.ParseChroot(input_proto.chroot)
+ token = sdk.CreateSnapshot(chroot, replace_if_needed=True)
+ output_proto.snapshot_token.value = token
+
+
+@faux.all_empty
+@validate.validation_complete
+def RestoreSnapshot(input_proto, _output_proto, _config):
+ """Restore a chroot snapshot from a snapshot key."""
+ chroot = controller_util.ParseChroot(input_proto.chroot)
+ token = input_proto.snapshot_token.value
+ sdk.RestoreSnapshot(token, chroot)