コード例 #1
0
def getSoftwareEnviron(package, environ=None):
    """
    Check shared and local Area for the given package and return 
    the new environ dictionary
  """
    if environ == None:
        environ = dict(os.environ)
    elif type(environ) == DictType:
        environ = dict(environ)
    else:
        return DIRAC.S_ERROR('environ argument must be a dictionary')

    gLogger.notice('Getting environment for', package)

    for area in [workingArea(), sharedArea(), localArea()]:
        if area:
            if not checkSoftwarePackage(package, area)['OK']:
                continue
            fileName = _getEnvFileName(package, area)
            base = os.path.splitext(fileName)[0]
            gLogger.info('Sourcing file to get environment:', fileName)
            result = DIRAC.sourceEnv(TIMEOUT, [base], environ)
            if not result['OK']:
                return result
            if result['stdout']:
                gLogger.info(result['stdout'])
            return DIRAC.S_OK(result['outputEnv'])

    # If we get here it means the package has not been found
    return DIRAC.S_ERROR('Failed to get Environment')
コード例 #2
0
  def setupWorkflow(self, debug=False):
    """ Setup job workflow by defining the sequence of all executables
        All parameters shall have been defined before that method is called.
    """

    # step 1 -- to be removed -- debug only
    iStep = 1
    if debug:
        lsStep = self.setExecutable( '/bin/ls -alhtr', logFile = 'LS_Init_Log.txt' )
        lsStep['Value']['name']='Step%i_LS_Init'%iStep
        lsStep['Value']['descr_short']='list files in working directory'
        iStep+=1
      
    # step 2  
    swStep = self.setExecutable( '$DIRACROOT/scripts/cta-prod3-setupsw',
                              arguments='%s %s'% (self.package, self.version),\
                              logFile='SetupSoftware_Log.txt')
    swStep['Value']['name'] = 'Step%i_SetupSoftware' % iStep
    swStep['Value']['descr_short'] = 'Setup software'
    iStep+=1

    # step 2bis
    # arguments are nbFiles=0 (not used) and fileSize=100kB
    inStep = self.setExecutable( '$DIRACROOT/scripts/cta-prod3-verifysteps', \
                              arguments = 'analysisinputs 0 100', \
                              logFile = 'Verify_ReadCtaInputs_Log.txt' )
    inStep['Value']['name'] = 'Step%i_VerifyReadCtaInputs' % iStep
    inStep['Value']['descr_short'] = 'Verify ReadCta Inputs'
    iStep += 1

    # step 3
    res = DIRAC.sourceEnv(600, ['prod3_types'], {} )
    read_cta_opts=res['outputEnv']['read_cta_opts']

    rctaStep = self.setExecutable( './dirac_prod3_read_cta', \
                                   arguments = "-q -r 4 -u --min-trg-tel 2 %s" % (read_cta_opts),
                                logFile = 'ReadCta_Log.txt' )
    rctaStep['Value']['name'] = 'Step%i_ReadCta' % iStep
    rctaStep['Value']['descr_short'] = 'Run ReadCta'
    iStep += 1

    # step 4
    # ## the order of the metadata dictionary is important, since it's used to build the directory structure
    mdjson = json.dumps( self.metadata )

    metadatafield = {'array_layout':'VARCHAR(128)', 'site':'VARCHAR(128)', 'particle':'VARCHAR(128)', \
                         'phiP':'float', 'thetaP': 'float', 'analysis_prog':'VARCHAR(128)', 'analysis_prog_version':'VARCHAR(128)'}

    mdfieldjson = json.dumps( metadatafield )

    fmdjson = json.dumps( self.filemetadata )

    ## Upload Data files
    dmStep = self.setExecutable( '$DIRACROOT/CTADIRAC/Core/scripts/cta-analysis-managedata.py',
                              arguments = "'%s' '%s' '%s' %s '%s' %s" % ( mdjson, mdfieldjson, fmdjson, self.basepath, self.outputpattern, self.package ),
                              logFile = 'DataManagement_Log.txt' )
    dmStep['Value']['name'] = 'Step%i_DataManagement' % iStep
    dmStep['Value']['descr_short'] = 'Save files to SE and register them in DFC'
    iStep += 1

    # Upload Histogram files and use 'Log' as outputType
    self.outputpattern = './*hdata-dst0.gz'

    dmStep = self.setExecutable( '$DIRACROOT/CTADIRAC/Core/scripts/cta-analysis-managedata.py',
                              arguments = "'%s' '%s' '%s' %s '%s' %s %s" % ( mdjson, mdfieldjson, fmdjson, self.basepath, self.outputpattern, self.package, 'Log'),
                              logFile = 'DataManagement_Log.txt' )
    dmStep['Value']['name'] = 'Step%i_DataManagement' % iStep
    dmStep['Value']['descr_short'] = 'Save files to SE and register them in DFC'
    iStep += 1