2 from PyQt4.QtCore import *
3 from sface.sficonfig import config
5 def find_executable(exec_name):
6 """find the given executable in $PATH"""
7 paths = os.getenv("PATH").split(':')
9 exec_path = os.path.join(p, exec_name)
10 if os.path.exists(exec_path):
15 class SfiProcess(QObject):
16 def __init__(self, parent=None):
17 QObject.__init__(self, parent)
19 def __init_command(self, args)
20 self.args = QStringList()
22 self.args << QString(arg)
24 self.exe = find_executable("sfi.py")
25 self.process = QProcess()
27 finished = pyqtSignal()
28 self.connect(self.process, SIGNAL("finished(int, QProcess::ExitStatus)"),
31 def __getRSpec(self, mgr):
32 slice = config.getSlice()
33 # Write RSpec to file for testing.
34 filename = os.path.expanduser("~/.sfi/" + slice + ".rspec")
39 args = ["-u", config.getUser(), "-a", config.getAuthority(),
40 "-r", config.registry(), "-s", mgr, "resources",
41 "-o", filename, slice]
43 self.__init_command(args)
47 def getRSpecFromSM(self):
48 return self.__getRSpec(config.slicemgr())
50 def getRSpecFromAM(self):
51 return self.__getRSpec(config.aggmgr())
53 def getRecord(self, hrn):
54 args = ["-u", config.getUser(), "-a", config.getAuthority(),
55 "-r", config.registry(), "-s", config.slicemgr(), "show", hrn]
56 self.__init_command(args)
60 self.process(self.exe, self.args)
63 if self.process.state() == QProcess.NotRunning:
64 return self.process.readAll()