CMS 3D CMS Logo

Functions | Variables

getRunInfo Namespace Reference

Functions

def Func_CopyWBMInfo
 Func_CopyWBMInfo(str_name)
def Func_FillInfoDBS
 Func_FillInfoDBS(str_dbsInstance)
def Func_FillInfoHlt
 Func_FillInfoHlt()
def Func_FillInfoMagnetHistory
 Func_FillInfoMagnetHistory()
def Func_FillInfoRunRegistry
 Func_FillInfoRunRegistry()
def Func_FillInfoRunSummary
 Func_FillInfoRunSummary()
def Func_GetHtmlTags
 FUNCTIONS.
def Func_GetHtmlTagValue
 Func_GetHtmlTagValue(str_tag, str_text)
def Func_GetHtmlTagValueAttr
 Func_GetHtmlTagValueAttr(str_tag, str_text)
def Func_GetHtmlTagValues
 Func_GetHtmlTagValues(str_text)
def Func_GetWBMInfo
 Func_GetWBMInfo(str_name, str_path)
def Func_MakeShellWord
 Func_MakeShellWord(str_python)

Variables

 bool_hlt = False
tuple bool_runRegistry = Func_FillInfoRunRegistry()
dictionary Dict_dbsDatasets = {}
dictionary DICT_keysRunSummary = {}
dictionary DICT_keysRunSummaryTrigger = {}
dictionary Dict_maxLenDbsDatasets = {}
dictionary Dict_runRegistry = {}
dictionary DICT_tagsRunRegistry = {}
dictionary Dict_wbmRunSummary = {}
dictionary DictDict_dbsDatasets = {}
dictionary DictDict_dbsEvents = {}
float Float_magneticField = 999.0
tuple int_length = len(str_print)
int INT_offset = 8
list LSTR_dbsInstances
list Lstr_hltPaths = []
string STR_headDatasets = 'datasets'
string STR_headFiles = 'available data files'
string STR_htlConfig = 'HLT Config ID'
string STR_p5 = 'cmsusr0.cern.ch'
tuple Str_passwd = getpass.getpass('> getRunInfo.py > '+Str_userID+'@'+STR_p5+'\'s password: ')
string str_print = '> getRunInfo.py > '
list Str_run = sys.argv[1]
string STR_runEnd = 'STOP_TIME'
string STR_runStart = 'START_TIME'
string STR_SiStrip = 'SIST'
tuple Str_userID = getpass.getuser()
 MAIN PROGRAM.
string STR_wwwDBSData = 'dbs_discovery/getData'
string STR_wwwWBM = 'https://cmswbm/cmsdb/servlet'
tuple TD_shiftUTC = datetime.timedelta(hours = 2)

Function Documentation

def getRunInfo::Func_CopyWBMInfo (   str_name)

Func_CopyWBMInfo(str_name)

Logs in on cmsusr0 and copies file from there

Func_CopyWBMInfo(str_name)
Logs in on cmsusr0 and copies file from there

Definition at line 199 of file getRunInfo.py.

00200                               :
00201   """ Func_CopyWBMInfo(str_name)
00202   Logs in on cmsusr0 and copies file from there
00203   """
00204   pid, fd = os.forkpty()
00205   if pid == 0:
00206     os.execv('/usr/bin/scp', ['/usr/bin/scp', Str_userID+'@'+STR_p5+':~/'+str_name, '.'])
00207   else:
00208     time.sleep(1)
00209     os.read(fd, 1000)
00210     time.sleep(1)
00211     os.write(fd, Str_passwd)
00212     time.sleep(1)
00213     c = 0
00214     s = os.read(fd, 1)
00215     while s:
00216       c += 1
00217       s  = os.read(fd, 1)
00218       if c >= 163:
00219         break
  
def getRunInfo::Func_FillInfoDBS (   str_dbsInstance)

Func_FillInfoDBS(str_dbsInstance)

