Skip to content

Commit

Permalink
Merge pull request #9514 from fwyzard/confdbOfflineConverter_v2
Browse files Browse the repository at this point in the history
add support for ConfDB v2 to hltConfigFromDB
  • Loading branch information
cmsbuild committed Jun 10, 2015
2 parents c91ccf2 + b448ff6 commit 13f1a1c
Showing 1 changed file with 93 additions and 26 deletions.
119 changes: 93 additions & 26 deletions HLTrigger/Configuration/python/Tools/confdbOfflineConverter.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,38 @@

class OfflineConverter:

# the machine aliases and interfaces for the *online* database are
# cmsonr1-s.cms, cmsonr2-s.cms, cmsonr3-s.cms
# cmsonr1-v.cms, cmsonr2-v.cms, cmsonr3-v.cms
# but the -s and -v interfaces resolve to the same hosts.
# The actual machines and interfaces are
# CMSRAC11-S.cms, CMSRAC12-S.cms, CMSRAC21-S.cms
# CMSRAC11-V.cms, CMSRAC12-V.cms, CMSRAC21-V.cms

# the possible machines and interfaces for the *offline* database are
# cmsr1-s.cms, cmsr2-s.cms, cmsr3-s.cms
# cmsr1-v.cms, cmsr2-v.cms, cmsr3-v.cms
# but the -s and -v interfaces resolve to the same hosts
# The actual machines and interfaces are
# itrac50011-s.cern.ch, itrac50063-s.cern.ch, itrac50078-s.cern.ch
# itrac50011-v.cern.ch, itrac50063-v.cern.ch, itrac50078-v.cern.ch

versions = {}
versions['v1'] = ( 'ojdbc6.jar', 'cmssw-evf-confdb-converter.jar' )
#versions['v2'] = ( 'ojdbc6.jar', 'cmssw-evf-confdb-converter-v02-01-02.jar' )
versions['v2'] = ( 'ojdbc6.jar', 'cmssw-evf-confdb-converter-v02-02-04.jar' )

databases = {}
databases['orcoff'] = ( '-t', 'oracle', '-h', 'cmsr1-s.cern.ch', '-d', 'cms_cond.cern.ch', '-u', 'cms_hlt_gui_r', '-s', 'convertme!' )
databases['hltdev'] = ( '-t', 'oracle', '-h', 'cmsr1-s.cern.ch', '-d', 'cms_cond.cern.ch', '-u', 'cms_hltdev_reader', '-s', 'convertme!' )
databases['v1'] = {}
databases['v1']['offline'] = ( '-t', 'oracle', '-h', 'cmsr1-s.cern.ch', '-d', 'cms_cond.cern.ch', '-u', 'cms_hltdev_reader', '-s', 'convertme!' )
databases['v1']['hltdev'] = databases['v1']['offline'] # for backwards compatibility
databases['v1']['online'] = ( '-t', 'oracle', '-h', 'cmsonr1-s.cms', '-d', 'cms_rcms.cern.ch', '-u', 'cms_hlt_r', '-s', 'convertme!' )
databases['v1']['adg'] = ( '-t', 'oracle', '-h', 'cmsr1-s.cern.ch', '-d', 'cms_cond.cern.ch', '-u', 'cms_hlt_gui_r', '-s', 'convertme!' )
databases['v1']['orcoff'] = databases['v1']['adg'] # for backwards compatibility
databases['v2'] = {}
databases['v2']['offline'] = ( '-t', 'oracle', '-h', 'cmsr1-s.cern.ch', '-d', 'cms_cond.cern.ch', '-u', 'cms_hlt_gdr_r', '-s', 'convertme!' )
databases['v2']['online'] = ( '-t', 'oracle', '-h', 'cmsonr1-s.cms', '-d', 'cms_rcms.cern.ch', '-u', 'cms_hlt_gdr_r', '-s', 'convertme!' )
databases['v2']['adg'] = ( '-t', 'oracle', '-h', 'cmsonradg1-s.cern.ch', '-d', 'cms_orcon_adg.cern.ch', '-u', 'cms_hlt_gdr_r', '-s', 'convertme!' )


@staticmethod
Expand All @@ -25,20 +54,28 @@ def CheckTempDirectory(dir):
return dir


def __init__(self, database = 'hltdev', url = None, verbose = False):
def __init__(self, version = 'v1', database = 'hltdev', url = None, verbose = False):
self.verbose = verbose
self.version = version
self.baseDir = '/afs/cern.ch/user/c/confdb/www/lib'
self.baseUrl = 'http://confdb.web.cern.ch/confdb/lib'
self.jars = ( 'ojdbc6.jar', 'cmssw-evf-confdb-converter.jar' )
self.workDir = ''

