Beispiel #1
0
 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));
Beispiel #2
0
 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__)
Beispiel #3
0
 def getAllMethods(self):
     logger.debug("Getting methods...")
     content = self._getAllMethodsAsText()
     contentAsDic = None
     try :
         contentAsDic = ast.literal_eval(content)
     except Exception, e:
         message = "The remote specs file does not appear to have a json format."
         logger.exception(message  + str(e))
         contentAsDic = Messages.error(message, str(e), self._functionsFilename );
Beispiel #4
0
 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));
Beispiel #5
0
 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));
Beispiel #6
0
 def getMethodsForThisInstrument(self):
     logger.debug("Getting methods...")
     content = self._getAllMethodsAsText()
     contentAsDic = None
     res = {}
     try :
         contentAsDic = ast.literal_eval(content)
         for k in contentAsDic.keys():
             if isinstance(contentAsDic[k],dict):
                 thisEntry = contentAsDic[k]
                 if thisEntry.has_key('instruments'):
                     if self._instrumentName in thisEntry['instruments']:
                         res[k]=contentAsDic[k]
     except Exception, e:
         message = "The remote specs file does not appear to have a json format."
         logger.exception(message  + str(e))
         res = Messages.error(message, str(e), self._functionsFilename );
Beispiel #7
0
    def validateQuery(self):
        '''
        Main function
        
        @return: Json with queryId + timeout for this function
        '''
        try :
            self._validateJson()
            self._validateFunctionName()
            self._validateExecutableAndTimeOut()
#             self._validateNumors()
            # return None if no problems
            return None
        
        except Exception, e:
            message = "Problems while validating the query..."
            logger.exception(message  + str(e))
            return Messages.error(message, str(e));
Beispiel #8
0
 def process(self):
     
     errors = self.validator.validateQuery()
     if errors is not None:
         logger.error("Problems while validating the query...")
         return errors
     else:
         try :
             logger.debug("Build query json")
             self.queryId = str(uuid.uuid4())
             
             queryJson = self._buildQuery()
             
             logger.debug("Build executable and params")
             inputParams = self._buildInputParams()
             queryJson['input_params'] = inputParams
         
             logger.debug("Insert query in the DB")
             self._storeInTheDB(queryJson)
             
             # This must be executed in thread!!
             t = threading.Thread(target=self._executeQueryInParallel, args=(inputParams,))
             t.start()
             ####
                             
             # Return
             successMessageStr = self.jsonSuccessTemplate%(self.queryId,
                                                           self.validator.timeout,
                                                           self.validator.executable)
             logger.debug("Message to send to the client:" + successMessageStr)
             
             return ast.literal_eval(successMessageStr)
         except Exception, e:
             message = "Problems while processing the query..."
             logger.exception(message  + str(e))
             return Messages.error(message, str(e));