CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2/src/DQM/TrackerCommon/bin/getRunRegistry.py

Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 
00003 # For documentation of the RR XML-RPC handler, look into https://twiki.cern.ch/twiki//bin/view/CMS/DqmRrApi
00004 
00005 import sys
00006 import xmlrpclib
00007 
00008 
00009 def displayHelp():
00010   print """
00011   getRunRegistry.py
00012 
00013   CMSSW package DQM/TrackerCommon
00014 
00015   Usage:
00016   $ getRunRegistry.py [ARGUMENTOPTION1] [ARGUMENT1] ... [OPTION2] ...
00017 
00018   Valid argument options are:
00019     -s
00020       API address of RunRegistry server
00021       default: 'https://pccmsdqm04.cern.ch/runregistry/xmlrpc'
00022     -T
00023       table identifier
00024       available: 'RUN', 'RUNLUMISECTION'
00025       default: 'RUN'
00026     -w
00027       work space identifier
00028       available: 'RPC', 'HLT', 'L1T', 'TRACKER', 'CSC', 'GLOBAL', 'ECAL'
00029       default: 'GLOBAL'
00030     -t
00031       output format type
00032       available:
00033         - table 'RUN'           : 'chart_runs_cum_evs_vs_bfield', 'chart_runs_cum_l1_124_vs_bfield', 'chart_stacked_component_status', 'csv_datasets', 'csv_run_numbers', 'csv_runs', 'tsv_datasets', 'tsv_runs', 'xml_all', 'xml_datasets'
00034         - table 'RUNLUMISECTION': 'json', 'xml'
00035       default: 'xml_all' (for table 'RUN')
00036     -f
00037       output file
00038       default: 'runRegistry.xml'
00039     -l
00040       lower bound of run numbers to consider
00041       default: '0'
00042     -u
00043       upper bound of run numbers to consider
00044       default: '1073741824'
00045 
00046   Valid options are:
00047     -h
00048       display this help and exit
00049   """
00050 
00051 
00052 # Option handling (very simple, no validity checks)
00053 sOptions = {
00054   '-s': 'https://pccmsdqm04.cern.ch/runregistry/xmlrpc' # RunRegistry API proxy server
00055 , '-T': 'RUN'                                          # table
00056 , '-w': 'GLOBAL'                                       # workspace
00057 , '-t': 'xml_all'                                      # output format type
00058 , '-f': 'runRegistry.xml'                              # output file
00059 , '-l': '0'                                            # lower bound of run numbers to consider
00060 , '-u': '1073741824'                                   # upper bound of run numbers to consider
00061 }
00062 bOptions = {
00063   '-h': False # help option
00064 }
00065 iArgument  = 0
00066 for token in sys.argv[ 1:-1 ]:
00067   iArgument = iArgument + 1
00068   if token in sOptions.keys():
00069     if not sys.argv[ iArgument + 1 ] in sOptions.keys() and not sys.argv[ iArgument + 1 ] in bOptions.keys():
00070       del sOptions[ token ]
00071       sOptions[ token ] = sys.argv[ iArgument + 1 ]
00072 for token in sys.argv[ 1: ]:
00073   if token in bOptions.keys():
00074     del bOptions[ token ]
00075     bOptions[ token ] = True
00076 if bOptions[ '-h' ]:
00077   displayHelp()
00078   sys.exit( 0 )
00079 
00080 # Data extraction and local storage
00081 # initialise API access to defined RunRegistry proxy
00082 server = xmlrpclib.ServerProxy( sOptions[ '-s' ] )
00083 # get data according to defined table, workspace and output format type
00084 runs = '{runNumber} >= ' + sOptions[ '-l' ] + 'and {runNumber} <= ' + sOptions[ '-u' ]
00085 data = server.DataExporter.export( sOptions[ '-T' ], sOptions[ '-w' ], sOptions[ '-t' ], runs )
00086 # write data to file
00087 file = open( sOptions[ '-f' ], 'w' )
00088 file.write( data )
00089 file.close()