summaryrefslogtreecommitdiffstats
path: root/cli/src/cli-rpc-ops.c
diff options
context:
space:
mode:
authorRajesh Joseph <rjoseph@redhat.com>2013-10-30 10:50:45 +0530
committershishir gowda <sgowda@redhat.com>2013-11-15 14:45:13 +0530
commit944e5529078cff3fd0ecbc30f037eddcc9bb63ae (patch)
treeda5d6c2037fe555a25246b384cdc693589058381 /cli/src/cli-rpc-ops.c
parente9b9b38caabe778fad4b6f2fd9ba9d8cc100c7df (diff)
snapshot: Snapshot restore
GL-31: Ability to restore snapshot Implemented snapshot restore for thin logical volume. As of now snapshot restore for CG is not tested. Testing for snapshot restore of a volume is done by changing the snapshot create process to create a thick snapshot. This is done because --merge option to restore thin volume is not working in the latest kernel. Change-Id: Ia3ded7e6c4da5957a74e269a25ba3200e6fb2d8b Signed-off-by: Rajesh Joseph <rjoseph@redhat.com>
Diffstat (limited to 'cli/src/cli-rpc-ops.c')
-rw-r--r--cli/src/cli-rpc-ops.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c
index fdac00384..870588e9a 100644
--- a/cli/src/cli-rpc-ops.c
+++ b/cli/src/cli-rpc-ops.c
@@ -7889,6 +7889,38 @@ gf_cli_snapshot_cbk (struct rpc_req *req, struct iovec *iov,
snap_name);
}
break;
+ case GF_SNAP_OPTION_TYPE_RESTORE:
+ /* TODO: Check if rsp.op_ret needs to be checked here. Or is
+ * it ok to check this in the start of the function where we
+ * get rsp.*/
+ if (rsp.op_ret) {
+ cli_err("snapshot restore: failed: %s",
+ rsp.op_errstr ? rsp.op_errstr :
+ "Please check log file for details");
+ ret = rsp.op_ret;
+ goto out;
+ }
+
+ ret = dict_get_str (dict, "cg-name", &cg_name);
+ if (ret) {
+ ret = dict_get_str (dict, "snap-name", &snap_name);
+ if (ret) {
+ gf_log (frame->this->name, GF_LOG_ERROR,
+ "Failed to get CG name or snap name");
+ goto out;
+ }
+ }
+
+ if (NULL != snap_name) {
+ cli_out ("Snapshot restore: %s: Snap restored "
+ "successfully", snap_name);
+ } else {
+ cli_out ("Snapshot restore: %s: Consistency group "
+ "restored successfully", cg_name);
+ }
+
+ ret = 0;
+ break;
case GF_SNAP_OPTION_TYPE_LIST:
if (rsp.op_ret) {