From b63771f1c874864441ae82abc00422fb369905f7 Mon Sep 17 00:00:00 2001 From: "Michal (inc0) Jastrzebski" Date: Fri, 22 Apr 2016 14:44:54 +0000 Subject: [PATCH] Robustify of rabbitmq upgrade String parsing for gospel node detection was overly complex and not robust. Hopefully this will make it better. Closes-bug: #1573684 Change-Id: I12e869eff274d286d239c4f55cc4b4ddca389bbd --- docker/rabbitmq/rabbitmq_get_gospel_node.py | 23 +++++++-------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/docker/rabbitmq/rabbitmq_get_gospel_node.py b/docker/rabbitmq/rabbitmq_get_gospel_node.py index 3925f00dd6..4ab7dee9f8 100644 --- a/docker/rabbitmq/rabbitmq_get_gospel_node.py +++ b/docker/rabbitmq/rabbitmq_get_gospel_node.py @@ -13,17 +13,12 @@ # limitations under the License. import json -import re import subprocess import traceback -def convert_erlang_to_json(term): - term = re.sub('[\s+]', '', term) - term = re.sub('([<>].*?)}', r'"\1"}', term) - term = re.sub('{([a-z].*?),', r'{"\1":', term) - term = re.sub(':([a-z].*?)}', r':"\1"}', term) - return json.loads(term) +def extract_gospel_node(term): + return term.split("@")[1].translate(None, "\'\"{},") def main(): @@ -34,15 +29,11 @@ def main(): ) if "Rabbit is running in cluster configuration" not in raw_status: raise AttributeError - status = convert_erlang_to_json( - '\n'.join(raw_status.split('\n')[1:-3]) - ) - - gospel_node = None - for msg in status: - if 'gospel' in msg: - gospel_node = msg['gospel']['node'].split('@')[1] - if gospel_node is None: + gospel_line = [ + line for line in raw_status.split('\n') if 'gospel' in line + ][0] + gospel_node = extract_gospel_node(gospel_line) + if not gospel_node: raise AttributeError except AttributeError: result = {