Retrieves run info from DBS and fills it into containers

Func_FillInfoDBS(str_dbsInstance)
Retrieves run info from DBS and fills it into containers

Definition at line 344 of file getRunInfo.py.

00345                                      :
00346   """ Func_FillInfoDBS(str_dbsInstance)
00347   Retrieves run info from DBS and fills it into containers
00348   """
00349   str_dbsRuns      = urllib.urlencode({'ajax':'0', '_idx':'0', 'pagerStep':'0', 'userMode':'user', 'release':'Any', 'tier':'Any', 'dbsInst':str_dbsInstance, 'primType':'Any', 'primD':'Any', 'minRun':Str_run, 'maxRun':Str_run})
00350   file_dbsRuns     = urllib.urlopen("https://cmsweb.cern.ch/dbs_discovery/getRunsFromRange", str_dbsRuns)
00351   lstr_dbsRuns     = []
00352   lstr_dbsDatasets = []
00353   dict_dbsDatasets = {}
00354   dict_dbsEvents   = {}
00355   for str_dbsRuns in file_dbsRuns.readlines():
00356     lstr_dbsRuns.append(str_dbsRuns)
00357     if str_dbsRuns.find(STR_wwwDBSData) >= 0:
00358       if str_dbsRuns.split('&proc=')[1].find('&') >= 0:
00359         lstr_dbsDatasets.append(str_dbsRuns.split('&proc=')[1].split('&')[0])
00360       else:
00361         lstr_dbsDatasets.append(str_dbsRuns.split('&proc=')[1])
00362   int_maxLenDbsDatasets = 0
00363   for str_dbsDataset in lstr_dbsDatasets:
00364     str_dbsLFN  = urllib.urlencode({'dbsInst':str_dbsInstance, 'blockName':'*', 'dataset':str_dbsDataset, 'userMode':'user', 'run':Str_run})
00365     file_dbsLFN = urllib.urlopen("https://cmsweb.cern.ch/dbs_discovery/getLFNlist", str_dbsLFN)
00366     lstr_dbsLFN = []
00367     int_events  = 0
00368     for str_dbsLFN in file_dbsLFN.readlines():
00369       lstr_dbsLFN.append(str_dbsLFN)
00370       if str_dbsLFN.find('contians') >= 0 and str_dbsLFN.find('file(s)'): # FIXME: be careful, this typo might be corrected sometimes on the web page...
00371         dict_dbsDatasets[str_dbsDataset] = str_dbsLFN.split()[1]
00372       if str_dbsLFN.startswith('/store/data/'):
00373         int_events += int(Func_GetHtmlTagValue('td' ,lstr_dbsLFN[len(lstr_dbsLFN)-4]))
00374     dict_dbsEvents[str_dbsDataset] = str(int_events)
00375     if len(str_dbsDataset) > int_maxLenDbsDatasets:
00376       int_maxLenDbsDatasets = len(str_dbsDataset)
00377   DictDict_dbsDatasets[str_dbsInstance]   = dict_dbsDatasets
00378   DictDict_dbsEvents[str_dbsInstance]     = dict_dbsEvents
00379   Dict_dbsDatasets[str_dbsInstance]       = lstr_dbsDatasets
00380   Dict_maxLenDbsDatasets[str_dbsInstance] = int_maxLenDbsDatasets
 
def getRunInfo::Func_FillInfoHlt ( )

Func_FillInfoHlt()

Retrieves run info from Hlt and fills it into containers

Func_FillInfoHlt():
Retrieves run info from Hlt and fills it into containers

Definition at line 320 of file getRunInfo.py.

