summaryrefslogtreecommitdiffstats
path: root/cli/src/cli-xml-output.c
diff options
context:
space:
mode:
Diffstat (limited to 'cli/src/cli-xml-output.c')
-rw-r--r--cli/src/cli-xml-output.c34
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
*/