diff options
Diffstat (limited to 'cli/src/cli-rpc-ops.c')
-rw-r--r-- | cli/src/cli-rpc-ops.c | 32 |
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) { |