diff options
| author | Milind Changire <mchangir@redhat.com> | 2016-10-27 22:53:43 +0530 | 
|---|---|---|
| committer | Aravinda VK <avishwan@redhat.com> | 2016-11-17 03:30:54 -0800 | 
| commit | 592fd52d5889cf8a46727b3609cdff60e9ef5c00 (patch) | |
| tree | 1e4951eb19635f897229fe40f76cddadcd75ab4e /tools | |
| parent | b7ebffbda9ba784ccfae6d1a90766d5310cdaa15 (diff) | |
tools/glusterfind: xml parsing fix for tiered volumes
gluster volume info <vol> --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 <mchangir@redhat.com>
Reviewed-on: http://review.gluster.org/15746
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Smoke: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: Aravinda VK <avishwan@redhat.com>
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/glusterfind/src/main.py | 15 | 
1 files changed, 12 insertions, 3 deletions
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)  | 