# check the schema version
if version in self.databases:
# pick the jars based on the database version
self.jars = self.versions[version]
else:
# unsupported database version
sys.stderr.write( "ERROR: unsupported database version \"%s\"\n" % version)

# check the database
if database in self.databases:
if database in self.databases[version]:
# load the connection parameters for the given database
self.connect = self.databases[database]
self.connect = self.databases[version][database]
else:
# unsupported database
sys.stderr.write( "ERROR: unknown database \"%s\"\n" % database)
sys.stderr.write( "ERROR: unknown database \"%s\" for version \"%s\"\n" % (database, version))
sys.exit(1)

# check for a custom base URL
Expand Down Expand Up @@ -99,11 +136,17 @@ def query(self, *args):
def help():
sys.stdout.write("""Usage: %s OPTIONS
--hltdev|--orcoff (target db [default: hltdev])
--v1|--v2 (specify the ConfDB version [default: v1])
--offline|--online|--adg (specify the target db [default: offline])
--configId <id> (specify configuration by id)
--configName <name> (specify configuration by name)
--runNumber <run> (specify configuration by run)
Note that for v1
--orcoff is a synonim of --adg
--offline is a synonim of --hltdev
--configId <id> (specify the configuration by id)
--configName <name> (specify the configuration by name)
--runNumber <run> (specify the configuration by run number)
[exactly one of --configId OR --configName OR --runNumber is required]
--cff (retrieve configuration *fragment*)
Expand Down Expand Up @@ -135,12 +178,16 @@ def help():
--sequences <s1[,s2]> (include sequences, referenced or not!)
--modules <p1[,p2]> (include modules, referenced or not!)
--blocks <m1::p1[,p2][,m2]> (generate parameter blocks)
--verbose (print additional details)
""")


def main():
args = sys.argv[1:]
db = 'hltdev'
version = 'v1'
db = 'hltdev'
verbose = False

if not args:
help()
Expand All @@ -150,26 +197,46 @@ def main():
help()
sys.exit(0)

if '--orcoff' in args and '--hltdev' in args:
sys.stderr.write( "ERROR: conflicting database specifications \"--hltdev\" and \"--orcoff\"\n" )
sys.exit(1)
if '--verbose' in args:
verbose = True
args.remove('--verbose')

if '--runNumber' in args and '--hltdev' in args:
sys.stderr.write( "ERROR: conflicting database specifications \"--hltdev\" and \"--runNumber\"\n" )
if '--v1' in args and '--v2' in args:
sys.stderr.write( "ERROR: conflicting database version specifications \"--v1\" and \"--v2\"\n" )
sys.exit(1)

if '--hltdev' in args:
db = 'hltdev'
args.remove('--hltdev')
if '--v1' in args:
version = 'v1'
db = 'hltdev'
args.remove('--v1')

if '--orcoff' in args:
db = 'orcoff'
args.remove('--orcoff')
if '--v2' in args:
version = 'v2'
db = 'offline'
args.remove('--v2')

if '--runNumber' in args:
db = 'orcoff'
_dbs = {}
_dbs['v1'] = [ '--%s' % _db for _db in OfflineConverter.databases['v1'] ] + [ '--runNumber' ]
_dbs['v2'] = [ '--%s' % _db for _db in OfflineConverter.databases['v2'] ] + [ '--runNumber' ]
_dbargs = set(args) & set(sum(_dbs.values(), []))

if _dbargs:
if len(_dbargs) > 1:
sys.stderr.write( "ERROR: too many database specifications: \"" + "\", \"".join( _dbargs) + "\"\n" )
sys.exit(1)

_arg = _dbargs.pop()
db = _arg[2:]
if db == 'runNumber':
db = 'adg'
else:
args.remove(_arg)

if not db in OfflineConverter.databases[version]:
sys.stderr.write( "ERROR: database version \"%s\" incompatible with specification \"%s\"\n" % (version, db) )
sys.exit(1)

converter = OfflineConverter(database = db)
converter = OfflineConverter(version = version, database = db, verbose = verbose)
out, err = converter.query( * args )
if 'ERROR' in err:
sys.stderr.write( "%s: error while retriving the HLT menu\n\n%s\n\n" % (sys.argv[0], err) )
Expand Down

0 comments on commit 13f1a1c

Please sign in to comment.