Exemple #1
0
    def publishAJobReport(self, file, procdataset):
        """
           input:  xml file, processedDataset
        """
        common.logger.debug("FJR = %s" % file)
        try:
            jobReport = readJobReport(file)[0]
            self.exit_status = '0'
        except IndexError:
            self.exit_status = '1'
            msg = "Error: Problem with " + file + " file"
            raise CrabException(msg)
        ### skip publication for 0 events files
        filestopublish = []
        for file in jobReport.files:
            #### added check for problem with copy to SE and empty lfn
            if (string.find(file['LFN'], 'copy_problems') != -1):
                self.problemFiles.append(file['LFN'])
            elif (file['LFN'] == ''):
                self.noLFN.append(file['PFN'])
            else:
                if int(file['TotalEvents']) == 0:
                    self.noEventsFiles.append(file['LFN'])
                for ds in file.dataset:
                    ### Fede for production
                    if (ds['PrimaryDataset'] == 'null'):
                        ds['PrimaryDataset'] = self.userprocessedData
                filestopublish.append(file)

        jobReport.files = filestopublish
        for file in filestopublish:
            common.logger.debug("--->>> LFN of file to publish =  " +
                                str(file['LFN']))
        ### if all files of FJR have number of events = 0
        if (len(filestopublish) == 0):
            return None

        #// DBS to contact
        dbswriter = DBSWriter(self.DBSURL)
        # insert files
        Blocks = None
        try:
            ### FEDE added insertDetectorData = True to propagate in DBS info about run and lumi
            Blocks = dbswriter.insertFiles(jobReport, insertDetectorData=True)
            #Blocks=dbswriter.insertFiles(jobReport)
            common.logger.debug("--->>> Inserting file in blocks = %s" %
                                Blocks)
        except DBSWriterError, ex:
            common.logger.debug("--->>> Insert file error: %s" % ex)
Exemple #2
0
 def publishAJobReport(self,file,procdataset):
     """
        input:  xml file, processedDataset
     """
     common.logger.debug("FJR = %s"%file)
     try:
         jobReport = readJobReport(file)[0]
         self.exit_status = '0'
     except IndexError:
         self.exit_status = '1'
         msg = "Error: Problem with "+file+" file"
         raise CrabException(msg)
     ### skip publication for 0 events files
     filestopublish=[]
     for file in jobReport.files:
         #### added check for problem with copy to SE and empty lfn
         if (string.find(file['LFN'], 'copy_problems') != -1):
             self.problemFiles.append(file['LFN'])
         elif (file['LFN'] == ''):
             self.noLFN.append(file['PFN'])
         else:
             if int(file['TotalEvents']) == 0:
                 self.noEventsFiles.append(file['LFN'])
             for ds in file.dataset:
                 ### Fede for production
                 if (ds['PrimaryDataset'] == 'null'):
                     ds['PrimaryDataset']=self.userprocessedData
             filestopublish.append(file)
    
     jobReport.files = filestopublish
     for file in filestopublish:
         common.logger.debug("--->>> LFN of file to publish =  " + str(file['LFN']))
     ### if all files of FJR have number of events = 0
     if (len(filestopublish) == 0):
         return None
        
     #// DBS to contact
     dbswriter = DBSWriter(self.DBSURL)
     # insert files
     Blocks=None
     try:
         ### FEDE added insertDetectorData = True to propagate in DBS info about run and lumi 
         Blocks=dbswriter.insertFiles(jobReport, insertDetectorData = True)
         #Blocks=dbswriter.insertFiles(jobReport)
         common.logger.debug("--->>> Inserting file in blocks = %s"%Blocks)
     except DBSWriterError, ex:
         common.logger.debug("--->>> Insert file error: %s"%ex)
jobReportFile['TotalEvents'] = nEvents
jobReportFile['SEName'] = "srm.cern.ch"

##jobReport.write('FrameworkJobReport.xml')

localDbsUrl = "https://cmst0dbs.cern.ch:8443/cms_dbs_prod_tier0_writer/servlet/DBSServlet"

dbswriter = DBSWriter(localDbsUrl,level='ERROR')

primary = DBSWriterObjects.createPrimaryDataset(datasetStrmr, dbswriter.dbs)

datasetStrmr['ApplicationName'] = appName
datasetStrmr['ApplicationVersion'] = appVersion
datasetStrmr['ApplicationFamily'] = 'DAQ'
datasetStrmr['PSetHash'] = 'NA'
datasetStrmr['PSetContent'] = 'NA'

algo = DBSWriterObjects.createAlgorithm(datasetStrmr, None, dbswriter.dbs)

processed = DBSWriterObjects.createProcessedDataset(primary, algo, datasetStrmr, dbswriter.dbs)

try:
    blocks = dbswriter.insertFiles(jobReport, insertDetectorData = True)
except DBSWriterError, ex:
    print "%s"%ex

# limit block size to 500
for blockName in blocks:
    dbswriter.manageFileBlock(blockName, maxFiles=500)