File indexing completed on 2023-03-17 11:14:28
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 config keys:')
0030 for line in re.split('\n',sqlplus.communicate('select unique ID from CMS_TRG_L1_CONF.UGMT_KEYS;')[0]):
0031 if myre.search(line) == None :
0032 print(line)
0033 sqlplus = subprocess.Popen(sqlplusCmd, shell=False, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
0034 print('No args specified, querying and printing only top-level Run Settings keys:')
0035 for line in re.split('\n',sqlplus.communicate('select unique ID from CMS_TRG_L1_CONF.UGMT_RS_KEYS;')[0]):
0036 if myre.search(line) == None :
0037 print(line)
0038 print('Pick any of these keys as an argument next time you run this script')
0039 exit(0)
0040
0041
0042 key = sys.argv[1]
0043 rsKey = sys.argv[2]
0044
0045
0046 queryKey = "select UGMT_KEY from CMS_TRG_L1_CONF.L1_TRG_CONF_KEYS where ID='{0}'".format(key)
0047 queryRsKey = "select UGMT_RS_KEY from CMS_TRG_L1_CONF.L1_TRG_RS_KEYS where ID='{0}'".format(rsKey)
0048
0049 sqlplus = subprocess.Popen(sqlplusCmd, shell=False, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
0050 for line in re.split('\n',sqlplus.communicate(queryKey+';')[0]):
0051 print(line)
0052 if re.search('/v',line) :
0053 key=line
0054
0055 sqlplus = subprocess.Popen(sqlplusCmd, shell=False, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
0056 for line in re.split('\n',sqlplus.communicate(queryRsKey+';')[0]):
0057 print(line)
0058 if re.search('/v',line) :
0059 rsKey=line
0060
0061 print(key+":"+rsKey)
0062
0063 queryKeys = """
0064 select
0065 TOP.HW as HW, ALGO.MP7 as MP7, ALGO.LUTS as LUTS, RS.MP7 as MP7_RS, RS.MP7_MONI as MP7_MONI, RS.AMC13_MONI as AMC13_MONI
0066 from
0067 CMS_TRG_L1_CONF.UGMT_KEYS TOP, CMS_TRG_L1_CONF.UGMT_RS_KEYS RS,
0068 (
0069 select
0070 ID, MP7, LUTS
0071 from
0072 CMS_TRG_L1_CONF.UGMT_ALGO_KEYS
0073 ) ALGO
0074 where
0075 TOP.ID = '{0}' and RS.ID = '{1}' and ALGO.ID = TOP.ALGO
0076 """.format(key,rsKey)
0077
0078
0079 batch = {
0080 'HW' : 'hw.xml',
0081 'MP7' : 'mp7.xml',
0082 'LUTS' : 'luts.xml',
0083 'MP7_RS' : 'mp7_rs.xml',
0084 'MP7_MONI' : 'mp7_moni.xml',
0085 'AMC13_MONI' : 'amc13_moni.xml'
0086 }
0087
0088
0089 for config,fileName in batch.items():
0090
0091 sqlplus = subprocess.Popen(sqlplusCmd, shell=False, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
0092 with open(fileName,'w') as f:
0093 query = """
0094 select
0095 CLOBS.CONF
0096 from
0097 CMS_TRG_L1_CONF.UGMT_CLOBS CLOBS, ({0}) KEY
0098 where
0099 CLOBS.ID = KEY.{1}
0100 """.format(queryKeys, config)
0101
0102 for line in re.split('\n',sqlplus.communicate('\n'.join(['set linesize 200', 'set longchunksize 200000 long 200000 pages 0',query+';']))[0]):
0103 f.write('\n')
0104 f.write(line)
0105 f.close()
0106
0107
0108 sqlplus = subprocess.Popen(sqlplusCmd, shell=False, stdout=subprocess.PIPE, stdin=subprocess.PIPE)
0109 print('Following keys were found:')
0110 for line in re.split('\n',sqlplus.communicate(queryKeys+';')[0]):
0111 print(line)
0112
0113 print('Results are saved in ' + ' '.join(batch.values()) + ' files')
0114