00321                       :
00322   """ Func_FillInfoHlt():
00323   Retrieves run info from Hlt and fills it into containers
00324   """
00325   str_nameHlt = 'HLTConfiguration?KEY=' + Dict_wbmRunSummary[STR_htlConfig]
00326   Func_GetWBMInfo(str_nameHlt, STR_wwwWBM)
00327   Func_CopyWBMInfo(Func_MakeShellWord(str_nameHlt))
00328   file_wbmHlt     = file(str_nameHlt, 'r')
00329   bool_foundPaths = False
00330   bool_foundPath  = False
00331   for str_wbmHlt in file_wbmHlt.readlines():
00332     if str_wbmHlt.find('<H3>Paths</H3>') >= 0:
00333       bool_foundPaths = True
00334     if bool_foundPaths and str_wbmHlt.find('<HR><H3>') >= 0:
00335       bool_foundPaths = False
00336     if bool_foundPaths and str_wbmHlt.startswith('<TR><TD ALIGN=RIGHT>'):
00337       Lstr_hltPaths.append(str_wbmHlt.split('</TD>')[1].split('<TD>')[-1])
00338   file_wbmHlt.close()
00339   os.remove(str_nameHlt)
00340   return (len(Lstr_hltPaths)>0)
  
def getRunInfo::Func_FillInfoMagnetHistory (   str_timeStart,
  str_timeEnd 
)

Func_FillInfoMagnetHistory()

Retrieves run info from MagnetHistory and fills it into containers

Func_FillInfoMagnetHistory():
Retrieves run info from MagnetHistory and fills it into containers

Definition at line 301 of file getRunInfo.py.

00302                                                           :
00303   """ Func_FillInfoMagnetHistory():
00304   Retrieves run info from MagnetHistory and fills it into containers
00305   """
00306   str_nameMagnetHistory = 'MagnetHistory?TIME_BEGIN=' + str_timeStart + '&TIME_END=' + str_timeEnd
00307   Func_GetWBMInfo(str_nameMagnetHistory, STR_wwwWBM)
00308   Func_CopyWBMInfo(Func_MakeShellWord(str_nameMagnetHistory))
00309   file_wbmMagnetHistory = file(str_nameMagnetHistory, 'r')
00310   float_avMagMeasure = Float_magneticField
00311   for str_wbmMagnetHistory in file_wbmMagnetHistory.readlines():
00312     if str_wbmMagnetHistory.find('BFIELD, Tesla') >= 0:
00313       float_avMagMeasure = float(str_wbmMagnetHistory.split('</A>')[0].split('>')[-1])
00314   file_wbmMagnetHistory.close()
00315   os.remove(str_nameMagnetHistory)
00316   return float_avMagMeasure
  
def getRunInfo::Func_FillInfoRunRegistry ( )

Func_FillInfoRunRegistry()

Retrieves run info from RunRegistry and fills it into containers

Func_FillInfoRunRegistry():
Retrieves run info from RunRegistry and fills it into containers

Definition at line 223 of file getRunInfo.py.

00224                               :
00225   """ Func_FillInfoRunRegistry():
00226   Retrieves run info from RunRegistry and fills it into containers
00227   """  
00228   str_runRegistry     = urllib.urlencode({'format':'xml', 'intpl':'xml', 'qtype':'RUN_NUMBER', 'sortname':'RUN_NUMBER'})
00229   file_runRegistry    = urllib.urlopen("https://pccmsdqm04.cern.ch/runregistry/runregisterdata", str_runRegistry)
00230   str_runRegistryLong = ''
00231   for str_runRegistry in file_runRegistry.readlines():
00232     str_runRegistryLong += str_runRegistry.splitlines()[0]
00233   bool_foundRun      = False
00234   str_runRunRegistry = ''
00235   for int_runIndex in range(1,int(str_runRegistryLong.split('<RUNS')[1].split('>')[0].split('total=\"')[1].split('\"')[0])):
00236     str_runRunRegistry = Func_GetHtmlTagValue('RUN', str_runRegistryLong, int_runIndex)
00237     if Func_GetHtmlTagValue('NUMBER', str_runRunRegistry) == Str_run:
00238       bool_foundRun = True
00239       break
00240   if not bool_foundRun:
00241     print '> getRunInfo.py > run %s not found in run registry' %(Str_run)
00242     return False
00243   dict_tagsRunRegistry = Func_GetHtmlTags(str_runRunRegistry)
00244   for str_tagRunRegistry in dict_tagsRunRegistry.keys():
00245     if dict_tagsRunRegistry[str_tagRunRegistry] == False:
00246       Dict_runRegistry[str_tagRunRegistry] = Func_GetHtmlTagValue(str_tagRunRegistry, str_runRunRegistry)
00247   if Dict_runRegistry['SUBSYSTEMS'].find(STR_SiStrip) < 0:
00248     print '> getRunInfo.py > SiStrip was not in this run'
00249     return False
00250   return True
  
