diff options
| author | Michal (inc0) Jastrzebski <inc007@gmail.com> | 2016-04-22 14:44:54 +0000 |
|---|---|---|
| committer | Michal (inc0) Jastrzebski <inc007@gmail.com> | 2016-04-22 16:49:00 +0000 |
| commit | 22a07075d278d592bccfe9ca3fc1b670248d706d (patch) | |
| tree | 29b4d12b8e8043000712026ed9d1392253be8b16 /docker/rabbitmq | |
| parent | 39aec9498347e0dfae68f2e1b170a986a21b15b7 (diff) | |
| download | kolla-22a07075d278d592bccfe9ca3fc1b670248d706d.tar.gz kolla-22a07075d278d592bccfe9ca3fc1b670248d706d.zip | |
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
Diffstat (limited to 'docker/rabbitmq')
| -rw-r--r-- | docker/rabbitmq/rabbitmq_get_gospel_node.py | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/docker/rabbitmq/rabbitmq_get_gospel_node.py b/docker/rabbitmq/rabbitmq_get_gospel_node.py index 3925f00dd..4ab7dee9f 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 = { |
