From 098cace25fe192ced2812259633dc7a8ef20faa9 Mon Sep 17 00:00:00 2001 From: Avra Sengupta Date: Tue, 12 Apr 2016 12:26:54 +0530 Subject: snapshot/cli: Fix snapshot status xml output Backport of http://review.gluster.org/#/c/14018/ snap status --xml errors out if a brick is down and doesn't have pid. It is handled in the cli of the snap status where "N/A" is displayed in such a scenario. Handled the same in xml snap status --xml fails as the writer is not initialised for the same. Using GF_SNAP_STATUS_TYPE_ITER instead of GF_SNAP_STATUS_TYPE_SNAP for all snap's status to differentiate between the two scenarios. Added testcase volume-snapshot-xml.t to check all snapshot commands xml outputs > Reviewed-on: http://review.gluster.org/14018 > Smoke: Gluster Build System > CentOS-regression: Gluster Build System > NetBSD-regression: NetBSD Build System > Reviewed-by: Rajesh Joseph Change-Id: I99563e8f3e84f1aaeabd865326bb825c44f5c745 BUG: 1369363 Signed-off-by: Avra Sengupta Reviewed-on: http://review.gluster.org/15290 Smoke: Gluster Build System NetBSD-regression: NetBSD Build System CentOS-regression: Gluster Build System Reviewed-by: Rajesh Joseph --- cli/src/cli-rpc-ops.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'cli/src/cli-rpc-ops.c') diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c index dfdcc251be9..3a5b8e67b08 100644 --- a/cli/src/cli-rpc-ops.c +++ b/cli/src/cli-rpc-ops.c @@ -9795,7 +9795,7 @@ cli_populate_req_dict_for_status (dict_t *snap_dict, dict_t *dict, int index) { GF_ASSERT (dict); ret = dict_set_uint32 (snap_dict, "sub-cmd", - GF_SNAP_STATUS_TYPE_SNAP); + GF_SNAP_STATUS_TYPE_ITER); if (ret) { gf_log ("cli", GF_LOG_ERROR, "Could not save command " "type in snap dict"); @@ -9887,7 +9887,8 @@ cli_snapshot_status (dict_t *dict, gf_cli_rsp *rsp, goto out; } - if (status_cmd != GF_SNAP_STATUS_TYPE_SNAP) { + if ((status_cmd != GF_SNAP_STATUS_TYPE_SNAP) && + (status_cmd != GF_SNAP_STATUS_TYPE_ITER)) { dict_copy (dict, local->dict); goto out; } @@ -10370,7 +10371,8 @@ gf_cli_snapshot_for_status (call_frame_t *frame, xlator_t *this, * is already handled. Therefore we can return from here. * If want to get status of all snaps in the system or volume then * we should get them one by one.*/ - if (cmd == GF_SNAP_STATUS_TYPE_SNAP) { + if ((cmd == GF_SNAP_STATUS_TYPE_SNAP) || + (cmd == GF_SNAP_STATUS_TYPE_ITER)) { ret = 0; goto out; } -- cgit