def __init__(self, configFiles): from gcSettings import Settings for configFile in configFiles: fp = SafeFile(configFile) try: utils.execWrapper(fp.read(), {'Settings': Settings}) finally: fp.close() DictConfigFiller.__init__(self, Settings.getConfigDict())
def _processCfg(self, tar, cfg): cfgSummary = {} cfgContent = bytes2str(tar.extractfile('%s/config' % cfg).read()) cfgHashResult = bytes2str(tar.extractfile('%s/hash' % cfg).read()).splitlines() cfgHash = cfgHashResult[-1].strip() cfgSummary = {'CMSSW_CONFIG_FILE': cfg, 'CMSSW_CONFIG_HASH': cfgHash} cfgSummary['CMSSW_CONFIG_CONTENT'] = self._cfgStore.setdefault(cfgSummary[self._mergeKey], cfgContent) # Read global tag from config file - first from hash file, then from config file if cfgHash not in self._gtStore: gtLines = lfilter(lambda x: x.startswith('globaltag:'), cfgHashResult) if gtLines: self._gtStore[cfgHash] = gtLines[-1].split(':')[1].strip() if cfgHash not in self._gtStore: try: cfgContentEnv = utils.execWrapper(cfgContent) self._gtStore[cfgHash] = cfgContentEnv['process'].GlobalTag.globaltag.value() except Exception: self._gtStore[cfgHash] = 'unknown:All' cfgSummary['CMSSW_GLOBALTAG'] = self._gtStore[cfgHash] # Get annotation from config content def searchConfigFile(key, regex, default): try: tmp = re.compile(regex).search(cfgContent.group(1).strip('\"\' ')) except Exception: tmp = None if tmp: cfgSummary[key] = tmp else: cfgSummary[key] = default searchConfigFile('CMSSW_ANNOTATION', r'.*annotation.*=.*cms.untracked.string.*\((.*)\)', None) searchConfigFile('CMSSW_DATATIER', r'.*dataTier.*=.*cms.untracked.string.*\((.*)\)', 'USER') cfgReport = xml.dom.minidom.parseString(bytes2str(tar.extractfile('%s/report.xml' % cfg).read())) evRead = sum(imap(lambda x: int(readTag(x, 'EventsRead')), cfgReport.getElementsByTagName('InputFile'))) return (cfgSummary, cfgReport, evRead)