def getRunInfo::Func_FillInfoRunSummary ( )

Func_FillInfoRunSummary()

Retrieves run info from RunSummary and fills it into containers

Func_FillInfoRunSummary():
Retrieves run info from RunSummary and fills it into containers

Definition at line 254 of file getRunInfo.py.

00255                              :
00256   """ Func_FillInfoRunSummary():
00257   Retrieves run info from RunSummary and fills it into containers
00258   """
00259   str_nameRunSummary = 'RunSummary?RUN=' + Str_run
00260   Func_GetWBMInfo(str_nameRunSummary, STR_wwwWBM)
00261   Func_CopyWBMInfo(Func_MakeShellWord(str_nameRunSummary))
00262   file_wbmRunSummary = file(str_nameRunSummary, 'r')
00263   bool_table      = False
00264   int_tableHeader = 0
00265   int_tableItem   = 0
00266   int_startItem   = 0
00267   int_endItem     = 0
00268   for str_wbmRunSummary in file_wbmRunSummary.readlines():
00269     if str_wbmRunSummary.find('<TABLE CLASS="params"><THEAD><TR>') >= 0:
00270       bool_table = True
00271     if str_wbmRunSummary.find('</TBODY></TABLE>') >= 0:
00272       bool_table = False
00273     if bool_table:
00274       if str_wbmRunSummary.startswith('<TH>'):
00275         int_tableHeader += 1
00276         if str_wbmRunSummary.find(STR_runStart) >= 0:
00277           int_startItem = int_tableHeader
00278         if str_wbmRunSummary.find(STR_runEnd) >= 0:
00279           int_endItem = int_tableHeader
00280       if str_wbmRunSummary.startswith('<TD'):
00281         int_tableItem += 1
00282         if int_tableItem == int_startItem:
00283           Dict_wbmRunSummary[STR_runStart] = str_wbmRunSummary.split('&nbsp;</TD>')[0].split('<TD>')[-1]
00284         if int_tableItem == int_endItem:
00285           Dict_wbmRunSummary[STR_runEnd] = str_wbmRunSummary.split('&nbsp;</TD>')[0].split('<TD>')[-1]
00286       continue
00287     for str_keyRunSummary in DICT_keysRunSummary.keys():
00288       if str_wbmRunSummary.find(str_keyRunSummary) >= 0:
00289         Dict_wbmRunSummary[str_keyRunSummary] = str_wbmRunSummary.split('</TD></TR>')[0].split('>')[-1]
00290         break
00291     for str_summaryKeysTrigger in DICT_keysRunSummaryTrigger.keys():
00292       if str_wbmRunSummary.find(str_summaryKeysTrigger) >= 0:
00293         Dict_wbmRunSummary[str_summaryKeysTrigger] = str_wbmRunSummary.split('</A></TD></TR>')[0].split('>')[-1]
00294         if str_summaryKeysTrigger == 'HLT Key':
00295            Dict_wbmRunSummary[STR_htlConfig] = str_wbmRunSummary.split('HLTConfiguration?KEY=')[1].split('>')[0]
00296   file_wbmRunSummary.close()
00297   os.remove(str_nameRunSummary)
  
def getRunInfo::Func_GetHtmlTags (   str_text)

