File indexing completed on 2023-03-17 11:14:27
0001 from __future__ import print_function
0002 import re
0003 import os, sys, shutil
0004 import subprocess
0005 """
0006 A simple helper script that provided with no arguments dumps a list of
0007 top-level keys, and provided with any key from this list as an argument,
0008 dumps a list of sub-keys and saves corresponding configuration to local
0009 files.
0010 """
0011
0012
0013 sqlplusCmd = ['env',
0014 'sqlplus',
0015 '-S',
0016 'cms_trg_r/@cms_omds_adg'
0017 ]
0018
0019 if hash( sqlplusCmd[-1] ) != 1687624727082866629:
0020 print('Do not forget to plug password to this script')
0021 print('Exiting.')
0022 exit(0)
0023
0024 myre = re.compile(r'(ID)|(-{80})')
0025
0026
0027 if len(sys.argv) == 1:
0028 sqlplus = subprocess.Popen(sqlplusCmd, shell=False, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
0029 print('No args specified, querying and printing only top-level keys:')
0030 for line in re.split('\n',sqlplus.communicate('select unique ID from CMS_TRG_L1_CONF.EMTF_KEYS;')[0]):
0031 if myre.search(line) == None :
0032 print(line)
0033 print('Pick any of these keys as an argument next time you run this script')
0034 exit(0)
0035
0036
0037 key = sys.argv[1]
0038
0039 sqlplus = subprocess.Popen(sqlplusCmd,
0040 shell=False,
0041 stdout=subprocess.PIPE,
0042 stdin=subprocess.PIPE
0043 )
0044
0045
0046 queryKey = "select EMTF_KEY from CMS_TRG_L1_CONF.L1_TRG_CONF_KEYS where ID='{0}'".format(key)
0047
0048 for line in re.split('\n',sqlplus.communicate(queryKey+';')[0]):
0049 print(line)
0050 if re.search('/v',line) :
0051 key=line
0052
0053 print(key)
0054
0055 queryKeys = """
0056 select
0057 INFRA_KEYS.MTF7 as MTF7, INFRA_KEYS.AMC13 as AMC13, TOP_KEYS.HW as HW, TOP_KEYS.ALGO as ALGO
0058 from
0059 CMS_TRG_L1_CONF.EMTF_INFRA_KEYS INFRA_KEYS
0060 inner join
0061 (
0062 select
0063 HW, INFRA, ALGO
0064 from
0065 CMS_TRG_L1_CONF.EMTF_KEYS
0066 where
0067 ID = '{0}'
0068 ) TOP_KEYS
0069 on
0070 TOP_KEYS.INFRA = INFRA_KEYS.ID
0071 """.format(key)
0072
0073
0074 batch = {
0075 'HW' : 'hw.xml',
0076 'ALGO' : 'algo.xml',
0077 'MTF7' : 'mtf7.xml',
0078 'AMC13' : 'amc13.xml'
0079 }
0080
0081
0082 for config,fileName in batch.items():
0083
0084 sqlplus = subprocess.Popen(sqlplusCmd, shell=False, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
0085 with open(fileName,'w') as f:
0086 query = """
0087 select
0088 CLOBS.CONF
0089 from
0090 CMS_TRG_L1_CONF.EMTF_CLOBS CLOBS, ({0}) KEY
0091 where
0092 CLOBS.ID = KEY.{1}
0093 """.format(queryKeys, config)
0094
0095 for line in re.split('\n',sqlplus.communicate('\n'.join(['set linesize 200', 'set longchunksize 200000 long 200000 pages 0',query+';']))[0]):
0096 f.write('\n')
0097 f.write(line)
0098 f.close()
0099
0100 sqlplus = subprocess.Popen(sqlplusCmd, shell=False, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
0101 print('Following keys were found:')
0102 for line in re.split('\n',sqlplus.communicate(queryKeys+';')[0]):
0103 print(line)
0104
0105
0106 print('Results are saved in ' + ' '.join(batch.values()) + ' files')
0107