From f099a87fd36b600ccb8268937d3cd7ca84799f77 Mon Sep 17 00:00:00 2001 From: Sachin Pandit Date: Tue, 3 Feb 2015 05:01:38 +0530 Subject: features/quota : Fix XML output for quota list command Sample output: --------------- Sample 1) ---------- [root@snapshot-28 glusterfs]# gluster volume quota vol1 list /dir1 /dir4 /dir5 --xml 0 0 /dir1 10.0MB 80% 0Bytes 10.0MB No No /dir4 No such file or directory /dir5 No such file or directory Sample 2) --------- gluster volume quota vol1 list --xml 0 0 /dir 10.0MB 80% 0Bytes 10.0MB No No /dir1 10.0MB 80% 0Bytes 10.0MB No No Change-Id: I8a8d83cff88f778e5ee01fbca07d9f94c412317a BUG: 1185259 Signed-off-by: Sachin Pandit Reviewed-on: http://review.gluster.org/9481 Reviewed-by: Vijaikumar Mallikarjuna Tested-by: Gluster Build System Reviewed-by: Kaushal M --- cli/src/cli-cmd-volume.c | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) (limited to 'cli/src/cli-cmd-volume.c') diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c index 848dffe71d6..f87e6e24e7e 100644 --- a/cli/src/cli-cmd-volume.c +++ b/cli/src/cli-cmd-volume.c @@ -1080,6 +1080,8 @@ cli_cmd_quota_handle_list_all (const char **words, dict_t *options) unsigned char buf[16] = {0}; int fd = -1; char quota_conf_file[PATH_MAX] = {0}; + gf_boolean_t xml_err_flag = _gf_false; + char err_str[NAME_MAX] = {0,}; xdata = dict_new (); if (!xdata) { @@ -1104,7 +1106,13 @@ cli_cmd_quota_handle_list_all (const char **words, dict_t *options) * quota enabled as cli_get_soft_limit() handles that */ if (!_limits_set_on_volume (volname)) { - cli_out ("quota: No quota configured on volume %s", volname); + snprintf (err_str, sizeof (err_str), "No quota configured on " + "volume %s", volname); + if (global_state->mode & GLUSTER_MODE_XML) { + xml_err_flag = _gf_true; + } else { + cli_out ("quota: %s", err_str); + } ret = 0; goto out; } @@ -1155,7 +1163,18 @@ cli_cmd_quota_handle_list_all (const char **words, dict_t *options) CLI_LOCAL_INIT (local, words, frame, xdata); proc = &cli_quotad_clnt.proctable[GF_AGGREGATOR_GETLIMIT]; - print_quota_list_header (); + if (!(global_state->mode & GLUSTER_MODE_XML)) { + print_quota_list_header (); + } else { + ret = cli_xml_output_vol_quota_limit_list_begin + (local, 0, 0, NULL); + if (ret) { + gf_log ("cli", GF_LOG_ERROR, "Error in printing " + "xml output"); + goto out; + } + } + gfid_str = GF_CALLOC (1, gf_common_mt_char, 64); if (!gfid_str) { ret = -1; @@ -1191,12 +1210,31 @@ cli_cmd_quota_handle_list_all (const char **words, dict_t *options) all_failed = all_failed && ret; } + if (global_state->mode & GLUSTER_MODE_XML) { + ret = cli_xml_output_vol_quota_limit_list_end (local); + if (ret) { + gf_log ("cli", GF_LOG_ERROR, "Error in printing " + "xml output"); + goto out; + } + } + if (count > 0) { ret = all_failed? -1: 0; } else { ret = 0; } + + out: + if (xml_err_flag) { + ret = cli_xml_output_str ("volQuota", NULL, -1, 0, err_str); + if (ret) { + gf_log ("cli", GF_LOG_ERROR, "Error outputting in " + "xml format"); + } + } + if (fd != -1) { close (fd); } -- cgit