diff options
author | Aravinda VK <avishwan@redhat.com> | 2013-08-30 14:37:03 +0530 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2013-09-12 10:57:22 -0700 |
commit | cd7951aa31ae4bbdf35fc6d1f2466636844b889d (patch) | |
tree | b504ffb4e6bbc24ced3809d0302180a008865756 | |
parent | 643533c77fd49316b7d16015fa1a008391d14bb2 (diff) |
cli: Add statusStr xml tag to task list and rebalance/remove brick status
New xml tag statusStr added to following gluster cli commands
gluster volume status all --xml (For Task status)
gluster volume rebalance <VOLNAME> status --xml
gluster volume remove-brick <VOLNAME> <BRICK1..> status --xml
Example(volume status all):
<task>
<type>Rebalance</type>
<id>82d8d122-8738-4144-8507-d93fc98b61df</id>
<status>3</status>
<statusStr>completed</statusStr>
</task>
Example(volume rebalance <VOL> status)
<node>
<nodeName>localhost</nodeName>
<files>0</files>
<size>0</size>
<lookups>0</lookups>
<failures>0</failures>
<status>3</status>
<statusStr>completed</statusStr>
</node>
Also modified task status as string instead of showing number
in gluster volume status all
Example:
Status of volume: gv1
Gluster process Port Online Pid
------------------------------------------------------------------------------
Brick sumne.sumne:/gfs/b1 49154 Y 15489
Brick sumne.sumne:/gfs/b2 49155 Y 15493
NFS Server on localhost N/A N 15913
Task ID Status
---- -- ------
Rebalance 82d8d122-8738-4144-8507-d93fc98b61df completed
BUG: 1003521
Change-Id: Ib283016af4c18132fb13fb33d44075782d77823c
Signed-off-by: Aravinda VK <avishwan@redhat.com>
Reviewed-on: http://review.gluster.org/5739
Reviewed-by: Kaushal M <kaushal@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
-rw-r--r-- | cli/src/cli-rpc-ops.c | 41 | ||||
-rw-r--r-- | cli/src/cli-xml-output.c | 21 | ||||
-rw-r--r-- | cli/src/cli.h | 1 |
3 files changed, 44 insertions, 19 deletions
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c index a773056c3de..c15e0e0862b 100644 --- a/cli/src/cli-rpc-ops.c +++ b/cli/src/cli-rpc-ops.c @@ -62,6 +62,13 @@ char *cli_volume_backend[] = {"", "Volume Group", }; +char *cli_vol_task_status_str[] = {"not started", + "in progress", + "stopped", + "completed", + "failed", +}; + int32_t gf_cli_get_volume (call_frame_t *frame, xlator_t *this, void *data); @@ -1388,24 +1395,7 @@ gf_cli_defrag_volume_cbk (struct rpc_req *req, struct iovec *iov, gf_log (frame->this->name, GF_LOG_TRACE, "failed to get run-time"); - switch (status_rcd) { - case GF_DEFRAG_STATUS_NOT_STARTED: - status = "not started"; - break; - case GF_DEFRAG_STATUS_STARTED: - status = "in progress"; - break; - case GF_DEFRAG_STATUS_STOPPED: - status = "stopped"; - break; - case GF_DEFRAG_STATUS_COMPLETE: - status = "completed"; - break; - case GF_DEFRAG_STATUS_FAILED: - status = "failed"; - break; - } - + status = cli_vol_task_status_str[status_rcd]; size_str = gf_uint64_2human_readable(size); cli_out ("%40s %16"PRIu64 " %13s" " %13"PRIu64 " %13"PRIu64 " %13"PRIu64 " %14s %16.2f", node_uuid, files, @@ -6347,7 +6337,20 @@ cli_print_volume_tasks (dict_t *dict) { if (ret) return; - cli_out ("%15s%40s%15d", op, task_id_str, status); + /* + Replace brick only has two states - In progress and Complete + Ref: xlators/mgmt/glusterd/src/glusterd-replace-brick.c + */ + if (!strcmp (op, "Replace brick")) { + if (status) { + status = GF_DEFRAG_STATUS_COMPLETE; + } else { + status = GF_DEFRAG_STATUS_STARTED; + } + } + + cli_out ("%15s%40s%15s", op, task_id_str, + cli_vol_task_status_str[status]); } } diff --git a/cli/src/cli-xml-output.c b/cli/src/cli-xml-output.c index 6103a2cbd1d..5218e19e91d 100644 --- a/cli/src/cli-xml-output.c +++ b/cli/src/cli-xml-output.c @@ -1436,6 +1436,21 @@ cli_xml_output_vol_status_tasks (cli_local_t *local, dict_t *dict) { "%d", status); XML_RET_CHECK_AND_GOTO (ret, out); + if (!strcmp (task_type, "Replace brick")) { + if (status) { + status = GF_DEFRAG_STATUS_COMPLETE; + } else { + status = GF_DEFRAG_STATUS_STARTED; + } + } + + ret = xmlTextWriterWriteFormatElement (local->writer, + (xmlChar *)"statusStr", + "%s", + cli_vol_task_status_str[status]); + + XML_RET_CHECK_AND_GOTO (ret, out); + /* </task> */ ret = xmlTextWriterEndElement (local->writer); XML_RET_CHECK_AND_GOTO (ret, out); @@ -2968,6 +2983,12 @@ cli_xml_output_vol_rebalance_status (xmlTextWriterPtr writer, dict_t *dict) "%d", status_rcd); XML_RET_CHECK_AND_GOTO (ret, out); + ret = xmlTextWriterWriteFormatElement (writer, + (xmlChar *)"statusStr", + "%s", + cli_vol_task_status_str[status_rcd]); + XML_RET_CHECK_AND_GOTO (ret, out); + /* </node> */ ret = xmlTextWriterEndElement (writer); XML_RET_CHECK_AND_GOTO (ret, out); diff --git a/cli/src/cli.h b/cli/src/cli.h index 9b3afff36dc..36f3c13be8e 100644 --- a/cli/src/cli.h +++ b/cli/src/cli.h @@ -66,6 +66,7 @@ struct cli_cmd; extern char *cli_vol_type_str[]; extern char *cli_vol_status_str[]; +extern char *cli_vol_task_status_str[]; typedef int (cli_cmd_cbk_t)(struct cli_state *state, struct cli_cmd_word *word, |