summaryrefslogtreecommitdiffstats
path: root/cli/src/cli-cmd-volume.c
diff options
context:
space:
mode:
authorvmallika <vmallika@redhat.com>2015-06-15 12:31:48 +0530
committerNiels de Vos <ndevos@redhat.com>2015-07-07 09:11:38 -0700
commitc9e92231e8fb31e6e4a9f061746daaedd77ad1b7 (patch)
treee5598f0a0bbf7ce7b67e9358997bd283b9ef7aff /cli/src/cli-cmd-volume.c
parent5c8ee98a2dc6e7754ad37adcfd3a0e04014f266c (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.c42
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);
}