diff options
Diffstat (limited to 'cli/src')
-rw-r--r-- | cli/src/cli-xml-output.c | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/cli/src/cli-xml-output.c b/cli/src/cli-xml-output.c index 327cd6c6ffd..3ad7250397b 100644 --- a/cli/src/cli-xml-output.c +++ b/cli/src/cli-xml-output.c @@ -1620,7 +1620,8 @@ cli_xml_output_vol_status (cli_local_t *local, dict_t *dict) int online = 0; gf_boolean_t node_present = _gf_true; int i; - + int type = -1; + int hot_brick_count = -1; /* <volume> */ ret = xmlTextWriterStartElement (local->writer, (xmlChar *)"volume"); @@ -1656,7 +1657,28 @@ cli_xml_output_vol_status (cli_local_t *local, dict_t *dict) index_max = brick_index_max + other_count; + ret = dict_get_int32 (dict, "type", &type); + if (ret) + goto out; + + if (type == GF_CLUSTER_TYPE_TIER) { + ret = dict_get_int32 (dict, "hot_brick_count", + &hot_brick_count); + if (ret) + goto out; + + ret = xmlTextWriterStartElement + (local->writer, (xmlChar *)"hotBrick"); + XML_RET_CHECK_AND_GOTO (ret, out); + + } for (i = 0; i <= index_max; i++) { + + if (type == GF_CLUSTER_TYPE_TIER && i >= hot_brick_count) { + ret = xmlTextWriterStartElement (local->writer, + (xmlChar *)"coldBrick"); + XML_RET_CHECK_AND_GOTO (ret, out); + } ret = cli_xml_output_vol_status_common (local->writer, dict, i, &online, &node_present); if (ret) { @@ -1726,8 +1748,18 @@ cli_xml_output_vol_status (cli_local_t *local, dict_t *dict) /* </node> was opened in cli_xml_output_vol_status_common()*/ ret = xmlTextWriterEndElement (local->writer); XML_RET_CHECK_AND_GOTO (ret, out); + + if (type == GF_CLUSTER_TYPE_TIER && i < hot_brick_count) { + ret = xmlTextWriterEndElement (local->writer); + XML_RET_CHECK_AND_GOTO (ret, out); + } + if (type == GF_CLUSTER_TYPE_TIER && i >= hot_brick_count) { + ret = xmlTextWriterEndElement (local->writer); + XML_RET_CHECK_AND_GOTO (ret, out); + } } + /* Tasks are only present when a normal volume status call is done on a * single volume or on all volumes */ |