FUNCTIONS.

Func_GetHtmlTags(str_text)

Gets HTML tags from a string

Func_GetHtmlTags(str_text):
Gets HTML tags from a string

Definition at line 109 of file getRunInfo.py.

00110                               :
00111   """  Func_GetHtmlTags(str_text):
00112   Gets HTML tags from a string
00113   """
00114   dict_tags  = {}
00115   # first look for tags w/ values
00116   lstr_split = str_text.split('</')
00117   for str_split in lstr_split[1:]:
00118     str_key            = str_split.split('>')[0]
00119     dict_tags[str_key] = str_key in dict_tags
00120   # second look for tags w/o values
00121   lstr_split = str_text.split('/>')
00122   for str_split in lstr_split[:-1]:
00123     str_key            = str_split.split('<')[-1].split()[0]
00124     dict_tags[str_key] = str_key in dict_tags
00125   return dict_tags
 
def getRunInfo::Func_GetHtmlTagValue (   str_tag,
  str_text,
  int_index = 1 
)

Func_GetHtmlTagValue(str_tag, str_text)

Gets the value of the n-th oocurence a given HTML tag from a string

Func_GetHtmlTagValue(str_tag, str_text):
 Gets the value of the n-th oocurence a given HTML tag from a string

Definition at line 129 of file getRunInfo.py.

00130                                                           :
00131   """  Func_GetHtmlTagValue(str_tag, str_text):
00132    Gets the value of the n-th oocurence a given HTML tag from a string
00133   """
00134   if int_index > str_text.count('<'+str_tag):
00135     return ''
00136   str_1 = str_text.split('<'+str_tag)[int_index]
00137   if str_1[0] != '>':
00138     if str_1.split('>')[0][-1] == '/':
00139       return ''
00140   return str_1.split('>',1)[1].split('</'+str_tag+'>')[0]

def getRunInfo::Func_GetHtmlTagValueAttr (   str_value,
  str_text 
)

Func_GetHtmlTagValueAttr(str_tag, str_text)

Gets the (last) attribute of a given HTML tag value from a string

Func_GetHtmlTagValueAttr(str_value, str_text):
Gets the (last) attributes of a given HTML tag value from a string

Definition at line 157 of file getRunInfo.py.

00158                                                  :
00159   """  Func_GetHtmlTagValueAttr(str_value, str_text):
00160   Gets the (last) attributes of a given HTML tag value from a string
00161   """
00162   return str_text.split('\">'+str_value+'<')[0].split('=\"')[-1]
  
def getRunInfo::Func_GetHtmlTagValues (   str_text)

Func_GetHtmlTagValues(str_text)

Gets HTML tag values from a string

Func_GetHtmlTagValues(str_text):
Gets HTML tag values from a string

Definition at line 144 of file getRunInfo.py.

00145                                    :
00146   """  Func_GetHtmlTagValues(str_text):
00147   Gets HTML tag values from a string
00148   """
00149   lstr_split   = str_text.split('</')
00150   lstr_values  = []
00151   for str_split in lstr_split[:-1]:
00152     lstr_values.append(str_split.split('>')[-1])
00153   return lstr_values
 
def getRunInfo::Func_GetWBMInfo (   str_name,
  str_path 
)

Func_GetWBMInfo(str_name, str_path)

Logs in on cmsusr0, retrieves WBM information and stores it locally

Func_GetWBMInfo(str_name, str_path)
Logs in on cmsusr0, retrieves WBM information and stores it locally

Definition at line 175 of file getRunInfo.py.

