From 35c0ea6c2590dbe11cb5e5007b4301bcb7d92eeb Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Thu, 2 Apr 2020 11:12:54 +0200 Subject: [PATCH] ch-remote: Add --snapshot option Introduce the snapshot wrapper to ch-remote. Signed-off-by: Sebastien Boeuf --- src/bin/ch-remote.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/bin/ch-remote.rs b/src/bin/ch-remote.rs index cda034141..d93b2ecff 100644 --- a/src/bin/ch-remote.rs +++ b/src/bin/ch-remote.rs @@ -249,6 +249,19 @@ fn add_net_api_command(socket: &mut UnixStream, config: &str) -> Result<(), Erro ) } +fn snapshot_api_command(socket: &mut UnixStream, url: &str) -> Result<(), Error> { + let snapshot_config = vmm::api::VmSnapshotConfig { + destination_url: String::from(url), + }; + + simple_api_command( + socket, + "PUT", + "snapshot", + Some(&serde_json::to_string(&snapshot_config).unwrap()), + ) +} + fn do_command(matches: &ArgMatches) -> Result<(), Error> { let mut socket = UnixStream::connect(matches.value_of("api-socket").unwrap()).map_err(Error::Socket)?; @@ -306,6 +319,14 @@ fn do_command(matches: &ArgMatches) -> Result<(), Error> { .value_of("net_config") .unwrap(), ), + Some("snapshot") => snapshot_api_command( + &mut socket, + matches + .subcommand_matches("snapshot") + .unwrap() + .value_of("snapshot_config") + .unwrap(), + ), Some(c) => simple_api_command(&mut socket, "PUT", c, None), None => unreachable!(), }