X-Git-Url: http://git.onelab.eu/?p=sface.git;a=blobdiff_plain;f=sface%2Fsfiprocess.py;h=089c7393c2d3fa501c2ad1c6c63e30deab4b4f29;hp=00f9df374e1e5c4d3c150d3b28dca48a83a494d6;hb=5a487f5551aff6228d7615a85ff4c84a54d98e85;hpb=44743e4122a7a015518988f8b5ef07aca9a5f01e diff --git a/sface/sfiprocess.py b/sface/sfiprocess.py index 00f9df3..089c739 100644 --- a/sface/sfiprocess.py +++ b/sface/sfiprocess.py @@ -44,7 +44,7 @@ class SfiProcess(QObject): self.connect(self.process, SIGNAL("readyReadStandardError()"), self.processStandardError) - def __init_command(self, args): + def __init_command(self, args, save_filename=None): self.args = QStringList() self.args << "-d" self.args << config.get_dirname() @@ -63,6 +63,8 @@ class SfiProcess(QObject): else: self.raw_filename = None + self.save_filename = save_filename + for arg in args: self.args << QString(arg) @@ -111,9 +113,9 @@ class SfiProcess(QObject): self.raw_data = None if (self.raw_filename != None) and os.path.exists(self.raw_filename): if hasattr(json, "loads"): - self.raw_data = json.loads(open(self.raw_filename,"r").read()) + self.raw_data = json.loads(open(self.raw_filename,"r").read()) # python 2.6 else: - self.raw_data = json.read(open(self.raw_filename,"r").read()) + self.raw_data = json.read(open(self.raw_filename,"r").read()) # python 2.5 os.remove(self.raw_filename) @@ -124,6 +126,18 @@ class SfiProcess(QObject): self.geni_code = code.get("geni_code",None) self.geni_output = self.raw_data.get("output","") + if self.save_filename: + value = self.raw_data.get("value", None) + if value == None: + if os.path.exists(self.save_filename): + os.remove(self.save_filename) + elif type(value) == str: + open(self.save_filename, "w").write(value) + elif hasattr(json, "dumps"): + open(self.save_filename, "w").write(json.dumps(value)) # python 2.6 + else: + open(self.save_filename, "w").write(json.write(value)) # python 2.5 + # extract any faults from the XMLRPC response(s) self.xmlrpcreader.responses = [] self.xmlrpcreader.store(self.output) @@ -207,9 +221,15 @@ class SfiProcess(QObject): self.__init_command(args) self.start() - def getRecord(self, hrn, filename=None): - args = ["-u", config.getUser(), "-a", config.getAuthority(), - "-r", config.getRegistry(), "-s", config.getSlicemgr(), "show", hrn] + def getRecord(self, hrn, type=None, filename=None): + args = ["-u", config.getUser(), + "-a", config.getAuthority(), + "-r", config.getRegistry(), + "-s", config.getSlicemgr(), + "show", hrn] + if type: + args.append("-t") + args.append(type) if filename: args.append("-o") args.append(filename) @@ -217,10 +237,10 @@ class SfiProcess(QObject): self.start() def getSliceRecord(self): - self.getRecord(config.getSlice(), config.getSliceRecordFile()) + self.getRecord(config.getSlice(), type="slice", filename=config.getSliceRecordFile()) def getAuthorityRecord(self): - self.getRecord(config.getAuthority(), config.getAuthorityRecordFile()) + self.getRecord(config.getAuthority(), filename=config.getAuthorityRecordFile()) def applyRSpec(self, rspec, aggAddr=None, aggPort=None, saveObtained=True): # that's what we pass, like in what we'd like to get @@ -295,8 +315,8 @@ class SfiProcess(QObject): args = ["-u", config.getUser(), "-a", config.getAuthority(), "-r", config.getRegistry(), "-s", config.getSlicemgr(), "status", - "-o", filename, "-F", "pickled", slice] - self.__init_command(args) + slice] + self.__init_command(args, save_filename = filename) self.start() def getSliceMgrVersion(self, filename=None):