コード例 #1
0
ファイル: tri_driver.py プロジェクト: jiaolongsun/TRI_Scripts
    def manageJob(self, jobFile, baseDir):
        #we will want to capture the process exit code and SGE number
        jobNumberSGE = -1

        #load the job file
        jsonData = open(jobFile)
        fileData = json.load(jsonData)
        #logging.debug('%s - %s' % (getTimestamp(), fileData))

        #create the output folder
        if 'name' in fileData:
            outputFolder = '%s/%s' % (fileData['sample_folder'],
                                      fileData['name'])
        else:
            outputFolder = fileData['output_folder']
        logging.debug('%s - Creating output folder %s' %
                      (getTimestamp(), outputFolder))
        fileData['output_folder'] = outputFolder

        #see if it exists first
        if not os.path.exists(outputFolder):
            os.makedirs(outputFolder)

        #write the job template
        fileData['json_file'] = jobFile
        templateWriter = TemplateWriter(outputFolder, self.__softwareDirectory,
                                        self.__QCSettings, self.__sendEmail)
        analysisFile = templateWriter.writeTemplate(fileData)

        #now we can pass the job to be executed over to the job runner
        runner = Runner("CommandLine")
        logging.info('%s - Starting %s' % (getTimestamp(), analysisFile))
        fileData['status'] = 'submitted'
        fileData['output_folder'] = outputFolder
        # if the --requeue option was specified, update the queue
        if options.requeue:
            fileData['analysis']['settings']['queue'] = options.requeue

        # if the user specified a different software directory, set that here
        if 'software_directory' not in fileData[
                'analysis'] or self.__softwareDirectory != fileData[
                    'analysis']['software_directory']:
            fileData['analysis'][
                'software_directory'] = self.__softwareDirectory

        #update the json
        self.__updateJSON(jobFile, fileData)

        #submit the job to SGE
        sgeJobID = runner.submitToSGE('%s/job.sh' % (outputFolder), fileData)
        fileData['status'] = 'queued'
        fileData['sge_job_id'] = sgeJobID
        logging.info('%s - Submitted to SGE (%i)' % (getTimestamp(), sgeJobID))

        #update the json
        self.__updateJSON(jobFile, fileData)
コード例 #2
0
ファイル: tri_driver.py プロジェクト: dyermd/legos
    def manageJob(self, jobFile, baseDir):
        #we will want to capture the process exit code and SGE number
        jobNumberSGE = -1

        #load the job file
        jsonData = open(jobFile)
        fileData = json.load(jsonData)
        #logging.debug('%s - %s' % (getTimestamp(), fileData))

        #create the output folder
        if 'name' in fileData:
            outputFolder = '%s/%s' %(fileData['sample_folder'], fileData['name'])
        else:
            outputFolder = fileData['output_folder']
        logging.debug('%s - Creating output folder %s' % (getTimestamp(), outputFolder))
        fileData['output_folder'] = outputFolder

        #see if it exists first
        if not os.path.exists(outputFolder):
            os.makedirs(outputFolder)

        #write the job template
        fileData['json_file'] = jobFile
        templateWriter = TemplateWriter(outputFolder, self.__softwareDirectory)
        analysisFile = templateWriter.writeTemplate(fileData)

        #now we can pass the job to be executed over to the job runner
        runner = Runner("CommandLine")
        logging.info('%s - Starting %s' % (getTimestamp(), analysisFile))
        fileData['status'] = 'submitted'
        fileData['output_folder'] = outputFolder
		# if the --requeue option was specified, update the queue
        if options.requeue:
            fileData['analysis']['settings']['queue'] = options.requeue

        #update the json
        self.__updateJSON(jobFile, fileData)

        #submit the job to SGE
        sgeJobID = runner.submitToSGE('%s/job.sh' % (outputFolder), fileData)
        fileData['status'] = 'queued'
        fileData['sge_job_id'] = sgeJobID
        logging.info('%s - Submitted to SGE (%i)' % (getTimestamp(), sgeJobID))

        #update the json
        self.__updateJSON(jobFile, fileData)
