def _buildInputParams(self): ''' Necessary input params for Lamp and Mantid Some redundancy is introduced as scripts read different formats ''' params = {} params["instrument"] = configParser.get("General", "instrument_name") if self.validator.jsonContent.has_key("params") : queryParams = self.validator.jsonContent["params"] if queryParams.has_key("numors"): # list of numors: listOfNumorsText = queryParams["numors"] # TODO : We have to handle this for numor ranges listOfNumors = listOfNumorsText.split(',') db = storage.getDBConnection() listOfFiles = db.getListOfFiles(listOfNumors) if len(listOfFiles) <= 0: raise Exception("The numors %s don't exist in the DB"%listOfNumors) elif len(listOfFiles) > 1: params["data_files_full_path"]=listOfFiles params["data_files"] = [] for i in listOfFiles: b = os.path.basename(i) params["data_files"].append(b) else: params["data_file_full_path"]=listOfFiles[0] params["data_file"] = os.path.basename(listOfFiles[0]) # Assuming all files in the same folder params["working_path"] = os.path.dirname(listOfFiles[0]) logger.debug(pprint.pformat(params)) return params
def validateFile(self,numor): handlerManager = Manager(self.content) fileHandler = handlerManager.getRespectiveHandler() if fileHandler is None: return Messages.error("File/URL received is not valid.", "Neither ASCII, Nexus nor valid URL."); else: db = storage.getDBConnection() db.insertOrUpdateNumor(numor, fileHandler.filename()) return Messages.success("File/URL successfully received.", "The content is: " + fileHandler.__class__.__name__)
def _storeExecutableResults(self,resultingJson): queryJson = {} logger.debug("storeExecutableResults") logger.debug(pprint.pformat(resultingJson)) queryJson["result"] = resultingJson queryJson["status"] = "done" queryJson["end_time"] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f") queryJson["end_local_time"] = time.asctime(time.localtime(time.time())) db = storage.getDBConnection() db.updateQuery(self.queryId, queryJson)
def getQueries(self): logger.debug("Getting status for all queries...") db = storage.getDBConnection() res = db.getAllQueries() if res is None or len(res) < 1 : message = "The status of queries is empty. Were any queries submitted?" logger.error(message) return Messages.error(message, self.queryId); else: try: return simplejson.dumps(res) except Exception, e: message = "Problems while return Status json..." logger.exception(message + str(e)) return Messages.error(message, str(e));
def getQuery(self): logger.debug("Getting results for query id = " + self.queryId) db = storage.getDBConnection() res = db.getQuery(self.queryId) if len(res) != 1 : message = "Result for query id %s is multiple (len = %d)!!!"%(self.queryId,len(res)) logger.error(message) return Messages.error(message, self.queryId); else: try: dicContent = res[0] dicContent["max_seconds_to_finish"] = self._getSecondsToFinish(dicContent) jsonContent = simplejson.dumps(dicContent) return jsonContent except Exception, e: message = "Problems validating json results for query id %s..."%self.queryId logger.exception(message + str(e)) return Messages.error(message, str(e));
def testDatabase(self): db = storage.getDBConnection() for i in range(1000,1003): db.insertOrUpdateNumor(i,"/tmp/file_%d.nxs"%i) for i in range(1000,1003): db.insertOrUpdateNumor(i,"/tmp/file_%d.nxs"%(i+10)) # real db.insertOrUpdateNumor(102296,"/home/leal/Documents/Mantid/IN5/2013-02-08/102296.nxs") for i in range(1000,1003): db.insertQuery({"queryId" : i*10, "numors" : [1000,1001] , "timeout":30}) l = db.getListOfAllNumors() print l for i in range(1000,1003) : self.assertIn(i, l) l = db.getListOfFiles([1000, 1001, 1002, 44235, 1234]) print l self.assertIn('/tmp/file_1010.nxs', l)
def getQueryZipped(self): logger.debug("Getting results zipped for query id = " + self.queryId) db = storage.getDBConnection() res = db.getQuery(self.queryId) if len(res) != 1 : message = "Zipped result for query id %s is multiple (len = %d)!!!"%(self.queryId,len(res)) logger.error(message) return Messages.error(message, self.queryId); else: try: logger.debug("Zipping results for query id = " + self.queryId) dicContent = res[0] dicContent["max_seconds_to_finish"] = self._getSecondsToFinish(dicContent) jsonContent = simplejson.dumps(dicContent) logger.debug("Original content size: %d"%len(jsonContent)) jsonContentZipped = zlib.compress(jsonContent) logger.debug("Zipped content size: %d"%len(jsonContentZipped)) return jsonContentZipped except Exception, e: message = "Problems validating json results for zipped query id %s."%self.queryId logger.exception(message + str(e)) return Messages.error(message, str(e));
def _storeInTheDB(self,queryJson): db = storage.getDBConnection() db.insertQuery(queryJson)