From 656e6b38189d14c440a46d4d69b5ddfc5d8cfffc Mon Sep 17 00:00:00 2001 From: Rajesh Joseph Date: Mon, 5 May 2014 13:37:34 +0530 Subject: cli/snapshot: provide --xml support for all snapshot command Now --xml option can be used with all snapshot command. It will form the cli output in xml form. Change-Id: Ifc0ac31d2a9f91e136e87f3b51a629df7dba94e8 BUG: 1096610 Signed-off-by: Rajesh Joseph Reviewed-on: http://review.gluster.org/7663 Reviewed-by: Sachin Pandit Reviewed-by: Vijaikumar Mallikarjuna Tested-by: Gluster Build System Reviewed-by: Vijay Bellur --- xlators/mgmt/glusterd/src/glusterd-snapshot.c | 86 +++++++++++++++++++++++++-- xlators/mgmt/glusterd/src/glusterd-utils.c | 13 ++++ 2 files changed, 94 insertions(+), 5 deletions(-) (limited to 'xlators/mgmt/glusterd') diff --git a/xlators/mgmt/glusterd/src/glusterd-snapshot.c b/xlators/mgmt/glusterd/src/glusterd-snapshot.c index 7678d77b3d5..dccf57f7c93 100644 --- a/xlators/mgmt/glusterd/src/glusterd-snapshot.c +++ b/xlators/mgmt/glusterd/src/glusterd-snapshot.c @@ -770,6 +770,34 @@ glusterd_snapshot_restore (dict_t *dict, char **op_errstr, dict_t *rsp_dict) goto out; } + ret = dict_set_dynstr_with_alloc (rsp_dict, "snapuuid", + uuid_utoa (snap->snap_id)); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, "Failed to set snap " + "uuid in response dictionary for %s snapshot", + snap->snapname); + goto out; + } + + + ret = dict_set_dynstr_with_alloc (rsp_dict, "volname", + snap_volinfo->parent_volname); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, "Failed to set snap " + "uuid in response dictionary for %s snapshot", + snap->snapname); + goto out; + } + + ret = dict_set_dynstr_with_alloc (rsp_dict, "volid", + uuid_utoa (parent_volinfo->volume_id)); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, "Failed to set snap " + "uuid in response dictionary for %s snapshot", + snap->snapname); + goto out; + } + /* Take backup of the volinfo folder */ ret = glusterd_snapshot_backup_vol (parent_volinfo); if (ret) { @@ -2768,7 +2796,7 @@ glusterd_snapshot_get_all_snap_info (dict_t *dict) } } - ret = dict_set_int32 (dict, "snap-count", snapcount); + ret = dict_set_int32 (dict, "snapcount", snapcount); if (ret) { gf_log (this->name, GF_LOG_ERROR, "Failed to set snapcount"); goto out; @@ -2870,7 +2898,7 @@ glusterd_snapshot_get_info_by_volume (dict_t *dict, char *volname, goto out; } } - ret = dict_set_int32 (dict, "snap-count", snapcount); + ret = dict_set_int32 (dict, "snapcount", snapcount); if (ret) { gf_log (this->name, GF_LOG_ERROR, "Failed to set snapcount"); goto out; @@ -2941,7 +2969,7 @@ glusterd_handle_snapshot_info (rpcsvc_request_t *req, glusterd_op_t op, goto out; } - ret = dict_set_int32 (dict, "snap-count", 1); + ret = dict_set_int32 (dict, "snapcount", 1); if (ret) { gf_log (this->name, GF_LOG_ERROR, "Failed to set snapcount"); @@ -3047,7 +3075,7 @@ glusterd_snapshot_get_all_snapnames (dict_t *dict) } } - ret = dict_set_int32 (dict, "snap-count", snapcount); + ret = dict_set_int32 (dict, "snapcount", snapcount); if (ret) { gf_log (this->name, GF_LOG_ERROR, "Failed to set snapcount"); goto out; @@ -3096,7 +3124,7 @@ glusterd_snapshot_get_vol_snapnames (dict_t *dict, glusterd_volinfo_t *volinfo) } } - ret = dict_set_int32 (dict, "snap-count", snapcount); + ret = dict_set_int32 (dict, "snapcount", snapcount); if (ret) { gf_log (this->name, GF_LOG_ERROR, "Failed to set snapcount"); goto out; @@ -4538,6 +4566,15 @@ glusterd_snapshot_remove_prevalidate (dict_t *dict, char **op_errstr, goto out; } + ret = dict_set_dynstr_with_alloc (dict, "snapuuid", + uuid_utoa (snap->snap_id)); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, "Failed to set snap " + "uuid in response dictionary for %s snapshot", + snap->snapname); + goto out; + } + ret = 0; out: return ret; @@ -4699,6 +4736,16 @@ glusterd_snapshot_activate_commit (dict_t *dict, char **op_errstr, snap_volinfo->volname, snap->snapname); goto out; } + + ret = dict_set_dynstr_with_alloc (rsp_dict, "snapuuid", + uuid_utoa (snap->snap_id)); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, "Failed to set snap " + "uuid in response dictionary for %s snapshot", + snap->snapname); + goto out; + } + ret = 0; out: return ret; @@ -4759,6 +4806,15 @@ glusterd_snapshot_deactivate_commit (dict_t *dict, char **op_errstr, goto out; } + ret = dict_set_dynstr_with_alloc (rsp_dict, "snapuuid", + uuid_utoa (snap->snap_id)); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, "Failed to set snap " + "uuid in response dictionary for %s snapshot", + snap->snapname); + goto out; + } + ret = 0; out: return ret; @@ -4805,6 +4861,15 @@ glusterd_snapshot_remove_commit (dict_t *dict, char **op_errstr, goto out; } + ret = dict_set_dynstr_with_alloc (rsp_dict, "snapuuid", + uuid_utoa (snap->snap_id)); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, "Failed to set snap uuid in " + "response dictionary for %s snapshot", + snap->snapname); + goto out; + } + /* Save the snap status as GD_SNAP_STATUS_DECOMMISSION so * that if the node goes down the snap would be removed */ @@ -5276,6 +5341,17 @@ glusterd_snapshot_create_commit (dict_t *dict, char **op_errstr, } } + ret = dict_set_dynstr_with_alloc (rsp_dict, "snapuuid", + uuid_utoa (snap->snap_id)); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, "Failed to set snap " + "uuid in response dictionary for %s snapshot", + snap->snapname); + goto out; + } + + ret = 0; + out: if (ret) { if (snap) diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index aff2356eb4f..baa845b0a91 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -10796,6 +10796,19 @@ glusterd_snap_create_use_rsp_dict (dict_t *dst, dict_t *src) goto out; } + ret = dict_get_str (src, "snapuuid", &buf); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, "failed to get snap UUID"); + goto out; + } + + ret = dict_set_dynstr_with_alloc (dst, "snapuuid", buf); + if (ret) { + gf_log (this->name, GF_LOG_ERROR, + "Failed to set snap uuid in dict"); + goto out; + } + /* set in dst dictionary soft-limit-reach only if soft-limit-reach * is present src dictionary */ ret = dict_get_int8 (src, "soft-limit-reach", &soft_limit_flag); -- cgit