Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-11-27 03:17:58

0001 import re
0002 import os, sys, shutil
0003 import subprocess
0004 """
0005 A simple helper script that provided with no arguments dumps a list of
0006 top-level keys, and provided with any key from this list as an argument,
0007 dumps a list of sub-keys and saves corresponding configuration to local
0008 files.
0009 """
0010 
0011 # connection string
0012 sqlplusCmd = ['env',
0013               'sqlplus',
0014               '-S',
0015               'cms_trg_r/@cms_omds_adg'
0016              ]
0017 
0018 if hash( sqlplusCmd[-1] ) != 1687624727082866629:
0019     print('Do not forget to plug password to this script')
0020     print('Exiting.')
0021     exit(0)
0022 
0023 myre = re.compile(r'(ID)|(-{80})')
0024 
0025 # if no arguments are given, query the top level keys only and exit
0026 if len(sys.argv) == 1:
0027     sqlplus = subprocess.Popen(sqlplusCmd, shell=False, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
0028     print('No args specified, querying and printing only top-level config keys:')
0029     for line in re.split('\n',sqlplus.communicate('select unique ID from CMS_TRG_L1_CONF.UGT_KEYS;')[0]):
0030         if myre.search(line) == None :
0031             print(line)
0032     sqlplus = subprocess.Popen(sqlplusCmd, shell=False, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
0033     print('No args specified, querying and printing only top-level Run Settings keys:')
0034     for line in re.split('\n',sqlplus.communicate('select unique ID from CMS_TRG_L1_CONF.UGT_RS_KEYS;')[0]):
0035         if myre.search(line) == None :
0036             print(line)
0037     print('Pick any of these keys as an argument next time you run this script')
0038     exit(0)
0039 
0040 # if an argument is given query the whole content of the key
0041 key = sys.argv[1]
0042 rsKey = sys.argv[2]
0043 
0044 # if the argument is the very top level key, querry the uGT specific subkey
0045 queryKey   = "select UGT_KEY    from CMS_TRG_L1_CONF.L1_TRG_CONF_KEYS where ID='{0}'".format(key)
0046 queryRsKey = "select UGT_RS_KEY from CMS_TRG_L1_CONF.L1_TRG_RS_KEYS   where ID='{0}'".format(rsKey)
0047 
0048 sqlplus = subprocess.Popen(sqlplusCmd, shell=False, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
0049 for line in re.split('\n',sqlplus.communicate(queryKey+';')[0]):
0050     print(line)
0051     if re.search('/v',line) :
0052         key=line
0053 
0054 sqlplus = subprocess.Popen(sqlplusCmd, shell=False, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
0055 for line in re.split('\n',sqlplus.communicate(queryRsKey+';')[0]):
0056     print(line)
0057     if re.search('/v',line) :
0058         rsKey=line
0059 
0060 print(key+":"+rsKey)
0061 
0062 queryKeys = """
0063             select
0064                 ALGOBX_MASK, ALGO_FINOR_MASK, ALGO_FINOR_VETO, ALGO_PRESCALE
0065             from
0066                 CMS_TRG_L1_CONF.UGT_RS_KEYS
0067             where
0068                 ID = '{0}'
0069             """.format(rsKey)
0070 
0071 with open("menu.xml",'w') as f:
0072     sqlplus = subprocess.Popen(sqlplusCmd, shell=False, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
0073     query = """
0074             select
0075                 CONF
0076             from
0077                 CMS_TRG_L1_CONF.UGT_L1_MENU MENU
0078             inner join
0079             (
0080             select
0081                 L1_MENU
0082             from
0083                 CMS_TRG_L1_CONF.UGT_KEYS
0084             where
0085                 ID = '{0}'
0086             ) TOP_KEYS
0087             on 
0088                 TOP_KEYS.L1_MENU = MENU.ID
0089             """.format(key)
0090     for line in re.split('\n',sqlplus.communicate('\n'.join(['set linesize 20000', 'set longchunksize 20000000 long 20000000 pages 0',query+';']))[0]):
0091         f.write('\n')
0092         f.write(line)
0093     f.close()
0094 
0095 # write results for specific configs to the following files
0096 batch = {
0097          'ALGOBX_MASK'     : 'algobx_mask.xml',
0098          'ALGO_FINOR_MASK' : 'algo_finor_mask.xml',
0099          'ALGO_FINOR_VETO' : 'algo_finor_veto.xml',
0100          'ALGO_PRESCALE'   : 'algo_prescale.xml'
0101         }
0102 
0103 # do the main job here
0104 for config,fileName in batch.items():
0105 
0106     sqlplus = subprocess.Popen(sqlplusCmd, shell=False, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
0107     with open(fileName,'w') as f:
0108         query = """
0109                 select
0110                     CLOBS.CONF
0111                 from
0112                     CMS_TRG_L1_CONF.UGT_RS_CLOBS CLOBS, ({0}) KEY
0113                 where
0114                     CLOBS.ID = KEY.{1}
0115                 """.format(queryKeys, config)
0116 
0117         for line in re.split('\n',sqlplus.communicate('\n'.join(['set linesize 200', 'set longchunksize 200000 long 200000 pages 0',query+';']))[0]):
0118             f.write('\n')
0119             f.write(line)
0120         f.close()
0121 
0122 
0123 sqlplus = subprocess.Popen(sqlplusCmd, shell=False, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
0124 print('Following keys were found:')
0125 for line in re.split('\n',sqlplus.communicate(queryKeys+';')[0]):
0126     print(line)
0127 
0128 print('Results are saved in ' + ' '.join(batch.values()) + ' files')
0129