X-Git-Url: http://git.onelab.eu/?p=sface.git;a=blobdiff_plain;f=sface%2Fsfiprocess.py;h=35f0ca9d8650f7a8df42ffd12390bf6e1641e221;hp=cfa11093f6fb2929bfae463bd12df5f57a1a43fc;hb=d7a2606ffd441335cd25b0185cb077c6cb91e795;hpb=7bc9576fe11f712b7ff8b5565bf5ad8d59ff06ab diff --git a/sface/sfiprocess.py b/sface/sfiprocess.py index cfa1109..35f0ca9 100644 --- a/sface/sfiprocess.py +++ b/sface/sfiprocess.py @@ -1,5 +1,6 @@ import os +import pickle import sys import time @@ -63,7 +64,15 @@ class SfiProcess(QObject): output = self.process.readAllStandardOutput() self.output = self.output + output if config.debug: - print output + try: + print output + except IOError, e: + if (e.errno == 4): + # XXX why is this happening?? + print "*** caught EINTR" + else: + raise + def processStandardError(self): print self.process.readAllStandardError() @@ -174,7 +183,7 @@ class SfiProcess(QObject): def getAuthorityRecord(self): self.getRecord(config.getAuthority(), config.getAuthorityRecordFile()) - def applyRSpec(self, rspec): + def applyRSpec(self, rspec, aggAddr=None, aggPort=None, saveObtained=True): # that's what we pass, like in what we'd like to get requested = config.getSliceRSpecFile() + "_new" # that's what we actually receive @@ -182,9 +191,31 @@ class SfiProcess(QObject): obtained = config.getSliceRSpecFile() rspec.save(requested) args = ["-u", config.getUser(), "-a", config.getAuthority(), - "-r", config.getRegistry(), "-s", config.getSlicemgr(), "create", - "-o", obtained, - config.getSlice(), requested] + "-r", config.getRegistry(), "-s", config.getSlicemgr(), "create"] + + if saveObtained: + args = args + ["-o", obtained] + + if aggAddr: + args = args + ["-a", aggAddr, "-p", str(aggPort)] + + args = args + [config.getSlice(), requested] + + self.__init_command(args) + self.start() + + def deleteSlivers(self, slice=None, aggAddr=None, aggPort=None): + if not slice: + slice = config.getSlice() + + args = ["-u", config.getUser(), "-a", config.getAuthority(), + "-r", config.getRegistry(), "-s", config.getSlicemgr(), "delete"] + + if aggAddr: + args = args + ["-a", aggAddr, "-p", str(aggPort)] + + args = args + [slice] + self.__init_command(args) self.start() @@ -200,6 +231,12 @@ class SfiProcess(QObject): self.__init_command(args) self.start() + def removeRecord(self, hrn): + args = ["-u", config.getUser(), "-a", config.getAuthority(), + "-r", config.getRegistry(), "-s", config.getSlicemgr(), "remove", hrn] + self.__init_command(args) + self.start() + def renewSlivers(self, expiration, slice=None): if not slice: slice = config.getSlice() @@ -210,6 +247,29 @@ class SfiProcess(QObject): self.__init_command(args) self.start() + def sliverStatus(self, slice=None, filename=None): + if not slice: + slice = config.getSlice() + + if not filename: + filename = config.fullpath(slice+".sliverstatus") + + args = ["-u", config.getUser(), "-a", config.getAuthority(), + "-r", config.getRegistry(), "-s", config.getSlicemgr(), "status", + "-o", filename, "-F", "pickled", slice] + self.__init_command(args) + self.start() + + def getSliceMgrVersion(self, filename=None): + if not filename: + filename = config.fullpath("slicemgr.version") + + args = ["-u", config.getUser(), "-a", config.getAuthority(), + "-r", config.getRegistry(), "-s", config.getSlicemgr(), "version", + "-o", filename, "-F", "pickled",] + self.__init_command(args) + self.start() + def start(self): self.respones = [] self.faults = []