From 2ba42d07eb967472227eb0a93e4ca2cac7a197b5 Mon Sep 17 00:00:00 2001 From: Kaushal M Date: Mon, 23 Dec 2013 14:02:12 +0530 Subject: cli: Fix xml output for volume status The XML output for volume status was malformed when one of the nodes is down, leading to outputs like ------- NFS Server localhost 63ca3d2f-8c1f-4b84-b797-b4baddab81fb 1 2049 2130 ----- This was happening because we were starting the element before determining if node was present, and were not closing it or clearing it when not finding the node in the dict. To fix this, the element is only started once a node has been found in the dict. Change-Id: I6b6205f14b27a69adb95d85db7b48999aa48d400 BUG: 1046020 Signed-off-by: Kaushal M Reviewed-on: http://review.gluster.org/6571 Reviewed-by: Aravinda VK Reviewed-by: Krishnan Parthasarathi Tested-by: Gluster Build System Reviewed-by: Vijay Bellur --- cli/src/cli-xml-output.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/cli/src/cli-xml-output.c b/cli/src/cli-xml-output.c index fe0969a30..69fed1bc9 100644 --- a/cli/src/cli-xml-output.c +++ b/cli/src/cli-xml-output.c @@ -251,6 +251,11 @@ cli_xml_output_vol_status_common (xmlTextWriterPtr writer, dict_t *dict, } *node_present = _gf_true; + /* + * will be closed in the calling function cli_xml_output_vol_status()*/ + ret = xmlTextWriterStartElement (writer, (xmlChar *)"node"); + XML_RET_CHECK_AND_GOTO (ret, out); + ret = xmlTextWriterWriteFormatElement (writer, (xmlChar *)"hostname", "%s", hostname); XML_RET_CHECK_AND_GOTO (ret, out); @@ -1662,11 +1667,6 @@ cli_xml_output_vol_status (cli_local_t *local, dict_t *dict) index_max = brick_index_max + other_count; for (i = 0; i <= index_max; i++) { - /* */ - ret = xmlTextWriterStartElement (local->writer, - (xmlChar *)"node"); - XML_RET_CHECK_AND_GOTO (ret, out); - ret = cli_xml_output_vol_status_common (local->writer, dict, i, &online, &node_present); if (ret) { @@ -1732,7 +1732,8 @@ cli_xml_output_vol_status (cli_local_t *local, dict_t *dict) break; } - /* */ + + /* was opened in cli_xml_output_vol_status_common()*/ ret = xmlTextWriterEndElement (local->writer); XML_RET_CHECK_AND_GOTO (ret, out); } -- cgit