00176                                        :
00177   """ Func_GetWBMInfo(str_name, str_path)
00178   Logs in on cmsusr0, retrieves WBM information and stores it locally
00179   """
00180   pid, fd = os.forkpty()
00181   if pid == 0:
00182     os.execv('/usr/bin/ssh', ['/usr/bin/ssh', '-l', Str_userID, STR_p5] + ['rm', '-f', '\"'+str_name + '\" && ' + 'wget', '\"'+str_path+'/'+str_name+'\"'])
00183   else:
00184     time.sleep(1)
00185     os.read(fd, 1000)
00186     time.sleep(1)
00187     os.write(fd, Str_passwd)
00188     time.sleep(1)
00189     c = 0
00190     s = os.read(fd, 1)
00191     while s:
00192       c += 1
00193       s  = os.read(fd, 1)
00194       if c >= 2:
00195         break
  
def getRunInfo::Func_MakeShellWord (   str_python)

Func_MakeShellWord(str_python)

Adds shell escape charakters to Python strings

Func_MakeShellWord(str_python)
Adds shell escape charakters to Python strings

Definition at line 166 of file getRunInfo.py.

00167                                   :
00168   """  Func_MakeShellWord(str_python)
00169   Adds shell escape charakters to Python strings
00170   """
00171   return str_python.replace('?','\\?').replace('=','\\=').replace(' ','\\ ').replace('&','\\&').replace(':','\\:')
  

Variable Documentation

tuple getRunInfo::bool_hlt = False

Definition at line 437 of file getRunInfo.py.

tuple getRunInfo::bool_runRegistry = Func_FillInfoRunRegistry()

Definition at line 394 of file getRunInfo.py.

Definition at line 101 of file getRunInfo.py.

Definition at line 60 of file getRunInfo.py.

Definition at line 75 of file getRunInfo.py.

Definition at line 102 of file getRunInfo.py.

Definition at line 95 of file getRunInfo.py.

Definition at line 36 of file getRunInfo.py.

Definition at line 97 of file getRunInfo.py.

Definition at line 99 of file getRunInfo.py.

Definition at line 100 of file getRunInfo.py.

Definition at line 96 of file getRunInfo.py.

Definition at line 475 of file getRunInfo.py.

Definition at line 26 of file getRunInfo.py.

Initial value:
00001 ['cms_dbs_caf_analysis_01',
00002                                            'cms_dbs_prod_global'    ]

Definition at line 32 of file getRunInfo.py.

Definition at line 98 of file getRunInfo.py.

string getRunInfo::STR_headDatasets = 'datasets'

Definition at line 34 of file getRunInfo.py.

string getRunInfo::STR_headFiles = 'available data files'

Definition at line 35 of file getRunInfo.py.

string getRunInfo::STR_htlConfig = 'HLT Config ID'

Definition at line 57 of file getRunInfo.py.

string getRunInfo::STR_p5 = 'cmsusr0.cern.ch'

Definition at line 28 of file getRunInfo.py.

tuple getRunInfo::Str_passwd = getpass.getpass('> getRunInfo.py > '+Str_userID+'@'+STR_p5+'\'s password: ')

Definition at line 390 of file getRunInfo.py.

string getRunInfo::str_print = '> getRunInfo.py > '

Definition at line 471 of file getRunInfo.py.

list getRunInfo::Str_run = sys.argv[1]

Definition at line 94 of file getRunInfo.py.

string getRunInfo::STR_runEnd = 'STOP_TIME'

Definition at line 59 of file getRunInfo.py.

string getRunInfo::STR_runStart = 'START_TIME'

Definition at line 58 of file getRunInfo.py.

string getRunInfo::STR_SiStrip = 'SIST'

Definition at line 30 of file getRunInfo.py.

tuple getRunInfo::Str_userID = getpass.getuser()

MAIN PROGRAM.

Definition at line 389 of file getRunInfo.py.

string getRunInfo::STR_wwwDBSData = 'dbs_discovery/getData'

Definition at line 31 of file getRunInfo.py.

string getRunInfo::STR_wwwWBM = 'https://cmswbm/cmsdb/servlet'

Definition at line 29 of file getRunInfo.py.

tuple getRunInfo::TD_shiftUTC = datetime.timedelta(hours = 2)

Definition at line 25 of file getRunInfo.py.