diff options
author | vmallika <vmallika@redhat.com> | 2015-06-15 12:31:48 +0530 |
---|---|---|
committer | Niels de Vos <ndevos@redhat.com> | 2015-07-07 09:11:38 -0700 |
commit | c9e92231e8fb31e6e4a9f061746daaedd77ad1b7 (patch) | |
tree | e5598f0a0bbf7ce7b67e9358997bd283b9ef7aff /cli/src/cli-cmd-volume.c | |
parent | 5c8ee98a2dc6e7754ad37adcfd3a0e04014f266c (diff) |
features/quota : Fix XML output for quota list command
This is a backport of http://review.gluster.org/#/c/9481/
> Sample output:
> ---------------
>
> Sample 1)
> ----------
> [root@snapshot-28 glusterfs]# gluster volume quota vol1 list /dir1 /dir4
> /dir5 --xml
> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> <cliOutput>
> <opRet>0</opRet>
> <opErrno>0</opErrno>
> <opErrstr/>
> <volQuota>
> <limit>
> <path>/dir1</path>
> <hard_limit>10.0MB</hard_limit>
> <soft_limit>80%</soft_limit>
> <used_space>0Bytes</used_space>
> <avail_space>10.0MB</avail_space>
> </limit>
> <limit>
> <path>/dir4</path>
> <path>No such file or directory</path>
> </limit>
> <limit>
> <path>/dir5</path>
> <path>No such file or directory</path>
> </limit>
> </volQuota>
> </cliOutput>
>
> Sample 2)
> ---------
> gluster volume quota vol1 list --xml
> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> <cliOutput>
> <opRet>0</opRet>
> <opErrno>0</opErrno>
> <opErrstr/>
> <volQuota/>
> </cliOutput>
> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> <cliOutput>
> <volQuota>
> <limit>
> <path>/dir</path>
> <hard_limit>10.0MB</hard_limit>
> <soft_limit>80%</soft_limit>
> <used_space>0Bytes</used_space>
> <avail_space>10.0MB</avail_space>
> </limit>
> <limit>
> <path>/dir1</path>
> <hard_limit>10.0MB</hard_limit>
> <soft_limit>80%</soft_limit>
> <used_space>0Bytes</used_space>
> <avail_space>10.0MB</avail_space>
> </limit>
> </volQuota>
> </cliOutput>
>
> Change-Id: I8a8d83cff88f778e5ee01fbca07d9f94c412317a
> BUG: 1185259
> Signed-off-by: Sachin Pandit <spandit@redhat.com>
> Reviewed-on: http://review.gluster.org/9481
> Reviewed-by: Vijaikumar Mallikarjuna <vmallika@redhat.com>
> Tested-by: Gluster Build System <jenkins@build.gluster.com>
> Reviewed-by: Kaushal M <kaushal@redhat.com>
Change-Id: Ibdf51db626a07e68b5ace98140877f6d21918c20
BUG: 1231641
Signed-off-by: vmallika <vmallika@redhat.com>
Reviewed-on: http://review.gluster.org/11220
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Sachin Pandit <spandit@redhat.com>
Reviewed-by: Niels de Vos <ndevos@redhat.com>
Diffstat (limited to 'cli/src/cli-cmd-volume.c')
-rw-r--r-- | cli/src/cli-cmd-volume.c | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c index 822da7d4e48..c235594e769 100644 --- a/cli/src/cli-cmd-volume.c +++ b/cli/src/cli-cmd-volume.c @@ -1245,6 +1245,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) { @@ -1269,7 +1271,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; } @@ -1319,7 +1327,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; @@ -1355,12 +1374,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); } |