fence_wti: Unable to parse output when splitted into several screens
PATCH 1/2 fence_wti: Unable to parse output when splitted into several screens
From: Marek 'marx' Grac <[email protected]>
Parsing of listing that consists of several screens added.
Resolves: rhbz#678522
--- fence/agents/wti/fence_wti.py | 28 +++++++++++++++++++++++----- 1 files changed, 23 insertions(+), 5 deletions(-)
fence/agents/wti/fence_wti.py +23 -5
@@ -22,9 +22,26 @@ BUILD_DATE="March, 2008" #END_VERSION_GENERATION def get_power_status(conn, options): - try: + listing = "" + + try: + conn.send("/S"+"\r\n") + + if isinstance(options["-c"], list): + re_all = options["-c"] + else: + re_all = [options["-c"]] + re_next = re.compile("Enter: ", re.IGNORECASE) + re_all.append(re_next) + conn.send("/S"+"\r\n") - conn.log_expect(options, options["-c"], int(options["-Y"])) + result = conn.log_expect(options, re_all, int(options["-Y"])) + listing = conn.before + if result == (len(re_all) - 1): + conn.send("\r\n") + conn.log_expect(options, options["-c"], int(options["-Y"])) + listing += conn.before + except pexpect.EOF: fail(EC_CONNECTION_LOST) except pexpect.TIMEOUT:
@@ -32,8 +49,8 @@ def get_power_status(conn, options): plug_section = 0 outlets = {} - for line in conn.before.splitlines(): - if (plug_section == 2) and line.find("|") >= 0: + for line in listing.splitlines(): + if (plug_section == 2) and line.find("|") >= 0 and line.startswith("PLUG") == False: plug_line = [x.strip().lower() for x in line.split("|")] if len(plug_line) < len(plug_header): plug_section = -1
@@ -42,7 +59,8 @@ def get_power_status(conn, options): return plug_line[status_index] else: ## We already believe that first column contains plug number - outlets[plug_line[0]] = (plug_line[name_index], plug_line[status_index]) + if len(plug_line[0]) != 0: + outlets[plug_line[0]] = (plug_line[name_index], plug_line[status_index]) elif (plug_section == 1): plug_section = 2 pass
Signature · 1 line
1.7.4
PATCH 2/2 fence_wti: Unable to parse output when splitted into several screens (2/2)
From: Marek 'marx' Grac <[email protected]>
Minor changes to previous patch. Power ON/OFF now works as expected
Resolves: rhbz#678522
--- fence/agents/wti/fence_wti.py | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-)
fence/agents/wti/fence_wti.py +1 -2
@@ -28,13 +28,12 @@ def get_power_status(conn, options): conn.send("/S"+"\r\n") if isinstance(options["-c"], list): - re_all = options["-c"] + re_all = list(options["-c"]) else: re_all = [options["-c"]] re_next = re.compile("Enter: ", re.IGNORECASE) re_all.append(re_next) - conn.send("/S"+"\r\n") result = conn.log_expect(options, re_all, int(options["-Y"])) listing = conn.before if result == (len(re_all) - 1):
Signature · 1 line
1.7.4
PATCH 2/2 fence_wti: Unable to parse output when splitted into several screens (2/2)
Quoted 18 lines · Fabio M. Di Nitto
From: Marek 'marx' Grac <[email protected]>
Minor changes to previous patch. Power ON/OFF now works as expected
Resolves: rhbz#678522
--- fence/agents/wti/fence_wti.py | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-)fence/agents/wti/fence_wti.py +0
-1@@ -28,13 +28,12 @@ def get_power_status(conn, options): conn.send("/S"+"\r\n") if isinstance(options["-c"], list): - re_all = options["-c"]
fence/agents/wti/fence_wti.py def get_power_status(conn, options): · line 39
Quoted 10 lines
fence/agents/wti/fence_wti.py +1
-1+ re_all = list(options["-c"]) else: re_all = [options["-c"]] re_next = re.compile("Enter: ", re.IGNORECASE) re_all.append(re_next) - conn.send("/S"+"\r\n") result = conn.log_expect(options, re_all, int(options["-Y"])) listing = conn.before if result == (len(re_all) - 1):
Ack
Signature · 1 line
Lon Hohberger - Red Hat, Inc.
PATCH 1/2 fence_wti: Unable to parse output when splitted into several screens
In reply to Fabio M. Di NittoQuoted 4 lines · Fabio M. Di Nitto
From: Marek 'marx' Grac <[email protected]>
Parsing of listing that consists of several screens added.
ACK
Signature · 1 line
Lon Hohberger - Red Hat, Inc.