All of lore.kernel.org
 help / color / mirror / Atom feed
* [Cluster-devel] [PATCH 1/2] fence_wti: Unable to parse output when splitted into several screens
@ 2011-03-16 13:06 Fabio M. Di Nitto
  2011-03-16 13:06 ` [Cluster-devel] [PATCH 2/2] fence_wti: Unable to parse output when splitted into several screens (2/2) Fabio M. Di Nitto
  2011-03-16 13:58 ` [Cluster-devel] [PATCH 1/2] fence_wti: Unable to parse output when splitted into several screens Lon Hohberger
  0 siblings, 2 replies; 4+ messages in thread
From: Fabio M. Di Nitto @ 2011-03-16 13:06 UTC (permalink / raw)
  To: cluster-devel.redhat.com

From: Marek 'marx' Grac <mgrac@redhat.com>

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(-)

diff --git a/fence/agents/wti/fence_wti.py b/fence/agents/wti/fence_wti.py
index a71852a..d05676b 100644
--- a/fence/agents/wti/fence_wti.py
+++ b/fence/agents/wti/fence_wti.py
@@ -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
-- 
1.7.4



^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2011-03-16 13:58 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-16 13:06 [Cluster-devel] [PATCH 1/2] fence_wti: Unable to parse output when splitted into several screens Fabio M. Di Nitto
2011-03-16 13:06 ` [Cluster-devel] [PATCH 2/2] fence_wti: Unable to parse output when splitted into several screens (2/2) Fabio M. Di Nitto
2011-03-16 13:57   ` Lon Hohberger
2011-03-16 13:58 ` [Cluster-devel] [PATCH 1/2] fence_wti: Unable to parse output when splitted into several screens Lon Hohberger

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.