From 592fd52d5889cf8a46727b3609cdff60e9ef5c00 Mon Sep 17 00:00:00 2001 From: Milind Changire Date: Thu, 27 Oct 2016 22:53:43 +0530 Subject: tools/glusterfind: xml parsing fix for tiered volumes gluster volume info --xml for non-tiered volumes have 'bricks/brick' elements under the 'volInfo/volumes/volume' element. However, tiered volumes have a 'bricks/hotBricks/brick' and 'bricks/coldBricks/brick' elements under the 'volInfo/volumes/volume' element. Fix main.py::get_nodes() BUG: 1389481 Change-Id: I2f4465bfa8a55e7fa87917d3ec3e69b05d5241b9 Signed-off-by: Milind Changire Reviewed-on: http://review.gluster.org/15746 NetBSD-regression: NetBSD Build System CentOS-regression: Gluster Build System Smoke: Gluster Build System Reviewed-by: Aravinda VK --- tools/glusterfind/src/main.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'tools') diff --git a/tools/glusterfind/src/main.py b/tools/glusterfind/src/main.py index 0c993f50db3..f051314b6dc 100644 --- a/tools/glusterfind/src/main.py +++ b/tools/glusterfind/src/main.py @@ -265,13 +265,22 @@ def get_nodes(volume): # this status is used in caller: run_cmd_nodes vol_statusStr = tree.find('volInfo/volumes/volume/statusStr').text + vol_typeStr = tree.find('volInfo/volumes/volume/typeStr').text nodes = [] volume_el = tree.find('volInfo/volumes/volume') try: - for b in volume_el.findall('bricks/brick'): - nodes.append((b.find('hostUuid').text, - b.find('name').text)) + brick_elems = [] + if vol_typeStr == "Tier": + brick_elems.append('bricks/hotBricks/brick') + brick_elems.append('bricks/coldBricks/brick') + else: + brick_elems.append('bricks/brick') + + for elem in brick_elems: + for b in volume_el.findall(elem): + nodes.append((b.find('hostUuid').text, + b.find('name').text)) except (ParseError, AttributeError, ValueError) as e: fail("Failed to parse Volume Info: %s" % e, logger=logger) -- cgit