git://git.onelab.eu
/
sface.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
70e72bd
)
parse xmlrpc responses from sfa
author
smbaker
<smbaker@fc8clean.lan>
Tue, 6 Sep 2011 10:30:22 +0000
(
03:30
-0700)
committer
smbaker
<smbaker@fc8clean.lan>
Tue, 6 Sep 2011 10:30:22 +0000
(
03:30
-0700)
sface/sfiprocess.py
patch
|
blob
|
history
diff --git
a/sface/sfiprocess.py
b/sface/sfiprocess.py
index
f794c63
..
b6c5f04
100644
(file)
--- a/
sface/sfiprocess.py
+++ b/
sface/sfiprocess.py
@@
-5,7
+5,7
@@
import time
from PyQt4.QtCore import *
from sface.config import config
from PyQt4.QtCore import *
from sface.config import config
-from sface.xmlrpcwindow import XmlrpcTracker
+from sface.xmlrpcwindow import XmlrpcTracker
, XmlrpcReader
def find_executable(exec_name):
"""find the given executable in $PATH"""
def find_executable(exec_name):
"""find the given executable in $PATH"""
@@
-28,7
+28,8
@@
class SfiProcess(QObject):
self.connect(self.process, SIGNAL("finished(int, QProcess::ExitStatus)"),
self.processFinished)
self.connect(self.process, SIGNAL("finished(int, QProcess::ExitStatus)"),
self.processFinished)
- self.xmlrpctracker = XmlrpcTracker()
+ self.xmlrpcreader = XmlrpcReader() # this one is for parsing XMLRPC responses
+ self.xmlrpctracker = XmlrpcTracker() # this one is for the debug window
# holds aggregate output from processStandardOutput(); used by xmlrpc
# tracker.
# holds aggregate output from processStandardOutput(); used by xmlrpc
# tracker.
@@
-44,9
+45,11
@@
class SfiProcess(QObject):
self.args << "-d"
self.args << config.get_dirname()
self.args << "-d"
self.args << config.get_dirname()
- if config.debug:
- # this shows xmlrpc conversation, see sfi.py docs.
- self.args << QString('-D')
+ # this shows xmlrpc conversation, see sfi.py docs.
+ # always do this, so we can parse the XML result for faults and show
+ # then to the users.
+ self.args << QString('-D')
+
for arg in args:
self.args << QString(arg)
for arg in args:
self.args << QString(arg)
@@
-83,6
+86,14
@@
class SfiProcess(QObject):
print "ReadError"
elif err == QProcess.UnknownError:
print "UnknownError"
print "ReadError"
elif err == QProcess.UnknownError:
print "UnknownError"
+
+ # extract any faults from the XMLRPC response(s)
+ self.xmlrpcreader.responses = []
+ self.xmlrpcreader.store(self.output)
+ self.xmlrpcreader.extractXml()
+ self.responses = self.xmlrpcreader.responses
+ self.faults = [x for x in self.responses if (x["kind"]=="fault")]
+
self.trace_end()
self.emit(SIGNAL("finished()"))
self.trace_end()
self.emit(SIGNAL("finished()"))
@@
-174,6
+185,8
@@
class SfiProcess(QObject):
self.start()
def start(self):
self.start()
def start(self):
+ self.respones = []
+ self.faults = []
self.output = ""
self.trace_command()
self.process.start(self.exe, self.args)
self.output = ""
self.trace_command()
self.process.start(self.exe, self.args)