horizontal layout for slice and refresh labels
[sface.git] / sface / sfiprocess.py
1
2 from PyQt4.QtCore import *
3 from sface.sficonfig import config
4
5 def find_executable(exec_name):
6     """find the given executable in $PATH"""
7     paths = os.getenv("PATH").split(':')
8     for p in paths:
9         exec_path = os.path.join(p, exec_name)
10         if os.path.exists(exec_path):
11             return exec_path
12     return None
13
14
15 class SfiProcess(QObject):
16     def __init__(self, parent=None):
17         QObject.__init__(self, parent)
18
19     def __init_command(self, args)
20         self.args = QStringList()
21         for arg in args:
22             self.args << QString(arg)
23
24         self.exe = find_executable("sfi.py")
25         self.process = QProcess()
26
27         finished = pyqtSignal()
28         self.connect(self.process, SIGNAL("finished(int, QProcess::ExitStatus)"),
29                      self.finished)
30
31     def __getRSpec(self, mgr):
32         slice = config.getSlice()
33         # Write RSpec to file for testing.
34         filename = os.path.expanduser("~/.sfi/" + slice + ".rspec")
35         try:
36             os.remove(filename)
37         except:
38             pass
39         args = ["-u", config.getUser(), "-a", config.getAuthority(), 
40                 "-r", config.registry(), "-s", mgr, "resources", 
41                 "-o", filename, slice]
42
43         self.__init_command(args)
44         self.start()
45         return filename
46
47     def getRSpecFromSM(self):
48         return self.__getRSpec(config.slicemgr())
49
50     def getRSpecFromAM(self):
51         return self.__getRSpec(config.aggmgr())
52
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)
57         self.start()
58
59     def start(self):
60         self.process(self.exe, self.args)
61
62     def readOutput(self):
63         if self.process.state() == QProcess.NotRunning:
64             return self.process.readAll()
65