22 logging.debug(
str(args))
25 with open(args.cfgfile)
as cfgfile:
26 cfglines = cfgfile.read()
27 logging.debug(cfglines)
30 job_file =
'cfg_{type}_{run}.py'.
format(type=args.analyzer, run=args.since)
31 output_db =
'{type}_{run}.db'.
format(type=args.analyzer, run=args.since)
32 if os.path.exists(output_db):
33 logging.info(
'Output sqlite file %s already exists! Deleting...' % output_db)
35 hashmap_db =
'hashmap_{type}_{run}.db'.
format(type=args.analyzer, run=args.since)
36 if os.path.exists(hashmap_db):
37 logging.info(
'Hashmap sqlite file %s already exists! Deleting...' % hashmap_db)
39 replace_dict = {
'_CFGLINES_' : cfglines.replace(
'\\',
''),
40 '_ANALYZER_' : args.analyzer,
41 '_USEANALYSIS_':
'False',
42 '_CONDDB_' : args.condDbRead,
43 '_DBFILE_' :
'sqlite:///%s' % output_db,
44 '_TARGETTAG_': args.inputTag,
45 '_RUNNUMBER_': args.since,
46 '_HASHMAPDB_': args.hashmapDb,
47 '_MAPDBFILE_':
'sqlite:///%s' % hashmap_db,
50 if args.analyzer ==
'SiStripO2OApvGain':
54 with open(args.skiplistFile)
as skipfile:
55 skipped = skipfile.read()
57 logging.warning(
'Skipped module list not provided! No module will be skipped...')
58 replace_dict[
'_USEANALYSIS_'] =
'True' 59 replace_dict[
'_SKIPPED_'] = skipped
60 replace_dict[
'_HASHMAPDB_'] =
'' 61 replace_dict[
'_MAPDBFILE_'] =
'' 64 for basedir
in os.environ[
'CMSSW_SEARCH_PATH'].
split(
':'):
65 templatefile = os.path.join(basedir, cfg_template)
66 if os.path.exists(templatefile):
67 logging.info(
'Use template config file %s' % templatefile)
69 config = helper.insert_to_file(templatefile, job_file, replace_dict)
70 logging.info(
'Start running O2O...')
71 logging.debug(
' ... config:\n%s\n' % config)
74 command =
'cmsRun %s' % job_file
75 pipe = subprocess.Popen(command, shell=
True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
76 atexit.register(partial(helper.kill_subproc_noexcept, pipe))
77 out = pipe.communicate()[0]
78 logging.info(
'\n%s\n' % out)
79 logging.info(
'@@@CMSSW job return code = %d@@@' % pipe.returncode)
80 if pipe.returncode != 0:
81 raise RuntimeError(
'O2O job FAILED!')
85 logging.info(
'Will not run uploading as requested!')
88 f = helper.upload_payload
90 f = helper.copy_payload
91 f(dbFile=output_db, inputTag=args.inputTag, destTags=args.destTags, destDb=args.destDb, since=args.since,
92 userText=
'{type}, run: {run}'.
format(type=args.analyzer, run=args.since))
95 if args.analyzer ==
'SiStripO2OApvGain':
96 logging.info(
'Writting bookkeeping info to database.')
97 dbmgr = DbManagerGain(args.bookkeeping_db)
98 dbmgr.update_gain_logs(args.since, job_file)
100 logging.info(
'Updating config-to-payload hash map to database.')
101 dbmgr = DbManagerDAQ(args.bookkeeping_db)
102 dbmgr.update_hashmap(hashmap_db)
107 os.remove(output_db.replace(
'.db',
'.txt'))
108 os.remove(hashmap_db)