コード例 #3
0
ファイル: tri_driver.py プロジェクト: yilmazOz/legos
    def manageJob(self, jobFile, baseDir):
        #we will want to capture the process exit code and SGE number
        jobNumberSGE = -1

        #load the job file
        jsonData = open(jobFile)
        fileData = json.load(jsonData)
        logging.debug('%s - %s' % (getTimestamp(), fileData))

        #create the output folder
        outputFolder = '%s/%s/%s/%s' % (baseDir, fileData['project'],
                                        fileData['sample'], fileData['name'])
        logging.debug('%s - Creating output folder %s' %
                      (getTimestamp(), outputFolder))
        fileData['output_folder'] = outputFolder

        #see if it exists first
        if not os.path.exists(outputFolder):
            os.makedirs(outputFolder)

        #write the job template
        fileData['json_file'] = jobFile
        templateWriter = TemplateWriter(outputFolder, self.__softwareDirectory)
        analysisFile = templateWriter.writeTemplate(fileData)

        #now we can pass the job to be executed over to the job runner
        runner = Runner("CommandLine")
        logging.info('%s - Starting %s' % (getTimestamp(), analysisFile))
        fileData['status'] = 'submitted'
        fileData['output_folder'] = outputFolder

        #update the json
        self.__updateJSON(jobFile, fileData)

        #submit the job to SGE
        sgeJobID = runner.submitToSGE('%s/job.sh' % (outputFolder), fileData)
        fileData['status'] = 'queued'
        fileData['sge_job_id'] = sgeJobID
        logging.info('%s - Submitted to SGE (%i)' % (getTimestamp(), sgeJobID))

        #update the json
        self.__updateJSON(jobFile, fileData)
コード例 #4
0
 def __init__(self, w, simbolico, minuto, tiempo):
     Thread.__init__(self)
     self.name = 'CreateCert'
     self.loop = Event()
     #evento para crear el titulo
     self.doit = Event()
     #inicializa en set el evento
     self.doit.set()
     #instancia de WatchAndPost
     self.watcher = w
     self.api = WebApi()
     self.tw = TemplateWriter(template='base65.jinja')
     self.ca = Certificate_generator('keys/generador.key',
                                     'keys/generador.crt')
     self.valor_simbolico = simbolico
     self.valor_minuto = minuto
     self.tiempo_trabajo = tiempo
コード例 #5
0
class CreateCert(Thread):
    '''
    Clase que crea y firma los certificados criptograficos de cada titulo
    valor. Recibe en los parametros de inicializacion una instancia de la clase
    ``WatchAndPost`` para poder actualizar tanto el capital como el numero de
    titulos emitidos.

    :param w: Instancia de la clase ``WatchAndPost``
    :param simbolico: porcentaje del valor simbolico
    :param minuto: valor del minuto de trabajo
    :param tiempo: tiempo de trabajo de realizacion de cada bono

    '''
    def __init__(self, w, simbolico, minuto, tiempo):
        Thread.__init__(self)
        self.name = 'CreateCert'
        self.loop = Event()
        #evento para crear el titulo
        self.doit = Event()
        #inicializa en set el evento
        self.doit.set()
        #instancia de WatchAndPost
        self.watcher = w
        self.api = WebApi()
        self.tw = TemplateWriter(template='base65.jinja')
        self.ca = Certificate_generator('keys/generador.key',
                                        'keys/generador.crt')
        self.valor_simbolico = simbolico
        self.valor_minuto = minuto
        self.tiempo_trabajo = tiempo

    def run(self):
        '''
        Esta funcion corre en el fondo hasta ser llamada para crear el
        certificado -cuando llega un dato del puerto serial-. Internamente
        realiza los calculos del porcentaje a agregar al capital y actualiza
        los valores en el estado global del sistema.

        '''
        while not self.loop.is_set():
            #mantiene vivo el thread
            self.loop.wait(0.01)

    def quit(self):
        '''
        Cambia el flag interno para terminar la funcion ``self.run()`` y
        terminar el Thread
        '''
        self.loop.set()

    def create(self):
        logging.debug('generando certificado')
        logging.debug('numero de titulos %s', self.watcher.num_titulos_emitidos)

        #toma el tiempo y suma uno a los titulos
        now = datetime.datetime.now()
        self.watcher.setNumTitulosPlus()
        new_num = self.watcher.num_titulos_emitidos

        #actualiza el valor del capital
        percentage = (self.valor_minuto * self.valor_simbolico) / 100
        addToCapital = percentage * self.tiempo_trabajo
        self.watcher.setCapital(addToCapital)

        logging.debug('>>> valuacion: %s', addToCapital)
        logging.debug('nuevo numero de titulos %s', new_num)

        CA_response = self.ca.generate_and_sign('CO', 'Bogota', 'Bogota',
                        'generador de valores', 'generador de certificados',
                        str(new_num).zfill(9), new_num)

        logging.debug('certificado: %s', CA_response)

        source = self.tw.createSource(CA_response['certificate'], CA_response['digest'],
                        str(new_num).zfill(9), now)

        new_post = self.api.post_valor(new_num, now,
                        CA_response['certificate'],
                        CA_response['key'],
                        source)
        logging.debug('nuevo cert', new_post)
        #al finalizar vuelve a poner el set en el evento
        #self.doit.set()

        return source