summaryrefslogtreecommitdiffstats
path: root/cli/src/cli-rpc-ops.c
diff options
context:
space:
mode:
Diffstat (limited to 'cli/src/cli-rpc-ops.c')
-rw-r--r--cli/src/cli-rpc-ops.c124
1 files changed, 107 insertions, 17 deletions
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c
index 977ab0b2a13..20688b09687 100644
--- a/cli/src/cli-rpc-ops.c
+++ b/cli/src/cli-rpc-ops.c
@@ -26,7 +26,6 @@
#ifndef GSYNC_CONF
#define GSYNC_CONF GEOREP"/gsyncd.conf"
#endif
-#define DEFAULT_LOG_FILE_DIRECTORY DATADIR "/log/glusterfs"
/* Widths of various columns in top read/write-perf output
* Total width of top read/write-perf should be 80 chars
@@ -477,6 +476,10 @@ gf_cli3_1_get_volume_cbk (struct rpc_req *req, struct iovec *iov,
}
if (!rsp.dict.dict_len) {
+#if (HAVE_LIB_XML)
+ if (global_state->mode & GLUSTER_MODE_XML)
+ goto xml_output;
+#endif
cli_out ("No volumes present");
ret = 0;
goto out;
@@ -520,17 +523,46 @@ gf_cli3_1_get_volume_cbk (struct rpc_req *req, struct iovec *iov,
"Volume %s does not exist",
local->get_vol.volname);
ret = -1;
- goto out;
+#if (HAVE_LIB_XML)
+ if (!(global_state->mode & GLUSTER_MODE_XML))
+#endif
+ {
+ goto out;
+ }
}
}
#if (HAVE_LIB_XML)
+xml_output:
if (global_state->mode & GLUSTER_MODE_XML) {
- ret = cli_xml_output_vol_info (dict, rsp.op_ret,
- rsp.op_errno, rsp.op_errstr);
- if (ret) {
- gf_log ("cli", GF_LOG_ERROR,
- "Error outputting to xml");
+ /* For GET_NEXT_VOLUME output is already begun in
+ * and will also end in gf_cli3_1_get_next_volume()
+ */
+ if (local->get_vol.flags == GF_CLI_GET_VOLUME) {
+ ret = cli_xml_output_vol_info_begin
+ (local, rsp.op_ret, rsp.op_errno,
+ rsp.op_errstr);
+ if (ret) {
+ gf_log ("cli", GF_LOG_ERROR,
+ "Error outputting to xml");
+ goto out;
+ }
+ }
+
+ if (dict) {
+ ret = cli_xml_output_vol_info (local, dict);
+ if (ret) {
+ gf_log ("cli", GF_LOG_ERROR,
+ "Error outputting to xml");
+ goto out;
+ }
+ }
+
+ if (local->get_vol.flags == GF_CLI_GET_VOLUME) {
+ ret = cli_xml_output_vol_info_end (local);
+ if (ret)
+ gf_log ("cli", GF_LOG_ERROR,
+ "Error outputting to xml");
}
goto out;
}
@@ -1253,9 +1285,6 @@ gf_cli3_1_set_volume_cbk (struct rpc_req *req, struct iovec *iov,
gf_log ("cli", GF_LOG_INFO, "Received resp to set");
- if (rsp.op_ret && strcmp (rsp.op_errstr, ""))
- snprintf (msg, sizeof (msg), "%s", rsp.op_errstr);
-
dict = dict_new ();
if (!dict) {
@@ -1283,6 +1312,9 @@ gf_cli3_1_set_volume_cbk (struct rpc_req *req, struct iovec *iov,
}
#endif
+ if (rsp.op_ret && strcmp (rsp.op_errstr, ""))
+ cli_out ("%s", rsp.op_errstr);
+
cli_out ("%s", ((help_str == NULL) ? msg : help_str));
ret = rsp.op_ret;
@@ -1892,6 +1924,7 @@ gf_cli3_1_quota_cbk (struct rpc_req *req, struct iovec *iov,
char *volname = NULL;
char *limit_list = NULL;
int32_t type = 0;
+ char msg[1024] = {0,};
if (-1 == req->rpc_status) {
goto out;
@@ -1905,7 +1938,12 @@ gf_cli3_1_quota_cbk (struct rpc_req *req, struct iovec *iov,
if (rsp.op_ret &&
strcmp (rsp.op_errstr, "") == 0) {
- cli_out ("command unsuccessful %s", rsp.op_errstr);
+ snprintf (msg, sizeof (msg), "command unsuccessful %s",
+ rsp.op_errstr);
+#if (HAVE_LIB_XML)
+ if (global_state->mode & GLUSTER_MODE_XML)
+ goto xml_output;
+#endif
goto out;
}
@@ -1940,6 +1978,18 @@ gf_cli3_1_quota_cbk (struct rpc_req *req, struct iovec *iov,
"failed to get type");
if (type == GF_QUOTA_OPTION_TYPE_LIST) {
+#if (HAVE_LIB_XML)
+ if (global_state->mode & GLUSTER_MODE_XML) {
+ ret = cli_xml_output_vol_quota_limit_list
+ (volname, limit_list, rsp.op_ret,
+ rsp.op_errno, rsp.op_errstr);
+ if (ret)
+ gf_log ("cli", GF_LOG_ERROR,
+ "Error outputting to xml");
+ goto out;
+
+ }
+#endif
if (limit_list) {
gf_cli3_1_print_limit_list (volname,
limit_list,
@@ -1948,19 +1998,34 @@ gf_cli3_1_quota_cbk (struct rpc_req *req, struct iovec *iov,
gf_log ("cli", GF_LOG_INFO, "Received resp to quota "
"command ");
if (rsp.op_errstr)
- cli_out ("%s", rsp.op_errstr);
+ snprintf (msg, sizeof (msg), "%s",
+ rsp.op_errstr);
}
} else {
gf_log ("cli", GF_LOG_INFO, "Received resp to quota command ");
if (rsp.op_errstr)
- cli_out ("%s", rsp.op_errstr);
+ snprintf (msg, sizeof (msg), "%s", rsp.op_errstr);
else
- cli_out ("%s", "successful");
+ snprintf (msg, sizeof (msg), "successful");
}
-out:
- ret = rsp.op_ret;
+#if (HAVE_LIB_XML)
+xml_output:
+ if (global_state->mode & GLUSTER_MODE_XML) {
+ ret = cli_xml_output_str ("volQuota", msg, rsp.op_ret,
+ rsp.op_errno, rsp.op_errstr);
+ if (ret)
+ gf_log ("cli", GF_LOG_ERROR,
+ "Error outputting to xml");
+ goto out;
+ }
+#endif
+
+ if (strlen (msg) > 0)
+ cli_out ("%s", msg);
+ ret = rsp.op_ret;
+out:
cli_cmd_broadcast_response (ret);
if (rsp.dict.dict_val)
@@ -2155,16 +2220,31 @@ gf_cli3_1_get_next_volume (call_frame_t *frame, xlator_t *this,
}
ctx = data;
+ local = frame->local;
+
+#if (HAVE_LIB_XML)
+ if (global_state->mode & GLUSTER_MODE_XML) {
+ ret = cli_xml_output_vol_info_begin (local, 0, 0, "");
+ if (ret) {
+ gf_log ("cli", GF_LOG_ERROR, "Error outputting to xml");
+ goto out;
+ }
+ }
+#endif
ret = gf_cli3_1_get_volume (frame, this, data);
- local = frame->local;
if (!local || !local->get_vol.volname) {
+#if (HAVE_LIB_XML)
+ if ((global_state->mode & GLUSTER_MODE_XML))
+ goto end_xml;
+#endif
cli_out ("No volumes present");
goto out;
}
+
ctx->volname = local->get_vol.volname;
while (ctx->volname) {
@@ -2174,7 +2254,17 @@ gf_cli3_1_get_next_volume (call_frame_t *frame, xlator_t *this,
ctx->volname = local->get_vol.volname;
}
+#if (HAVE_LIB_XML)
+end_xml:
+ if (global_state->mode & GLUSTER_MODE_XML) {
+ ret = cli_xml_output_vol_info_end (local);
+ if (ret)
+ gf_log ("cli", GF_LOG_ERROR, "Error outputting to xml");
+ }
+#endif
+
out:
+ gf_log ("cli", GF_LOG_DEBUG, "Returning %d", ret);
return ret;
}