#!/bin/env python # # Control AutoPilot configuration # pilotScheduler configuration taken from DB # # $Date$ # $Revision$ # $Author$ # $HeadURL$ import datetime, re, getopt, sys, os, commands from SchedulerUtils import utils try: import dq2.info.TiersOfATLAS as ToA except: ToA = None try: import lcgInfositeTool except: print "Cannot import lcgInfositeTool" try: import fillDDMpaths except: print "Cannot import fillDDMpaths" global copytools copytools = {} nqueue_default = 1 tnow = datetime.datetime.utcnow() ## command-line parameters opts, args = getopt.getopt(sys.argv[1:], "", ( "loadlcg", "loadstorage", "loadclouds", "setversion", # debug/testing "debug", "glidein-debug", "verbose", "no-update", "noupdate" )) debug = 0 glidein_debug = 0 verbose = 0 loadlcg = 0 loadclouds = 0 loadstorage = 0 DBUpdate = 1 # update Panda DB by default linfotool = '' setversion = 0 for o, a in opts: if o == "--debug": debug = 1 if o == "--glidein-debug": glidein_debug = 1 if o == "--verbose": verbose = 1 if o in ("--no-update", "--noupdate"): DBUpdate = 0 if o == "--loadlcg": loadlcg = 1 if o == "--loadclouds": loadclouds = 1 if o == "--loadstorage": loadstorage = 1 if o == "--setversion": setversion = 1 ## Do not run if the code is not current pat = re.compile('.*:[ ]+([0-9]+)[ ]+') version = '$Revision$' mat = pat.match(version) if mat: versionno = int(mat.group(1)) utils.initDB() query = "select controller from pandaconfig where name='current'" nrows = utils.dictcursor.execute(query) if nrows > 0: rows = utils.dictcursor.fetchall() dbversion = rows[0]['controller'] mat = pat.match(dbversion) if mat: dbversionno = int(mat.group(1)) if versionno < dbversionno: print "Version mismatch with latest recorded repository version. Your version is older." print "Latest recorded repository version: %s" % dbversionno print "Your version: %s " % versionno print "Will not run. Do svn update first." sys.exit(0) elif versionno == dbversionno: print "Your version matches the latest recorded repository version." else: print "Your version is newer than the latest recorded repository version. Upating the repository." query = "update pandaconfig set controller='%s' where name = 'current'" % version utils.dictcursor.execute(query) utils.commit() else: print "Invalid code version read from DB: %s" % dbversion print "Will not run." sys.exit(0) else: print "Cannot read latest repository version from DB. Will not run." sys.exit(0) ## Set the DB version #query = "insert into pandaconfig (name, controller) values ('current','%s')" % version #utils.dictcursor.execute(query) #utils.commit() utils.endDB() if setversion: print "Exiting after version check/set (--setversion option used)" sys.exit(0) global DQ2Map DQ2Map = { "http://dms02.usatlas.bnl.gov:8000/dq2/" : "BNLPANDA", "http://atlas001.bu.edu:8000/dq2/" : "BU", #"http://tier2-01.uchicago.edu:8000/dq2/" : "UC", "http://tp-grid2.uchicago.edu:8000/dq2/" : "UC_TP", "http://uct2-grid1.uchicago.edu:8000/dq2/" : "MWT2_UC", "http://osg-itb2.dpcc.uta.edu:8000/dq2/" : "UTA", "http://gk03.swt2.uta.edu:8000/dq2/" : "UTA_SWT2", "http://g3aux.avidd.iu.edu:8000/dq2/" : "IU", "http://iut2-grid1.iu.edu:8000/dq2/" : "MWT2_IU", "http://tier2-02.ochep.ou.edu:8000/dq2/" : "OU", "http://ouhep00.nhn.ou.edu:8000/dq2/" : "OUHEP", "http://yakut04.slac.stanford.edu:8000/dq2/" : "SLACXRD", "http://linat01.grid.umich.edu:8000/dq2/" : "AGLT2", "http://www-atllrc.slac.stanford.edu/dq2/" : "SLACXRD", #'mysql://dq2user:dqpwd@atl-lrc.slac.stanford.edu:3306/localreplicas' : "SLACXRD", "http://grid02.usatlas.org:8000/dq2/" : "BNLVALID", "http://cclcgceli02.in2p3.fr:8000/dq2/" : "IN2P3-CC_MCDISK", "http://cclcgceli05.in2p3.fr:8000/dq2/" : "IN2P3-CC_MCDISK", "http://dummy.rl.ac.uk:8000/dq2/" : "RALDISK", "http://dummy.gridka.de:8000/dq2/" : "FZKDISK", "http://dummy.cnaf.infn.it:8000/dq2/" : "CNAFDISK", #"http://dummy.pic.es:8000/dq2/" : "PICDISK", "http://dummy.sara.nl:8000/dq2/" : "SARADISK", "http://dummy.cern.ch:8000/dq2/" : "CERN-PROD_MCDISK", "http://dummy.shef.ac.uk:8000/dq2/" : "SHEF", "http://dgce0.icepp.jp:8000/dq2/" : "TOKYO", "http://dummy.saclay.fr:8000/dq2/" : "Saclay", "http://dummy.cppm.fr:8000/dq2/" : "CPPM", "http://dummy.lpc.fr:8000/dq2/" : "LPC", "http://dummy.lapp.fr:8000/dq2/" : "LAPP", 'http://dummy.triumf.ca:8000/dq2/' : "TRIUMFDISK", "http://dummy.utoronto.ca:8000/dq2/" : "TORON", "http://dummy.westgrid.ca:8000/dq2/" : "SFU", "http://dummy.wisc.edu:8000/dq2/" : "WISC", 'http://dummy.uvic.ca:8000/dq2/' : "UVIC", 'http://dummy.ualberta.ca:8000/dq2/' : "ALBERTA", #'http://dummy.nipne.ro:8000/dq2/' : "NIPNE_07", 'http://dummy.lpnce.in2p3.fr:8000/dq2/' : "LPNCE", } ##################### load configuration def loadConfig(): ##################### pilot types pilots = ( { 'name' : 'default', 'script' : 'pilotWrapper.sh', 'system' : ' lcg lcg-cg osg lsf condor pbs glidein ', }, { 'name' : 'atlasProd', 'script' : 'atlasProdWrapper.sh', 'system' : ' lcg lcg-cg osg lsf condor pbs glidein ', }, { 'name' : 'atlasOfficial', 'script' : 'atlasProduction.sh', 'system' : ' lcg lcg-cg osg lsf condor pbs glidein ', }, { 'name' : 'atlasOfficial2', 'script' : 'thinPilotWrapper.sh', 'system' : ' lcg lcg-cg osg lsf condor pbs glidein ', }, { 'name' : 'debugProd', 'script' : 'debugProdWrapper.sh', 'system' : ' lcg lcg-cg osg lsf condor pbs glidein ', }, { 'name' : 'UMESHTEST', 'script' : 'pilotWrapper.sh', 'system' : ' lcg lcg-cg osg lsf condor pbs glidein ', }, { 'name' : 'TEST1', 'script' : 'pilotWrapper.sh', 'system' : ' lcg lcg-cg osg lsf condor pbs glidein ', }, { 'name' : 'TEST2', 'script' : 'pilotWrapper.sh', 'system' : ' lcg lcg-cg osg lsf condor pbs glidein ', }, { 'name' : 'TEST3', 'script' : 'pilotWrapper.sh', 'system' : ' lcg lcg-cg osg lsf condor pbs glidein ', }, { 'name' : 'TEST4', 'script' : 'pilotWrapper.sh', 'system' : ' lcg lcg-cg osg lsf condor pbs glidein ', }, { 'name' : 'SERENDIP', 'script' : 'dir_walk', 'system' : ' lcg lcg-cg osg lsf condor pbs glidein ', }, { 'name' : 'TESTCHARMM', 'script' : 'pilotWrapper.sh', 'system' : ' lcg lcg-cg osg lsf condor pbs glidein ', }, ) for p in pilots: if p['name'] in ('UMESHTEST', 'TESTCHARMM', 'TEST1', 'TEST2', 'TEST3', 'TEST4'): p['url'] = 'http://www.usatlas.bnl.gov/svn/panda/autopilot/trunk/%s' % p['script'] elif p['name'] == 'SERENDIP': p['url'] = 'http://gridui01.usatlas.bnl.gov:25880/glidein/sandbox/%s' % p['script'] else: p['url'] = 'http://www.usatlas.bnl.gov/svn/panda/autopilot/trunk/%s' % p['script'] ##################### scheduler queue configurations # 1. LCG job template jdllist = [] jdldict = {} jdldict['name'] = 'lcg' jdldict['system'] = 'lcg' jdldict['host'] = '.*\.cern\.ch' jdldict['jdl'] = """ Executable = "==exe=="; Arguments = "==args=="; StdOutput = "pilot.out"; StdError = "pilot.err"; OutputSandbox = {"pilot.out","pilot.err"}; """ jdllist.append(jdldict) # 2. PBS job template jdldict = {} jdldict['name'] = 'pbs' jdldict['system'] = 'pbs' jdldict['host'] = '' jdldict['jdl'] = """ #/! #PBS -o ==jobdir==/pilot.out #PBS -e ==jobdir==/pilot.log #PBS -V #PBS -W stagein===script==@==hostname==:==exe== ./==script== ==args== """ jdllist.append(jdldict) # 3. Condor job template # 3.1 Vanilla Universe jdldict = {} jdldict['name'] = 'bnl-condor' jdldict['system'] = 'condor' jdldict['host'] = '.*\.usatlas\.bnl\.gov' jdldict['jdl'] = """ Universe = vanilla Notification = Never Notify_user = wenaus@gmail.com Executable = ==exe== Arguments = "==args==" Requirements = CPU_Speed >= 1 Rank = CPU_Speed Priority = +20 GetEnv = False Environment = "APP=/usatlas/OSG DATA=/usatlas/prodjob/share TMP=/usatlas/scratch/dtyu/atlas_scratch_space http_proxy=http://squid.sec.bnl.local:3128 https_proxy=http://squid.sec.bnl.local:3128" stream_output = false stream_error = false transfer_output = true transfer_error = true output = ==jobdir==/pilot.out error = ==jobdir==/pilot.err log = ==jobdir==/pilot.log should_transfer_files = YES when_to_transfer_output = ON_EXIT transfer_output_files = transfer_input_files = transfer_executable = true copy_to_spool = false leave_in_queue = JobStatus == 4 # automatic job removal # [policy] 1hr on HOLD # 2hr idle in condorg but not globus, i.e. not in queue on resource #periodic_hold = GridResourceUnavailableTime =!= UNDEFINED && (CurrentTime-GridResourceUnavailableTime > 1800) since = (CurrentTime-EnteredCurrentStatus) #periodic_remove = ( JobStatus == 5 && $(since) > 3600 ) || ( JobStatus == 4 && $(since) > 300 ) periodic_remove = ( JobStatus == 4 && $(since) > 300 ) ## Set non-essential flag for pilot behavior +Nonessential = True +Experiment = "atlas" +panda_pilotid = "==pilotid==" +panda_jobschedulerid = "==submitterid==" +is_pilot = True """ jdllist.append(jdldict) ## Variant for queue dedicated to local users jdldict2 = jdldict jdldict2['name'] = 'bnl-condor-local' jdldict2['jdl'] = jdldict2['jdl'].replace('CPU_Speed >= 1','CPU_Speed == 1') jdllist.append(jdldict2) # 3.2 Grid Universe jdldict = {} jdldict['name'] = 'general-grid-univ' jdldict['system'] = 'condor' jdldict['host'] = '.*\.usatlas\.bnl\.gov' jdldict['jdl'] = """ universe = grid grid_resource = ==gridtype== ==contactstr== Executable = ==exe== Arguments = "==args==" #transfer_output_files = ==infiles== #transfer_input_files = ==outfiles== output = ==jobdir==/pilot.out error = ==jobdir==/pilot.err log = ==jobdir==/pilot.log stream_output = false stream_error = false transfer_executable = true transfer_output = true transfer_error = true should_transfer_files = YES when_to_transfer_output = ON_EXIT Notification = Never Notify_user = wenaus@gmail.com #globusrsl = (jobtype=single)==globusadd== copy_to_spool = false #Requirements = (OpSys == "LINUX" && Arch == "INTEL") && (Disk >= DiskUsage) && (Memory >= 500) Rank = CPU_Speed Priority = +20 GetEnv = False leave_in_queue = JobStatus == 4 # automatic job removal # [policy] 1hr on HOLD # 2hr idle in condorg but not globus, i.e. not in queue on resource #periodic_hold = GridResourceUnavailableTime =!= UNDEFINED && (CurrentTime-GridResourceUnavailableTime > 1800) since = (CurrentTime-EnteredCurrentStatus) #periodic_remove = ( JobStatus == 5 && $(since) > 3600 ) || ( JobStatus == 4 && $(since) > 300 ) periodic_remove = ( JobStatus == 4 && $(since) > 300 ) ## Set non-essential flag for pilot behavior +Nonessential = True +Experiment = "atlas" +panda_pilotid = "==pilotid==" +panda_jobschedulerid = "==submitterid==" +is_pilot = True """ jdllist.append(jdldict) # 4. Job template for glidein jobs # 4.1 Vanilla Universe jdldict = {} jdldict['name'] = 'schedd-vanilla' jdldict['system'] = 'condor' jdldict['host'] = '.*\.usatlas\.bnl\.gov' jdldict['jdl'] = """ Universe = vanilla Executable = ==exe== Arguments = "==args==" Environment = "APP=/usatlas/OSG DATA=/usatlas/prodjob/share TMP=/usatlas/scratch/dtyu/atlas_scratch_space http_proxy=http://squid.sec.bnl.local:3128 https_proxy=http://squid.sec.bnl.local:3128" GetEnv = False output = ==jobdir==/pilot.out error = ==jobdir==/pilot.err log = ==jobdir==/pilot.log should_transfer_files = YES when_to_transfer_output = ON_EXIT #transfer_output_files = ==outfiles== #transfer_input_files = ==infiles== stream_output = false stream_error = false transfer_executable = true transfer_output = true transfer_error = true Notification = Never Notify_user = wenaus@gmail.com #Requirements = CPU_Speed >= 1 Rank = CPU_Speed Priority = +20 copy_to_spool = false +pilot_factory_type = "schedd-glidein with vanilla" ## Set non-essential flag for pilot behavior +Nonessential = True +Experiment = "atlas" +panda_pilotid = "==pilotid==" +panda_jobschedulerid = "==submitterid==" +is_pilot = True """ jdllist.append(jdldict) # 4.2 Condor-C Grid Job jdldict = {} jdldict['name'] = 'schedd-condor-c' jdldict['system'] = 'condor' jdldict['host'] = '' glideinJDL_CC = """ # The essential universe = grid grid_resource = ==gridtype== ==schedd== ==collector== Executable = ==exe== Arguments = "==args==" Environment = "APP=/usatlas/OSG DATA=/usatlas/prodjob/share TMP=/usatlas/scratch/dtyu/atlas_scratch_space http_proxy=http://squid.sec.bnl.local:3128 https_proxy=http://squid.sec.bnl.local:3128" GetEnv = False # File I/O commands transfer_output_files = ==outfiles== transfer_input_files = ==infiles== output = ==jobdir==/pilot.out error = ==jobdir==/pilot.err log = ==jobdir==/pilot.log stream_output = false stream_error = false transfer_output = true transfer_error = true transfer_executable = true should_transfer_files = YES when_to_transfer_output = ON_EXIT_OR_EVICT # Globus globusrsl = (jobtype=single) # Priority Rank = CPU_Speed Priority = +20 # Misc Notification = Never Notify_user = wenaus@gmail.com copy_to_spool = false submit_event_user_notes = pool:BNL_ATLAS_1 ## Set non-essential flag for pilot behavior +Nonessential = True # Add to job ClassAd +remote_requirements = True +remote_ShouldTransferFiles = "YES" +remote_WhenToTransferOutput = "ON_EXIT" +pilot_factory_type = "schedd-glidein with Condor-C" +Experiment = "atlas" +panda_pilotid = "==pilotid==" +panda_jobschedulerid = "==submitterid==" +is_pilot = True +Owner = Undefined """ jdldict['jdl'] = glideinJDL_CC jdllist.append(jdldict) # 4.3 PBS Grid Job jdldict = {} jdldict['name'] = 'schedd-pbs' jdldict['system'] = 'condor' jdldict['host'] = '' glideinJDL_PBS = """ # The essential universe = grid grid_resource = pbs Executable = ==exe== Arguments = "==args==" Environment = "APP=/usatlas/OSG DATA=/usatlas/prodjob/share TMP=/usatlas/scratch/dtyu/atlas_scratch_space http_proxy=http://squid.sec.bnl.local:3128 https_proxy=http://squid.sec.bnl.local:3128" GetEnv = False # File I/O commands transfer_output_files = ==outfiles== transfer_input_files = ==infiles== output = ==jobdir==/pilot.out error = ==jobdir==/pilot.err log = ==jobdir==/pilot.log stream_output = false stream_error = false transfer_output = true transfer_error = true transfer_executable = true should_transfer_files = YES when_to_transfer_output = ON_EXIT_OR_EVICT # Globus globusrsl = (jobtype=single)(maxWallTime=2500)(queue=atlas_analy_q) # Priority Rank = CPU_Speed Priority = +20 # Misc Notification = Never Notify_user = wenaus@gmail.com copy_to_spool = false submit_event_user_notes = pool:BNL_ATLAS_1 ## Set non-essential flag for pilot behavior +Nonessential = True # Add to job ClassAd +remote_requirements = True +remote_ShouldTransferFiles = "YES" +remote_WhenToTransferOutput = "ON_EXIT" +pilot_factory_type = "schedd-glidein with CondorPBS" +Experiment = "atlas" +panda_pilotid = "==pilotid==" +panda_jobschedulerid = "==submitterid==" +is_pilot = True """ jdldict['jdl'] = glideinJDL_CC jdllist.append(jdldict) schedconfig = [ { 'region' : 'Canada', 'site':'UBC', 'nickname' : 'UBC-lcgpbs', 'gatekeeper' : 'hep.westgrid.ca', 'jobmanager' : 'lcgpbs', 'localqueue' : 'ice', 'system' : 'lcg-cg', 'status' : 'online', }, { 'region' : 'Canada', 'site':'UBC', 'nickname' : 'UBC-pbs', 'gatekeeper' : 'hep.westgrid.ca', 'jobmanager' : 'pbs', 'localqueue' : 'ice', 'system' : 'lcg-cg', 'status' : 'online', }, ] ####### Panda OSG ## Exclude these sites kill_sites = ( 'SiteName', 'default', ) ## Include these whatever OK/NOTOK might say activate_sites = ( 'ANALY_UTA-DPCC', 'BNL_ATLAS_1', 'BU_Atlas_Tier2', 'BU_ATLAS_Tier2o', 'IU_ATLAS_Tier2', 'OU_OCHEP_SWT2', 'SLACXRD', 'UC_ATLAS_MWT2', 'UC_Teraport', 'UTA-DPCC', 'UTA-SWT2', 'UC_Teraport_OSG_ITB', ) siteset = {} siteset['BNL'] = '.*BNL.*' siteset['FNAL'] = '.*FNAL.*' siteset['OU'] = '.*OU_.*' siteset['UChicago'] = 'UC_.*' siteset['SLAC'] = '.*SLAC.*' siteset['IndianaU'] = 'IU.*' siteset['MidwestT2'] = '.*MWT2.*' siteset['UTDallas'] = 'UTD-.*' siteset['BostonU'] = '(.*BU.*|.*NET2.*)' siteset['UTArlington'] = '.*UTA.*' siteset['Canada'] = 'UBC.*' siteset['GreatLakesT2'] = '.*AGLT2.*' siteset['LouisianaTech'] = 'LTU_.*' ## Name mapping from Panda site name to schedconfig nickname PandaSiteIDs = { 'AGLT2' : {'nickname':'AGLT2-condor','status':'OK'}, 'ALBERTA-LCG2' : {'nickname':'ALBERTA-LCG2-lcgce01-atlas-lcgpbs','status':'OK'}, 'ANALY_AGLT2' : {'nickname':'ANALY_AGLT2-condor','status':'OK'}, 'ANALY_ALBERTA' : {'nickname':'ALBERTA-LCG2-lcgce01-atlas-lcgpbs','status':'OK'}, 'ANALY_BEIJING' : {'nickname':'BEIJING-LCG2-lcg002-atlas-lcgpbs','status':'OK'}, 'ANALY_BNL_ATLAS_1' : {'nickname':'BNL_ATLAS_1-condor','status':'OK'}, 'ANALY_BNL_test' : {'nickname':'BNL_ATLAS_1-condor','status':'OK'}, 'ANALY_BNL_test2' : {'nickname':'ANALY_BNL_ATLAS_1-condor','status':'OK'}, 'ANALY_BNL_test3' : {'nickname':'BNL_ATLAS_1-condor','status':'OK'}, 'ANALY_BRUNEL' : {'nickname':'UKI-LT2-Brunel-dgc-grid-44-atlas-lcgpbs','status':'notOK'}, 'ANALY_CERN' : {'nickname':'CERN-PROD-ce123-grid_atlas-lcglsf','status':'notOK'}, 'ANALY_CNAF' : {'nickname':'INFN-CNAF-gridit-ce-001-lcg-lcgpbs','status':'notOK'}, 'ANALY_CPPM' : {'nickname':'IN2P3-CPPM-marce01-atlas-pbs','status':'OK'}, 'ANALY_FZK' : {'nickname':'FZK-LCG2-ce-5-fzk-atlasXS-pbspro','status':'OK'}, 'ANALY_GLASGOW' : {'nickname':'UKI-SCOTGRID-GLASGOW-svr021-q3d-lcgpbs','status':'OK'}, 'ANALY_GLOW-ATLAS' : {'nickname':'GLOW-ATLAS-condor','status':'OK'}, 'ANALY_GRIF-IRFU' : {'nickname':'GRIF-IRFU-node07-atlas-lcgpbs','status':'OK'}, 'ANALY_GRIF-LAL' : {'nickname':'GRIF-LAL-grid10-atlasana-pbs','status':'OK'}, 'ANALY_GRIF-LPNHE' : {'nickname':'GRIF-LPNHE-lpnce-atlasana-pbs','status':'OK'}, 'ANALY_HU_ATLAS_Tier2' : {'nickname':'ANALY_HU_ATLAS_Tier2-lsf','status':'OK'}, 'ANALY_LANCS' : {'nickname':'UKI-NORTHGRID-LANCS-HEP-fal-pygrid-18-atlas-lcgpbs','status':'notOK'}, 'ANALY_LAPP' : {'nickname':'IN2P3-LAPP-lapp-ce01-atlas-pbs','status':'notOK'}, 'ANALY_LIV' : {'nickname':'UKI-NORTHGRID-LIV-HEP-hepgrid2-atlas-lcgpbs','status':'notOK'}, 'ANALY_LONG_LYON_DCACHE' : {'nickname':'IN2P3-CC-T2-cclcgceli05-long-bqs','status':'OK'}, 'ANALY_LPC' : {'nickname':'IN2P3-LPC-clrlcgce03-atlasana-lcgpbs','status':'OK'}, 'ANALY_LPSC' : {'nickname':'IN2P3-LPSC-lpsc-ce-atlasana-pbs','status':'OK'}, 'ANALY_LYON_DCACHE' : {'nickname':'IN2P3-CC-T2-cclcgceli05-medium-bqs','status':'OK'}, 'ANALY_MANC' : {'nickname':'UKI-NORTHGRID-MAN-HEP-ce01-atlas-lcgpbs','status':'OK'}, 'ANALY_MCGILL' : {'nickname':'MCGILL-LCG2-atlas-ce-atlas-lcgpbs','status':'OK'}, 'ANALY_MWT2' : {'nickname':'ANALY_MWT2-condor','status':'notOK'}, 'ANALY_MWT2_SHORT' : {'nickname':'ANALY_MWT2_SHORT-pbs','status':'notOK'}, 'ANALY_NET2' : {'nickname':'ANALY_NET2-pbs','status':'OK'}, 'ANALY_OU_OCHEP_SWT2' : {'nickname':'ANALY_OU_OCHEP_SWT2-condor','status':'notOK'}, 'ANALY_PIC' : {'nickname':'pic-ce07-gshort-lcgpbs','status':'OK'}, 'ANALY_RAL' : {'nickname':'RAL-LCG2-lcgce01-atlasL-lcgpbs','status':'OK'}, 'ANALY_ROMANIA02' : {'nickname':'RO-02-NIPNE-tbat01-atlas-lcgpbs','status':'notOK'}, 'ANALY_ROMANIA07' : {'nickname':'RO-07-NIPNE-tbit01-atlas-lcgpbs','status':'notOK'}, 'ANALY_SARA' : {'nickname':'SARA-MATRIX-mu6-short-pbs','status':'notOK'}, 'ANALY_SFU' : {'nickname':'SFU-LCG2-snowpatch-hep-atlas-lcgpbs','status':'notOK'}, 'ANALY_SHEF' : {'nickname':'UKI-NORTHGRID-SHEF-HEP-lcgce0-atlas-lcgpbs','status':'OK'}, 'ANALY_SLAC' : {'nickname':'ANALY_SLAC-lsf','status':'OK'}, 'ANALY_SWT2_CPB' : {'nickname':'ANALY_SWT2_CPB-pbs','status':'OK'}, 'ANALY_TAIWAN' : {'nickname':'Taiwan-LCG2-w-ce01-atlas-lcgpbs','status':'OK'}, 'ANALY_TEST' : {'nickname':'ANALY_TEST','status':'OK'}, 'ANALY_TORONTO' : {'nickname':'TORONTO-LCG2-bigmac-lcg-ce2-atlas-pbs','status':'OK'}, 'ANALY_TOKYO' : {'nickname':'TOKYO-LCG2-lcg-ce01-atlas-lcgpbs','status':'OK'}, 'ANALY_TRIUMF' : {'nickname':'TRIUMF-LCG2-ce1-atlas-lcgpbs','status':'OK'}, 'ANALY_UBC' : {'nickname':'UBC-pbs','status':'OK'}, 'ANALY_UIUC-HEP' : {'nickname':'ANALY_UIUC-HEP-condor','status':'OK'}, 'ANALY_UTA-DPCC' : {'nickname':'UTA-DPCC-test-pbs','status':'notOK'}, 'ANALY_VICTORIA' : {'nickname':'VICTORIA-LCG2-lcg-ce-general-lcgpbs','status':'OK'}, 'AUVERGRID' : {'nickname':'AUVERGRID-iut15auvergridce01-atlas-lcgpbs','status':'notOK'}, 'ASGC' : {'nickname':'Taiwan-LCG2-w-ce01-atlas-lcgpbs','status':'OK'}, 'ASGC_REPRO' : {'nickname':'ASGC_REPRO','status':'notOK'}, 'Australia-ATLAS' : {'nickname':'Australia-ATLAS-agh2-atlas-lcgpbs','status':'OK'}, 'BARNETT_TEST' : {'nickname':'BARNETT_TEST','status':'notOK'}, 'BEIJING' : {'nickname':'BEIJING-LCG2-lcg002-atlas-lcgpbs','status':'OK'}, 'BNL_ATLAS_1' : {'nickname':'BNL_ATLAS_1-condor','status':'OK'}, 'BNL_ATLAS_DDM' : {'nickname':'BNL_DDM-condor','status':'notOK'}, 'BNL_ATLAS_test' : {'nickname':'BNL_ATLAS_1-condor','status':'notOK'}, 'BU_ATLAS_Tier2' : {'nickname':'BU_ATLAS_Tier2-pbs','status':'OK'}, 'BU_ATLAS_Tier2o' : {'nickname':'BU_ATLAS_Tier2o-pbs','status':'OK'}, 'BU_ATLAS_test' : {'nickname':'BU_ATLAS_Tier2-pbs','status':'NOTOK'}, 'HU_ATLAS_Tier2' : {'nickname':'HU_ATLAS_Tier2-lsf','status':'OK'}, 'CERN-BUILDS' : {'nickname':'CERN-BUILDS','status':'notOK'}, 'CERN-RELEASE' : {'nickname':'CERN-RELEASE','status':'notOK'}, 'CERN-UNVALID' : {'nickname':'CERN-UNVALID','status':'notOK'}, 'CGG' : {'nickname':'CGG-LCG2-ce1-atlas-lcgpbs','status':'notOK'}, 'CHARMM' : {'nickname':'CHARMM','status':'notOK'}, 'CNR-ILC-PISA' : {'nickname':'CNR-ILC-PISA-gridce-atlas-lcgpbs','status':'notOK'}, 'CPPM' : {'nickname':'IN2P3-CPPM-marce01-atlas-pbs','status':'OK'}, 'CSCS-LCG2' : {'nickname':'CSCS-LCG2-ce01-egee48h-lcgpbs','status':'OK'}, 'csTCDie' : {'nickname':'csTCDie-gridgate-himem-pbs','status':'OK'}, 'CYF' : {'nickname':'CYFRONET-LCG2-ce-atlas-pbs','status':'OK'}, 'DESY-HH' : {'nickname':'DESY-HH-grid-ce3-default-lcgpbs','status':'OK'}, 'DESY-ZN' : {'nickname':'DESY-ZN-lcg-ce0-atlas-lcgpbs','status':'OK'}, 'EFDA-JET' : {'nickname':'EFDA-JET-grid002-atlas-lcgpbs','status':'notok'}, 'FZK-LCG2' : {'nickname':'FZK-LCG2-ce-1-fzk-atlasXL-pbspro','status':'OK'}, 'FZK_REPRO' : {'nickname':'FZK_REPRO','status':'notOK'}, 'FZU' : {'nickname':'praguelcg2-golias25-lcgatlas-lcgpbs','status':'OK'}, 'GLOW' : {'nickname':'GLOW-CMS-cmsgrid02-atlas-condor','status':'notOK'}, 'GLOW-ATLAS' : {'nickname':'GLOW-ATLAS-condor','status':'OK'}, 'GoeGrid' : {'nickname':'GoeGrid-ce-goegrid-atlas-lcgpbs','status':'OK'}, 'GRIF-IRFU' : {'nickname':'GRIF-IRFU-node07-atlas-lcgpbs','status':'OK'}, 'GRIF-LAL' : {'nickname':'GRIF-LAL-grid10-atlas-pbs','status':'OK'}, 'GRIF-LPNHE' : {'nickname':'GRIF-LPNHE-lpnce-atlas-pbs','status':'OK'}, 'HEPHY-UIBK' : {'nickname':'HEPHY-UIBK-hepx4-atlas-lcgpbs','status':'OK'}, 'IFAE' : {'nickname':'ifae-ifaece01-ifae-lcgpbs','status':'OK'}, 'IFIC' : {'nickname':'IFIC-LCG2-ce01-atlas-pbs','status':'OK'}, 'IHEP' : {'nickname':'BEIJING-LCG2-lcg002-atlas-lcgpbs','status':'OK'}, 'ITEP' : {'nickname':'ITEP-ceglite-atlas-lcgpbs','status':'OK'}, 'IN2P3-LPSC' : {'nickname':'IN2P3-LPSC-lpsc-ce-atlas-pbs','status':'OK'}, 'INFN-BARI' : {'nickname':'INFN-BARI-gridba2-long-lcgpbs','status':'notOK'}, 'INFN-BOLOGNA' : {'nickname':'INFN-BOLOGNA-boalice3-atlas-lcgpbs','status':'notOK'}, 'INFN-CAGLIARI' : {'nickname':'INFN-CAGLIARI-grid002-atlas-lcglsf','status':'notOK'}, 'INFN-CNAF' : {'nickname':'INFN-CNAF-gridit-ce-001-lcg-lcgpbs','status':'notOK'}, 'INFN-FERRARA' : {'nickname':'INFN-FERRARA-grid0-lcg-lcgpbs','status':'notOK'}, 'INFN-FIRENZE' : {'nickname':'INFN-FIRENZE-grid001-atlas-lcgpbs','status':'notOK'}, 'INFN-FRASCATI' : {'nickname':'INFN-FRASCATI-atlasce-atlas-lcgpbs','status':'OK'}, 'INFN-GENOVA' : {'nickname':'INFN-GENOVA-grid01-atlas-lcgpbs','status':'notOK'}, 'INFN-LECCE' : {'nickname':'INFN-LECCE-gridce-atlas-lcgpbs','status':'notOK'}, 'INFN-LNL-2' : {'nickname':'INFN-LNL-2-t2-ce-02-atlas-lcglsf','status':'notOK'}, 'INFN-LNS' : {'nickname':'INFN-LNS-grid-ce-infinite-lcgpbs','status':'notOK'}, 'INFN-MILANO' : {'nickname':'INFN-MILANO-t2-ce-01-atlas-lcgpbs','status':'OK'}, 'INFN-NAPOLI-ATLAS' : {'nickname':'INFN-NAPOLI-ATLAS-atlasce01-atlas_short-lcgpbs','status':'OK'}, 'INFN-NAPOLI' : {'nickname':'INFN-NAPOLI-griditce01-atlas-lcgpbs','status':'notOK'}, 'INFN-NAPOLI-PAMELA' : {'nickname':'INFN-NAPOLI-PAMELA-pamelace01-atlas-lcgpbs','status':'notOK'}, 'INFN-PADOVA' : {'nickname':'INFN-PADOVA-prod-ce-01-atlas-lcglsf','status':'notOK'}, 'INFN-PISA' : {'nickname':'INFN-PISA-gridce2-atlas4-lcglsf','status':'notOK'}, 'INFN-ROMA1' : {'nickname':'INFN-ROMA1-atlas-ce-01-atlasglong-lcglsf','status':'OK'}, 'INFN-ROMA2' : {'nickname':'INFN-ROMA2-grid003-atlas-lcgpbs','status':'notOK'}, 'INFN-ROMA3' : {'nickname':'INFN-ROMA3-gridce-atlas-lcgpbs','status':'notOK'}, 'INFN-T1' : {'nickname':'INFN-T1-ce05-lcg-atlas-lcglsf','status':'OK'}, 'INFN-T1_REPRO' : {'nickname':'INFN-T1_REPRO','status':'notOK'}, 'INFN-TORINO' : {'nickname':'INFN-TORINO-t2-ce-01-atlas-lcgpbs','status':'notOK'}, 'INFN-TRIESTE' : {'nickname':'INFN-TRIESTE-grid001-atlas-lcglsf','status':'notOK'}, 'IU_OSG' : {'nickname':'IU_OSG-pbs','status':'OK'}, 'IPNO' : {'nickname':'GRIF-IPNO-ipnls2001-atlas-pbs','status':'notOK'}, 'JINR-LCG2' : {'nickname':'JINR-LCG2-lcgce01-atlas-lcgpbs', 'status':'OK'}, 'LAPP' : {'nickname':'IN2P3-LAPP-lapp-ce01-atlas-pbs','status':'OK'}, 'LIP-COIMBRA' : {'nickname':'LIP-Coimbra-grid006-atlas-lcgpbs','status':'OK'}, 'LIP-LISBON' : {'nickname':'LIP-Lisbon-ce01-atlas-atlasgrid-lcgsge','status':'OK'}, 'LLR' : {'nickname':'GRIF-LLR-polgrid1-atlas-pbs','status':'notOK'}, 'LPC' : {'nickname':'IN2P3-LPC-clrlcgce03-atlas-lcgpbs','status':'OK'}, 'LRZ' : {'nickname':'LRZ-LMU-lcg-lrz-ce-atlas-sge','status':'OK'}, 'LYON' : {'nickname':'IN2P3-CC-cclcgceli02-long-bqs','status':'OK'}, 'LYON_REPRO' : {'nickname':'LYON_REPRO','status':'notOK'}, 'Lyon-T2' : {'nickname':'IN2P3-CC-T2-cclcgceli05-long-bqs','status':'OK'}, 'LTU_CCT' : {'nickname':'LTU_CCT-pbs','status':'OK'}, 'MANC' : {'nickname':'UKI-NORTHGRID-MAN-HEP-ce02-atlas-lcgpbs','status':'OK'}, 'MCGILL-LCG2' : {'nickname':'MCGILL-LCG2-atlas-ce-atlas-pbs','status':'OK'}, 'MONTREAL' : {'nickname':'Umontreal-LCG2-lcg-ce-atlas-lcgpbs','status':'notOK'}, 'MPP' : {'nickname':'MPPMU-grid-ce-long-sge','status':'OK'}, 'MWT2_IU' : {'nickname':'MWT2_IU-pbs','status':'OK'}, 'MWT2_UC' : {'nickname':'MWT2_UC-pbs','status':'OK'}, 'NDGF' : {'nickname':'NDGF-condor','status':'OK'}, 'NIKHEF-ELPROD' : {'nickname':'NIKHEF-ELPROD-gazon-atlas-pbs','status':'OK'}, 'NIKHEF_REPRO' : {'nickname':'NIKHEF_REPRO','status':'notOK'}, 'OUHEP_ITB' : {'nickname':'OUHEP_ITB-condor','status':'notOK'}, 'OU_PAUL_TEST' : {'nickname':'OU_OCHEP_SWT2-condor','status':'notOK'}, 'OU_OCHEP_SWT2' : {'nickname':'OU_OCHEP_SWT2-condor','status':'OK'}, 'OU_OSCER_ATLAS' : {'nickname':'OU_OSCER_ATLAS-lsf','status':'OK'}, 'OU_OSCER_ATLASdeb' : {'nickname':'OU_OSCER_ATLASdeb-lsf','status':'notOK'}, 'PSNC' : {'nickname':'PSNC-ce-atlas-pbs','status':'OK'}, 'PIC' : {'nickname':'pic-ce05-glong-lcgpbs','status':'OK'}, 'PIC_REPRO' : {'nickname':'PIC_REPRO','status':'notOK'}, 'prague_cesnet_lcg2' : {'nickname':'prague_cesnet_lcg2-skurut17-egee_atlas-lcgpbs','status':'notOK'}, 'RAL' : {'nickname':'RAL-LCG2-lcgce02-grid1000M-lcgpbs','status':'OK'}, 'RAL_REPRO' : {'nickname':'RAL_REPRO','status':'notOK'}, 'ru-Moscow-SINP-LCG2' : {'nickname':'ru-Moscow-SINP-LCG2-lcg02-atlas-lcgpbs','status':'OK'}, 'ru-PNPI' : {'nickname':'ru-PNPI-cluster-atlas-pbs','status':'OK'}, 'RDIGTEST' : {'nickname':'RDIGTEST','status':'notOK'}, 'ROMANIA02' : {'nickname':'RO-02-NIPNE-tbat01-atlas-lcgpbs','status':'OK'}, 'ROMANIA07' : {'nickname':'RO-07-NIPNE-tbit01-atlas-lcgpbs','status':'OK'}, 'RRC-KI' : {'nickname':'RRC-KI-gate-atlas-lcgpbs','status':'OK'}, 'RU-Protvino-IHEP' : {'nickname':'RU-Protvino-IHEP-ce0003-atlas-lcgpbs','status':'OK'}, 'SARA_REPRO' : {'nickname':'SARA_REPRO','status':'notOK'}, 'SFU-LCG2' : {'nickname':'SFU-LCG2-snowpatch-atlas-lcgpbs','status':'OK'}, 'SLACXRD' : {'nickname':'SLACXRD-lsf','status':'OK'}, 'SLAC_PAUL_TEST' : {'nickname':'SLACXRD-lsf','status':'notOK'}, 'SNS-PISA' : {'nickname':'SNS-PISA-gridce-atlas-lcgpbs','status':'notOK'}, 'SPACI-CS-IA64' : {'nickname':'SPACI-CS-IA64-square-atlas-lsf','status':'notOK'}, 'SWT2_CPB' : {'nickname':'SWT2_CPB-pbs','status':'OK'}, 'Taiwan-IPAS-LCG2' : {'nickname':'Taiwan-IPAS-LCG2-atlasce-atlas-lcgcondor','status':'notOK'}, 'TEST1' : {'nickname':'TEST1','status':'notOK'}, 'TEST2' : {'nickname':'TEST2','status':'notOK'}, 'TEST3' : {'nickname':'TEST3','status':'notOK'}, 'TEST4' : {'nickname':'TEST4','status':'notOK'}, 'TESTCHARMM' : {'nickname':'TESTCHARMM','status':'notOK'}, 'TESTGLIDE' : {'nickname':'TESTGLIDE','status':'notOK'}, 'TOKYO' : {'nickname':'TOKYO-LCG2-lcg-ce01-atlas-lcgpbs','status':'OK'}, 'TORONTO-LCG2' : {'nickname':'TORONTO-LCG2-bigmac-lcg-ce2-atlas-pbs','status':'OK'}, 'TRIUMF' : {'nickname':'TRIUMF-LCG2-ce1-atlas-lcgpbs','status':'OK'}, 'TRIUMF_DDM' : {'nickname':'TRIUMF_DDM','status':'notOK'}, 'TRIUMF_REPRO' : {'nickname':'TRIUMF_REPRO','status':'notOK'}, 'TW-FTT' : {'nickname':'TW-FTT-f-ce01-atlas-lcgpbs','status':'OK'}, 'TWTEST' : {'nickname':'TWTEST','status':'notOK'}, 'TestPilot' : {'nickname':'TestPilot','status':'notOK'}, 'UAM-LCG2' : {'nickname':'UAM-LCG2-grid003-atlas-lcgpbs','status':'OK'}, 'UBC' : {'nickname':'UBC-pbs','status':'OK'}, 'UBC_PAUL_TEST' : {'nickname':'UBC-pbs','status':'notOK'}, 'UIUC-HEP' : {'nickname':'UIUC-HEP-condor','status':'OK'}, 'UCITB_EDGE7' : {'nickname':'UCITB_EDGE7-pbs','status':'OK'}, 'UKI-LT2-IC-LeSC' : {'nickname':'UKI-LT2-IC-LeSC-mars-ce2-72hr-sge','status':'notok'}, 'UKI-LT2-IC-HEP' : {'nickname':'UKI-LT2-IC-HEP-ce00-72hr-sge','status':'OK'}, 'UKI-LT2-Brunel1' : {'nickname':'UKI-LT2-Brunel-dgc-grid-40-atlas-lcgpbs','status':'OK'}, 'UKI-LT2-Brunel2' : {'nickname':'UKI-LT2-Brunel-dgc-grid-44-atlas-lcgpbs','status':'OK'}, 'UKI-LT2-QMUL' : {'nickname':'UKI-LT2-QMUL-ce01-lcg_long_x86-lcgsge','status':'OK'}, 'UKI-LT2-RHUL' : {'nickname':'UKI-LT2-RHUL-ce2-atlas-pbs','status':'OK'}, 'UKI-LT2-UCL-CENTRAL' : {'nickname':'UKI-LT2-UCL-CENTRAL-gw-2-default-sge','status':'notok'}, 'UKI-LT2-UCL-HEP' : {'nickname':'UKI-LT2-UCL-HEP-pc90-lcgatlas-lcgpbs','status':'OK'}, 'UKI-NORTHGRID-LANCS-HEP': {'nickname':'UKI-NORTHGRID-LANCS-HEP-fal-pygrid-18-atlas-lcgpbs','status':'OK'}, 'UKI-NORTHGRID-LIV-HEP' : {'nickname':'UKI-NORTHGRID-LIV-HEP-hepgrid2-atlas-lcgpbs','status':'OK'}, 'UKI-NORTHGRID-SHEF-HEP' : {'nickname':'UKI-NORTHGRID-SHEF-HEP-lcgce0-atlas-lcgpbs','status':'OK'}, 'UKI-SCOTGRID-DURHAM' : {'nickname':'UKI-SCOTGRID-DURHAM-ce01-q3d-lcgpbs','status':'OK'}, 'UKI-SCOTGRID-ECDF' : {'nickname':'UKI-SCOTGRID-ECDF-ce-ecdf-lcgsge','status':'OK'}, 'UKI-SCOTGRID-GLASGOW' : {'nickname':'UKI-SCOTGRID-GLASGOW-svr021-q3d-lcgpbs','status':'OK'}, 'UKI-SOUTHGRID-BHAM-HEP' : {'nickname':'UKI-SOUTHGRID-BHAM-HEP-epgce1-atlas-lcgpbs','status':'OK'}, 'UKI-SOUTHGRID-BRIS-HEP' : {'nickname':'UKI-SOUTHGRID-BRIS-HEP-lcgce01-atlas-lcgpbs','status':'notok'}, 'UKI-SOUTHGRID-CAM-HEP' : {'nickname':'UKI-SOUTHGRID-CAM-HEP-serv03-atlas-lcgcondor','status':'OK'}, 'UKI-SOUTHGRID-OX-HEP' : {'nickname':'UKI-SOUTHGRID-OX-HEP-t2ce02-longoct-lcgpbs','status':'OK'}, 'UKI-SOUTHGRID-RALPP' : {'nickname':'UKI-SOUTHGRID-RALPP-heplnx206-atlas-lcgpbs','status':'OK'}, 'UC_ATLAS_MWT2' : {'nickname':'UC_ATLAS_MWT2-condor','status':'OK'}, 'UC_ATLAS_test' : {'nickname':'UC_ATLAS_MWT2-condor','status':'OK'}, 'UC_Teraport' : {'nickname':'UC_Teraport-pbs','status':'notOK'}, 'UMESHTEST' : {'nickname':'UMESHTEST','status':'notOK'}, 'UNI-FREIBURG' : {'nickname':'UNI-FREIBURG-ce-atlas-pbs','status':'OK'}, 'UTA-DPCC' : {'nickname':'UTA-DPCC-pbs','status':'OK'}, 'UTA-DPCC-test' : {'nickname':'UTA-DPCC-test-pbs','status':'OK'}, 'UTA_PAUL_TEST' : {'nickname':'UTA-SWT2-pbs','status':'notOK'}, 'UTA_SWT2' : {'nickname':'UTA-SWT2-pbs','status':'OK'}, 'UTD-HEP' : {'nickname':'UTD-HEP-sge','status':'OK'}, 'VICTORIA-LCG2' : {'nickname':'VICTORIA-LCG2-lcg-ce-general-lcgpbs','status':'OK'}, 'Wuppertal' : {'nickname':'wuppertalprod-grid-ce-dg_long-lcgpbs','status':'OK'}, ## Install sites 'BNL_ATLAS_Install' : {'nickname':'BNL_ATLAS_1-condor','status':'OK'}, 'AGLT2_Install' : {'nickname':'AGLT2-condor','status':'OK'}, 'BU_Atlas_Tier2o_Install' : {'nickname':'BU_ATLAS_Tier2o-pbs','status':'OK'}, 'HU_ATLAS_Tier2_Install' : {'nickname':'HU_ATLAS_Tier2-lsf','status':'OK'}, 'IU_OSG_Install' : {'nickname':'IU_OSG-pbs','status':'OK'}, 'MWT2_UC_Install' : {'nickname':'MWT2_UC-pbs','status':'OK'}, 'MWT2_IU_Install' : {'nickname':'MWT2_IU-pbs','status':'OK'}, 'UC_ATLAS_MWT2_Install' : {'nickname':'UC_ATLAS_MWT2-condor','status':'OK'}, 'WT2_Install' : {'nickname':'SLACXRD-lsf','status':'OK'}, 'SWT2_CPB_Install' : {'nickname':'SWT2_CPB-pbs','status':'OK'}, 'OU_OCHEP_SWT2_Install' : {'nickname':'OU_OCHEP_SWT2-condor','status':'OK'}, 'GLOW-ATLAS_Install' : {'nickname':'GLOW-ATLAS-condor','status':'OK'}, } # cloud-MoverID mapping PandaMoverIDs = { 'US' : 'BNL_ATLAS_DDM', 'CA' : 'TRIUMF_DDM', 'FR' : 'TRIUMF_DDM', 'IT' : 'TRIUMF_DDM', 'NL' : 'TRIUMF_DDM', 'DE' : 'TRIUMF_DDM', 'TW' : 'TRIUMF_DDM', 'UK' : 'TRIUMF_DDM', 'ES' : 'TRIUMF_DDM', } ## Legacy site definitions formerly from siteinfo.py # SiteName - OSG CE name, AAA_N (N integer) is used to have multiple entries for the site AAA, # AAA_ANALYSIS CE reserved for analysis # gatekeeper - fqdn of the gatekeeper host # queue - batch queue # osg_app, osg_data, osg_tmp, osg_wntmp - OSG SiteStorages # DQ2URL - URL of the dq2 http interface for the DQ2 server used for (bound to) that CE # special_par - additional Globus parameter, as dictionary (e.g. queue, maxWallTime) # python_path - if present, used instead of the system python # nodes - number of CPUs (used for WRR scheduling), unreliable # NOTOK - flag OK/anything_else (e.g.NOTOK) used by production pusher to choose CEs # osg_grid - OSG SiteStorage (where Grid software is available) # hostnames - 3 components array 'SE', array of beginnings, array of endings (e.g. ['SE', ['tier2', 'compute-'], ['.uchicago.edu', 'local']]) # copytools - array ['copytool', 'setup file if any'], e.g. ['dccp',''] # atlasrel - array containing installed ATLAS releases formatted as arrays: ATLAS release first, all the trf versions after (e.g. [['11.0.5', '1', '2'], ['12.0.31', '1'], ['12.0.6', '1', '2', '6']] # sitepar - site parameters per job; these override default job parameter {'pilotname':{'p1name':p1val, 'p2name':p2val, ...}, 'pilotname2':{'pXname':pXval}} # To test a job: # globus-job-run osgserv01.slac.stanford.edu/jobmanager-lsf -x '(queue="ANAL_QUE")(maxWallTime=1920)' /bin/hostname # NB To avoid programs leaving temporary files around, 'osg_tmp', supposed to contain the deprecated OSG_TMP, is now containing the value of OSG_WN_TMP, so it is not shared across the nodes of the cluster! sites={ # "SiteName":['gatekeeper', 'queue', 'osg_app', 'osg_data', 'osg_tmp', 'osg_wntmp', 'DQ2URL', 'special_par', 'python_path', ' nodes', 'NOTOK', 'osg_grid', 'hostnames', 'copytools', 'atlasrel', 'sitepar'], "AGLT2":['gate01.aglt2.org','condor','/atlas/data08/OSG/APP','/atlas/data08/OSG/DATA','/tmp','/tmp','',{},'/atlas/data08/OSG/APP/atlas_app/python/python-2.4.1/Python-2.4.1/python','118','NOTOK','/afs/atlas.umich.edu/OSG',[],[],[['12.0.31', '1', '3', '4', '5', '6', '7', '8', '2'], ['12.3.0', '1'], ['12.0.3', '1', '2'], ['11.0.42'], ['12.0.4', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']]], "ANALY_AGLT2":['gate01.aglt2.org','condor','/atlas/data08/OSG/APP','/atlas/data08/OSG/DATA','/tmp','/tmp','',{'queue':"analy"},'/atlas/data08/OSG/APP/atlas_app/python/python-2.4.1/Python-2.4.1/python','4','NOTOK','/afs/atlas.umich.edu/OSG'], "ANALY_NET2":['atlas.bu.edu','pbs','/atlasgrid/Grid3-app/','/atlasgrid/osg-data','/scratch/','/scratch/','', {'queue':"analysis",'maxWallTime':"4500"},'/atlasgrid/Grid3-app/atlas_app/python/python-2.4.1/Python-2.4.1/python',150,'OK',None,[],[],[['11.0.0'], ['11.0.1'], ['11.0.2'], ['11.0.3'], ['11.0.4'], ['12.0.3', '1', '2'], ['11.0.42'], ['11.3.0'], ['11.0.5'], ['11.5.0'], ['12.0.31', '1', '2', '3', '4', '5', '6', '7', '8'], ['12.0.0', '3'], ['12.0.1', '1', '2', '3'], ['12.0.2', '1', '2', '3'], ['12.3.0', '1'], ['12.0.4', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']]], "BU_ATLAS_Tier2":['atlas.bu.edu','pbs','/atlasgrid/Grid3-app/','/atlasgrid/osg-data','/scratch/','/scratch/','', {'maxWallTime':"4500"},'/atlasgrid/Grid3-app/atlas_app/python/python-2.4.1/Python-2.4.1/python',150,'OK',None,[],[],[['11.0.0'], ['11.0.1'], ['11.0.2'], ['11.0.3'], ['11.0.4'], ['12.0.3', '1', '2'], ['11.0.42'], ['11.3.0'], ['11.0.5'], ['11.5.0'], ['12.0.31', '1', '2', '3', '4', '5', '6', '7', '8'], ['12.0.0', '3'], ['12.0.1', '1', '2', '3'], ['12.0.2', '1', '2', '3'], ['12.3.0', '1'], ['12.0.4', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']]], "BU_ATLAS_Tier2o":['atlas.bu.edu','pbs','/atlasgrid/Grid3-app','/atlasgrid/osg-data','/scratch/','/scratch/','', {'queue':"opteron",'maxWallTime':"4500"},'/atlasgrid/Grid3-app/atlas_app/python-2/python-2.4.1/Python-2.4.1/python',150,'OK',None,[],[],[['11.0.0'], ['11.0.1'], ['11.0.2'], ['11.0.3'], ['11.0.4'], ['12.0.3', '1', '2'], ['11.0.42'], ['11.3.0'], ['11.0.5'], ['11.5.0'], ['12.0.31', '1', '2', '3', '4', '5', '6', '7', '8'], ['12.0.0', '3'], ['12.0.1', '1', '2', '3'], ['12.0.2', '1', '2', '3'], ['12.3.0', '1'], ['12.0.4', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']]], #"HU_ATLAS_Tier2":['heroatlas.fas.harvard.edu','lsf','/n/circelfs/osg/app','/n/circelfs/osg/data','/scratch/','/scratch/','http://atlas001.bu.edu:8000/dq2/', {'queue':"scavenge",'maxWallTime':"4500"},'/n/circelfs/osg/app/atlas_app/python/python-2.4.1/Python-2.4.1/python',512,'OK','/n/circelfs/osg/wn-client',[],['necp',''],[['11.0.0'], ['11.0.1'], ['11.0.2'], ['11.0.3'], ['11.0.4'], ['12.0.3', '1', '2'], ['11.0.42'], ['11.3.0'], ['11.0.5'], ['11.5.0'], ['12.0.31', '1', '2', '3', '4', '5', '6', '7', '8'], ['12.0.0', '3'], ['12.0.1', '1', '2', '3'], ['12.0.2', '1', '2', '3'], ['12.3.0', '1'], ['12.0.4', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']]], "HU_ATLAS_Tier2":['heroatlas.fas.harvard.edu','lsf','/n/data1/ATLAS/osg/app','/n/data1/ATLAS/osg/data','/scratch/','/scratch/','', {'maxWallTime':"4500"},'/n/data1/ATLAS/osg/app/atlas_app/python/python-2.4.1/Python-2.4.1/python',512,'OK','/n/data1/ATLAS/osg/wn-client',[],['necp',''],[['11.0.0'], ['11.0.1'], ['11.0.2'], ['11.0.3'], ['11.0.4'], ['12.0.3', '1', '2'], ['11.0.42'], ['11.3.0'], ['11.0.5'], ['11.5.0'], ['12.0.31', '1', '2', '3', '4', '5', '6', '7', '8'], ['12.0.0', '3'], ['12.0.1', '1', '2', '3'], ['12.0.2', '1', '2', '3'], ['12.3.0', '1'], ['12.0.4', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']]], "ANALY_HU_ATLAS_Tier2":['heroatlas.fas.harvard.edu','lsf','/n/data1/ATLAS/osg/app','/n/data1/ATLAS/osg/data','/scratch/','/scratch/','', {'maxWallTime':"4500"},'/n/data1/ATLAS/osg/app/atlas_app/python/python-2.4.1/Python-2.4.1/python',512,'OK','/n/data1/ATLAS/osg/wn-client',[],['necp',''],[['11.0.0'], ['11.0.1'], ['11.0.2'], ['11.0.3'], ['11.0.4'], ['12.0.3', '1', '2'], ['11.0.42'], ['11.3.0'], ['11.0.5'], ['11.5.0'], ['12.0.31', '1', '2', '3', '4', '5', '6', '7', '8'], ['12.0.0', '3'], ['12.0.1', '1', '2', '3'], ['12.0.2', '1', '2', '3'], ['12.3.0', '1'], ['12.0.4', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']]], "Purdue-Physics":['grid.physics.purdue.edu','pbs','/project/grid/app','/project/grid/data','/scratch','/scratch','',{},'/usr/bin/python',2,'NOTOK'], #OSG_TMP:/project/grid/data # "ASCC_OSG":['osgc01.grid.sinica.edu.tw','condor','/opt/app','/opt/wntmp','',{},'/usr/bin/python',2,'NOTOK'], "Purdue-ITaP":['osg.rcac.purdue.edu','pbs','/apps/02','/scratch/osg','/tmp','/tmp','',{},'/usr/bin/python',2,'NOTOK'],#OSG_TMP:/scratch/local "CIT_CMS_PG":['tier2b.cacr.caltech.edu','condor','/raid1/OSG-app','/raid1/OSG-data','/tmp','/tmp','',{},'/usr/bin/python',2,'NOTOK'],#OSG_TMP:/raid1/OSG-shared-tmp "NERSC-PDSF":['pdsfgrid2.nersc.gov','sge','/auto/pdsfdv29/OSG/apps','/auto/pdsfdv29/OSG/data','/scratch','/scratch','',{},'/usr/bin/python',2,'NOTOK'], #OSG_TMP:/auto/pdsfdv29/OSG/tmp "GRASE-CCR-ACDC":['acdc.ccr.buffalo.edu','pbs','/grid-tmp/grid-apps','/grid-tmp/grid-data','/scratch','/scratch','',{},'/usr/bin/python',2,'NOTOK'], #OSG_TMP:/grid-tmp "FNAL-DDS2":['cmsp4.fnal.gov','condor','/data/app','/data/osgdata','/data/scratch','/data/scratch','',{},'/usr/bin/python',2,'NOTOK'], "FNAL_FERMIGRID":['fermigrid1.fnal.gov','condor','/usr/local/app','/usr/local/data','/scratch','/scratch','',{},'/usr/bin/python',2,'NOTOK'], "UIOWA-OSG-PROD":['rtgrid1.its.uiowa.edu','condor','/home/space/apps','/home/space/data','/tmp','/tmp','',{},'/usr/bin/python',2,'NOTOK'], #OSG_TMP:/home/space/scratch "GRASE-CCR-U2":['u2-grid.ccr.buffalo.edu','pbs','/san4/scratch/grid-tmp/grid-apps','/san4/scratch/grid-tmp/grid-data','/scratch','/scratch','',{},'/usr/bin/python',2,'NOTOK'], #OSG_TMP:/san4/scratch/grid-tmp "USCMS-FNAL-WC1-CE":['cmsosgce.fnal.gov','condor','/uscms/osg/app','gsiftp://cmsdca1.fnal.gov:2811/','/uscms_data/d1/grid_tmp/osg','managed','',{},'/usr/bin/python',2,'NOTOK'], "IU_OSG":['m3.quarry.teragrid.iu.edu','pbs','/N/osgapp','/N/dc/scratch/osg/scratch/osg_data','/scratch/osg/','/scratch/osg/','',{'maxWallTime':"4500"},'',48,'NOTOK','/usr/local/osg',[], ['gridftp', '/usr/local/osg/setup.sh'], []], #OSG_TMP:/N/dc/scratch/osg/scratch/osg_tmp OSG_GRID:/N/soft/linux-rhel4_AS-x86_64/osg-1.0.0-wn "OSG_LIGO_PSU":['grid3.aset.psu.edu','pbs','/usr15/grid3/app','/usr16/grid3/data','/usr17/grid3/tmpwn','/usr18/grid3/tmpwn','',{},'/usr/bin/python',2,'NOTOK'], #OSG_TMP:/usr17/grid3/tmp "ANALY_BNL_ATLAS_1":['gridgk02.racf.bnl.gov','condor','/usatlas/OSG','/usatlas/prodjob/share/','/tmp','/tmp','',{'queue':"short"},'/direct/usatlas+u/gfg/python-latest/python-2.4.1/python-2.4.1/bin/python',2,'NOTOK', None, [], [], [['10.0.1'], ['10.0.4'], ['11.0.0'], ['11.0.1'], ['11.0.2'], ['11.0.3'], ['11.0.4'], ['11.0.42'], ['11.0.5'], ['11.3.0'], ['11.5.0'], ['12.0.0', '3'], ['12.0.1', '1', '2', '3'], ['12.0.2', '1', '2', '3'], ['9.0.4'], ['12.0.3', '1', '2'], ['12.0.31', '1', '2', '3', '4', '5', '6', '7', '8'], ['12.3.0', '1'], ['12.0.4', '1', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']]], #OSG_TMP:/usatlas/scratch/dtyu/atlas_scratch_space "ANALY_LONG_BNL_ATLAS":['gridgk02.racf.bnl.gov','condor','/usatlas/OSG','/usatlas/prodjob/share/','/tmp','/tmp','',{'queue':"distr_analysis"},'/direct/usatlas+u/gfg/python-latest/python-2.4.1/python-2.4.1/bin/python',2,'NOTOK', None, [], [], [['10.0.1'], ['10.0.4'], ['11.0.0'], ['11.0.1'], ['11.0.2'], ['11.0.3'], ['11.0.4'], ['11.0.42'], ['11.0.5'], ['11.3.0'], ['11.5.0'], ['12.0.0', '3'], ['12.0.1', '1', '2', '3'], ['12.0.2', '1', '2', '3'], ['9.0.4'], ['12.0.3', '1', '2'], ['12.0.31', '1', '2', '3', '4', '5', '6', '7', '8'], ['12.3.0', '1'], ['12.0.4', '1', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']]], #OSG_TMP:/usatlas/scratch/dtyu/atlas_scratch_space "BNL_ATLAS_1":['gridgk02.racf.bnl.gov','condor','/usatlas/OSG','/usatlas/prodjob/share/','/tmp','/tmp','',{'queue':"prod"},'/direct/usatlas+u/gfg/python-latest/python-2.4.1/python-2.4.1/bin/python',300,'NOTOK', None, [], [], [['10.0.1'], ['10.0.4'], ['11.0.0'], ['11.0.1'], ['11.0.2'], ['11.0.3'], ['11.0.4'], ['11.0.42'], ['11.0.5'], ['11.3.0'], ['11.5.0'], ['12.0.0', '3'], ['12.0.1', '1', '2', '3'], ['12.0.2', '1', '2', '3'], ['9.0.4'], ['12.0.3', '1', '2'], ['12.0.31', '1', '2', '3', '4', '5', '6', '7', '8'], ['12.3.0', '1'], ['12.0.4', '1', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']]], #OSG_TMP:/usatlas/scratch/dtyu/atlas_scratch_space "UWMilwaukee":['nest.phys.uwm.edu','condor','/opt/osg/app','/opt/osg/data','/tmp','/tmp','',{},'/usr/bin/python',2,'NOTOK', None, [], [], []], #OSG_TMP:/opt/osg/tmp "ANALY_OU_OCHEP_SWT2":['tier2-01.ochep.ou.edu','condor','/ibrix/app/gridapp','/ibrix/data/griddata','/state/partition1/gridtmp','/state/partition1/gridtmp','http://tier2-02.ochep.ou.edu:8000/dq2/',{'queue':"analy"},'/ibrix/app/gridapp/atlas_app/python/python-2.4.1/Python-2.4.1/python',2,'NOTOK',None,[],[],[]], "OUHEP_ITB":['osgitb1.nhn.ou.edu','condor','/usr/local/osg_app','/home/osg_data','/myhome1/atlas/osg/tmp','/myhome1/atlas/osg/tmp','',{'minMemory':"500"},'/usr/bin/python',20,'NOTOK', '/opt/osgwn', [], [], [['12.0.6', '1'], ['13.0.10']],{}], "OU_OCHEP_SWT2":['tier2-01.ochep.ou.edu','condor','/ibrix/app/gridapp','/ibrix/data/griddata','/state/partition1/gridtmp','/state/partition1/gridtmp','http://tier2-02.ochep.ou.edu:8000/dq2/',{},'/ibrix/app/gridapp/atlas_app/python/python-2.4.1/Python-2.4.1/python',20,'OK', None, [], [], [['11.0.42'], ['12.0.3', '1', '2'], ['11.0.3'], ['11.3.0'], ['11.0.5'], ['11.5.0'], ['12.0.0', '3'], ['12.0.1', '1', '2', '3'], ['11.0.4'], ['12.0.2', '1', '2', '3'], ['12.0.31', '1', '2', '3', '4', '5', '6', '7', '8'], ['12.3.0', '1'], ['12.0.4', '1', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']]], "OU_OSCER_ATLAS":['grid1.oscer.ou.edu','lsf','/hep/home/gridapp','/hep/data/griddata','/hep/data/gridtmp','{LSF_SCRATCH}','',{'queue':"hep",'maxWallTime':"2880"},'/hep/home/gridapp/atlas_app/python/python-2.4.1/Python-2.4.1/python',5,'OK', None, [], [], [['12.0.0', '3'], ['12.0.1', '1', '2', '3'], ['12.0.2', '2'], ['12.0.3', '1', '2'], ['12.0.31', '1', '2', '3', '4', '5', '6', '7', '8'], ['11.0.3'], ['12.3.0', '1'], ['12.0.4', '1', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']]], #OSG_TMP:/hep/data/gridtmp "OU_OSCER_ATLASdeb":['grid1.oscer.ou.edu','lsf','/hep/home/gridapp','/hep/data/griddata','/hep/data/gridtmp','{LSF_SCRATCH}','',{'queue':"hep_debug"},'/hep/home/gridapp/atlas_app/python/python-2.4.1/Python-2.4.1/python',5,'NOTOK','/hep/home/gridapp/osgwn', None, [], [], [['12.0.0', '3'], ['12.0.1', '1', '2', '3'], ['12.0.2', '2'], ['12.0.3', '1', '2'], ['12.0.31', '1', '2', '3', '4', '5', '6', '7', '8'], ['11.0.3'], ['12.3.0', '1'], ['12.0.4', '1', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']]], #OSG_TMP:/hep/data/gridtmp "SLACXRD":['osgserv01.slac.stanford.edu','lsf','/nfs/slac/g/grid/osg/app','/nfs/slac/g/grid/osg/data','/scratch','/scratch','',{'queue':'PROD_QUE','maxWallTime':'15830'},'/nfs/slac/g/grid/osg/app/atlas_app/python/python-2.4.1/Python-2.4.1/python',2,'OK', None, [], [], []], #OSG_TMP:/nfs/slac/g/grid/osg/tmp "ANALY_SLAC":['osgserv01.slac.stanford.edu', 'lsf','/nfs/slac/g/grid/osg/app','/nfs/slac/g/grid/osg/data','/scratch','/scratch','',{'queue':"ANAL_QUE",'maxWallTime':"15830"},'/nfs/slac/g/grid/osg/app/atlas_app/python/python-2.4.1/Python-2.4.1/python',2,'OK', None, [], [], []], #OSG_TMP:/nfs/slac/g/grid/osg/tmp "SDSS-TAM":['tam01.fnal.gov','condor','/gfs0/osg/osg-app','/gfs0/osg/osg-data','/ide1/osg-tmp','/ide1/osg-tmp','',{},'/usr/bin/python',2,'NOTOK', None, [], [], []], #OSG_TMP:/gfs0/osg/osg-tmp "UTA-DPCC-test":['atlas.dpcc.uta.edu','pbs','/data73/grid3-1.1.11/apps/','/data73/grid3-1.1.11/data','/scratch','/scratch','http://osg-itb2.dpcc.uta.edu:8000/dq2/',{'maxWallTime':"4500"},'/data73/grid3-1.1.11/apps/atlas_app/python/python-2.4.1/Python-2.4.1/python',120,'NOTOK', None, [], [], [['8.0.1'], ['11.0.2'], ['10.0.1'], ['10.0.4'], ['8.0.4'], ['8.0.5'], ['11.0.4'], ['12.0.3', '1', '2'], ['12.0.31', '1', '2', '3', '4', '5', '6', '7', '8'], ['11.0.3'], ['11.0.42'], ['9.0.1'], ['9.0.2'], ['9.0.3'], ['11.3.0'], ['11.0.1'], ['11.0.5'], ['11.5.0'], ['12.0.0', '3'], ['12.0.1', '1', '2', '3'], ['12.0.2', '1', '2', '3'], ['12.3.0', '1'], ['12.0.4', '1', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']]], #OSG_TMP:/data73/grid3-1.1.11/tmp "UTA-DPCC":['atlas.dpcc.uta.edu','pbs','/data73/grid3-1.1.11/apps/','/data73/grid3-1.1.11/data','/scratch','/scratch','http://osg-itb2.dpcc.uta.edu:8000/dq2/',{'maxWallTime':"4500"},'/data73/grid3-1.1.11/apps/atlas_app/python/python-2.4.1/Python-2.4.1/python',120,'NOTOK', None, [], [], [['8.0.1'], ['11.0.2'], ['10.0.1'], ['10.0.4'], ['8.0.4'], ['8.0.5'], ['11.0.4'], ['12.0.3', '1', '2'], ['12.0.31', '1', '2', '3', '4', '5', '6', '7', '8'], ['11.0.3'], ['11.0.42'], ['9.0.1'], ['9.0.2'], ['9.0.3'], ['11.3.0'], ['11.0.1'], ['11.0.5'], ['11.5.0'], ['12.0.0', '3'], ['12.0.1', '1', '2', '3'], ['12.0.2', '1', '2', '3'], ['12.3.0', '1'], ['12.0.4', '1', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']]], #OSG_TMP:/data73/grid3-1.1.11/tmp "SWT2_CPB":['gk01.atlas-swt2.org','pbs','/cluster/grid/app','/cluster/grid/data','/scratch','/scratch','',{'maxWallTime':"4500"},'/cluster/grid/app/atlas_app/python/python-2.4.1/Python-2.4.1/python',2,'NOTOK','/cluster/grid/wn-client',[],[],[]], "UTA_SWT2":['gk04.swt2.uta.edu','pbs','/ifs1/grid/app/','/ifs1/grid/data/','/scratch','/scratch','',{'maxWallTime':"4500"},'/ifs1/grid/app/atlas_app/python/python-2.4.1/Python-2.4.1/python',120,'NOTOK', None, [], [], []], "ANALY_UTA-DPCC":['atlas.dpcc.uta.edu','pbs','/data73/grid3-1.1.11/apps/','/data73/grid3-1.1.11/data','/scratch','/scratch','http://osg-itb2.dpcc.uta.edu:8000/dq2/',{'maxWallTime':"4500"},'/data73/grid3-1.1.11/apps/atlas_app/python/python-2.4.1/Python-2.4.1/python',2,'NOTOK', None, [], [], [['8.0.1'], ['11.0.2'], ['10.0.1'], ['10.0.4'], ['8.0.4'], ['8.0.5'], ['11.0.4'], ['12.0.3', '1', '2'], ['12.0.31', '1', '2', '3', '4', '5', '6', '7', '8'], ['11.0.3'], ['11.0.42'], ['9.0.1'], ['9.0.2'], ['9.0.3'], ['11.3.0'], ['11.0.1'], ['11.0.5'], ['11.5.0'], ['12.0.0', '3'], ['12.0.1', '1', '2', '3'], ['12.0.2', '1', '2', '3'], ['12.3.0', '1'], ['12.0.4', '1', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']]], #OSG_TMP:/data73/grid3-1.1.11/tmp "ANALY_UTA-DPCC_a":['atlas.dpcc.uta.edu','pbs','/data73/grid3-1.1.11/apps/','/data73/grid3-1.1.11/data','/scratch','/scratch','http://osg-itb2.dpcc.uta.edu:8000/dq2/',{'maxWallTime':"4500"},'/data73/grid3-1.1.11/apps/atlas_app/python/python-2.4.1/Python-2.4.1/python',2,'NOTOK', None, [], [], [['8.0.1'], ['11.0.2'], ['10.0.1'], ['10.0.4'], ['8.0.4'], ['8.0.5'], ['11.0.4'], ['12.0.3', '1', '2'], ['12.0.31', '1', '2', '3', '4', '5', '6', '7', '8'], ['11.0.3'], ['11.0.42'], ['9.0.1'], ['9.0.2'], ['9.0.3'], ['11.3.0'], ['11.0.1'], ['11.0.5'], ['11.5.0'], ['12.0.0', '3'], ['12.0.1', '1', '2', '3'], ['12.0.2', '1', '2', '3'], ['12.3.0', '1'], ['12.0.4', '1', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']]], #OSG_TMP:/data73/grid3-1.1.11/tmp "UTD-HEP":['fester.utdallas.edu','sge','/net/yy/ph/u1/usatlas1/ap','/net/yy/dat','/stg','/stg','',{},'/net/yy/ph/u1/usatlas1/ap/atlas_app/python/python-2.4.1/Python-2.4.1/python',10,'OK', None, [], [], [['12.0.31', '1', '2', '3', '4', '5', '6', '7', '8'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']]], "agt_bu_edu":['agt.bu.edu','pbs','/data/apps','/data/osgdata','/scratch','/scratch','',{},'/usr/local/IT/python-2.4.1/bin/python',2,'NOTOK'], #OSG_TMP:/data/scratch "TTU_ANTAEUS":['antaeus.hpcc.ttu.edu','condor','/home/app','/home/data','/scratch','/scratch','',{},'/usr/bin/python',2,'NOTOK'], #OSG_TMP:/home/scratch "GRASE-ALBANY":['grid.rit.albany.edu','condor','/opt/data/grid-temp/grid-apps','/opt/data/grid-temp/grid-data','/tmp','/tmp','',{},'/usr/bin/python',2,'NOTOK'], #OSG_TMP:/opt/data/grid-temp "GRASE-CCR-MAMA":['mama.ccr.buffalo.edu','pbs','/grid-tmp/grid-apps','/grid-tmp/grid-data','/scratch','/scratch','',{},'/usr/bin/python',2,'NOTOK'], #OSG_TMP:/grid-tmp "UNM_HPC":['milta.alliance.unm.edu','pbs','/Grid2003/app','/Grid2003/raid1/data','/localscratch','/localscratch','',{},'/usr/bin/python',2,'NOTOK'], #OSG_TMP:/Grid2003/raid1/shared-scratch "GRASE-BINGHAMTON":['rommel.cs.binghamton.edu','pbs','/opt/grid3_share/apps','/opt/grid3_share/data','/opt/grid3_share/tmp','/opt/grid3_share/tmp','',{},'/usr/bin/python',2,'NOTOK'], #OSG_TMP:/opt/grid3_share/scratch "UFlorida-PG":['ufloridapg.phys.ufl.edu','condor','/raid/data1/pg/app','/raid/data1/pg/data','/state/partition1/wntmp','/state/partition1/wntmp','',{},'/usr/bin/python',2,'NOTOK'], #OSG_TMP:/raid/data1/pg/tmp "UWMadisonCMS":['cmsgrid02.hep.wisc.edu','condor','/afs/hep.wisc.edu/osg/app','/afs/hep.wisc.edu/osg/data','/tmp','/tmp','',{},'/usr/bin/python',2,'NOTOK'], #OSG_TMP:/afs/hep.wisc.edu/osg/tmp "VAMPIRE-Vanderbilt":['vampire.accre.vanderbilt.edu','pbs','/home/grid-app','/home/grid-data','/tmp','/tmp','',{},'/usr/bin/python',2,'NOTOK'], #OSG_TMP:/home/grid-tmp "HAMPTONU":['hercules.hamptonu.edu','condor','/opt/app','/opt/data','/opt/tmp','/CHANGE-tmp','',{},'/usr/bin/python',2,'NOTOK', None, [], [], [['12.0.0', '3'], ['12.3.0', '1'], ['12.0.3', '2', '1'], ['12.0.2', '1', '2', '3'], ['12.0.4', '2', '1'], ['11.0.42'], ['12.0.1', '1', '3', '2'], ['9.0.4'], ['11.0.5'], ['12.0.31', '7', '1', '6', '3', '4', '2', '5'], ['10.0.1']]], "TACC":['bandera.tacc.utexas.edu','condor','/osg/apps','/osg/data','/osg/tmp','/osg/tmp','',{},'/usr/bin/python',2,'NOTOK'], #OSG_TMP:/osg/scratch "UBC":['hep.westgrid.ca','pbs','/export/LHC/software/Panda',None,None,'/scratch',None,{'queue':"ice"},'/export/LHC/software/Panda/atlas_app/python/python-2.4.1/Python-2.4.1/python',10,'NOTOK', None, [], [], [], {'pilot2':{'h':'UBC-lcgpbs'}}], "UC_ATLAS_MWT2":['tier2-osg.uchicago.edu','condor','/share/app','/share/data','/scratch','/scratch','',{},'/share/app/atlas_app/python/python-2.4.1/Python-2.4.1/python',100,'OK', '/share/wn-client/', ['SE', ['tier2', 'compute-'], ['.uchicago.edu', 'local']], ['lcg-cp2','/share/wn-client/setup.sh'], [['10.0.1'], ['10.0.4'], ['10.3.0'], ['11.0.0'], ['11.0.1'], ['11.0.2'], ['11.0.3'], ['9.0.4'], ['11.0.4-old'], ['11.0.4'], ['11.0.42'], ['11.3.0'], ['11.0.5'], ['11.5.0'], ['12.0.0', '3'], ['12.0.1', '1', '2', '3'], ['12.0.2', '1', '2', '3'], ['12.0.3', '1', '2'], ['12.0.31', '1', '2', '3', '4', '5', '6', '7', '8'], ['12.3.0', '1'], ['12.0.4', '1', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']]], #OSG_TMP:/share/tmp "ANALY_MWT2":['uct2-grid6.mwt2.org','pbs','/osg/app','/osg/data','/scratch','/scratch','',{'queue':'analy'},'/osg/app/atlas_app/python/python-2.4.1/Python-2.4.1/python',200,'OK', '/share/wn-client/', ['SE', ['uct2-'], ['.uchicago.edu', '.mwt2.org']], ['lcg-cp2',''], [['12.0.31', '2', '3', '4', '5', '1', '6', '7', '8'], ['11.0.5'], ['11.0.42'], ['11.0.3'], ['12.0.3', '2', '1'], ['12.3.0', '1'], ['12.0.4', '1', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']], {'pilot2':{'j':'True'}}], "ANALY_MWT2_SHORT":['uct2-grid6.mwt2.org', 'pbs', '/osg/app', '/osg/data', '/scratch', '/scratch', '', {'queue': 'analy_short'},'/osg/app/atlas_app/python/python-2.4.1/Python-2.4.1/python', 200, 'OK', '/share/wn-client/', ['SE', ['uct2-'], ['.uchicago.edu','.mwt2.org']], ['lcg-cp2',''], [['12.0.31', '2', '3', '4', '5', '1', '6', '7', '8'], ['11.0.5'], ['11.0.42'], ['11.0.3'], ['12.0.3', '2', '1'], ['12.3.0', '1'], ['12.0.4', '1', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']], {'pilot2':{'j':'True'}}], "UCITB_EDGE7":['uct3-edge7.uchicago.edu','pbs','/osg/app','/osg/data','/scratch','/scratch','http://uct2-grid1.uchicago.edu:8000/dq2/',{'maxWallTime':"4500"},'/osg/app/atlas_app/python/python-2.4.1/Python-2.4.1/python',55,'OK', '/opt/OSG/', ['SE', ['uct2-'], ['.uchicago.edu','.mwt2.org','.local']], ['gridftp','/osg/app/vdt_client/setup.sh'], [], {'pilot2':{'j':'True'}}], "MWT2_UC":['uct2-grid6.mwt2.org','pbs','/osg/app','/osg/data','/scratch','/scratch','',{'queue':'prod'},'/osg/app/atlas_app/python/python-2.4.1/Python-2.4.1/python', 800, 'OK', '/share/wn-client/', ['SE', ['uct2-'], ['.uchicago.edu','.mwt2.org','.local']], ['lcg-cp2','/share/wn-client/setup.sh'], [['12.0.31', '2', '3', '4', '5', '1', '6', '7', '8'], ['11.0.5'], ['11.0.42'], ['11.0.3'], ['12.0.3', '2', '1'], ['12.3.0', '1'], ['12.0.4', '1', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']], {'pilot2':{'j':'True'}}], "MWT2_IU":['iut2-grid6.mwt2.org','pbs','/osg/app','/osg/data','/scratch','/scratch','',{'maxWallTime':"4500"},'/osg/app/atlas_app/python/python-2.4.1/Python-2.4.1/python',55,'OK', '/opt/OSG/', ['SE', ['iut2-'], ['.iu.edu','.mwt2.org','.local']], ['dccp',''],[['12.0.31', '2', '3', '4', '5', '1', '6', '7', '8'], ['11.0.5'], ['11.0.42'], ['11.0.3'], ['12.0.3', '2', '1'], ['12.3.0', '1'], ['12.0.4', '1', '2'], ['12.0.5', '1', '2', '3'], ['12.0.6', '1', '2', '3', '4', '5']]], "Nebraska":['red.unl.edu','condor','/opt/osg/app','/opt/osg/data','/tmp','/tmp','',{},'/usr/bin/python',2,'NOTOK'], #OSG_TMP:/opt/osg/tmp "LTU_CCT":['ltu.cct.lsu.edu','pbs','/panasas/osg/app','/panasas/osg/data','/var/scratch','/var/scratch','http://gk03.swt2.uta.edu:8000/dq2/',{'queue': 'single','maxWallTime':"2880"},'/panasas/osg/app/atlas_app/python/python-2.4.1/python-2.4.1/bin/python',16,'OK','/panasas/osg/wn', [], [], [], {}], "IllinoisHEP":['osgx0.hep.uiuc.edu','condor','/home/osgstore/app','/home/osgstore/data','/home/osgstore/tmp','/home/osgstore/tmp','http://iut2-grid1.iu.edu:8000/dq2/',{},'',16,'notOK','/home/osg/osg-wn', [], [], [], {}], "ANALY_IllinoisHEP":['osgx0.hep.uiuc.edu','condor','/home/osgstore/app','/home/osgstore/data','/home/osgstore/tmp','/home/osgstore/tmp','http://iut2-grid1.iu.edu:8000/dq2/',{},'',16,'notOK','/home/osg/osg-wn', [], [], [], {}], } load_usatlas_prod_sites = True if load_usatlas_prod_sites: ## Clones of sites, for customization below def getSite(sitename): newsite = [] for s in sites: if s == sitename: newsite = sites[s] return newsite return None newsite = getSite('SWT2_CPB') sites['ANALY_SWT2_CPB'] = newsite for site in sites: if site in kill_sites: continue if site in activate_sites: pass else: if sites[site][10].lower() != 'ok': pass #print "WARNING: activating site %s even though not marked OK. Status in siteinfo is %s" % ( site, sites[site][10] ) #continue gatekeeper = sites[site][0] queue = sites[site][1] if site.find('BNL') >= 0: gatekeeper = 'gridgk04.racf.bnl.gov' nickname = '%s-%s' % (site, queue) #print "Loading %s" % nickname appdir = sites[site][2] datadir = sites[site][3] tmpdir = sites[site][4] environ = "APP=%s TMP=%s DATA=%s" % ( appdir, tmpdir, datadir ) wntmpdir = sites[site][5] dq2url = sites[site][6] if dq2url and ( dq2url[-1] != '/' ): dq2url = dq2url + '/' ddm = '' if DQ2Map.has_key(dq2url): ddm = DQ2Map[dq2url] else: pat = re.compile('.*\.([^\.]+)\.([^\.]+)$') matsite = pat.match(gatekeeper) domain = '%s.%s' % ( matsite.group(1), matsite.group(2) ) for dm in DQ2Map: if dm.find('%s:8000'%domain) > 0: ddm = DQ2Map[dm] globusopt = sites[site][7] pythonpath = sites[site][8] sitenodes = sites[site][9] sitestatus = sites[site][10] globusadd = '' if len(globusopt) > 0: for o in globusopt: globusadd += '(%s=%s)' % ( o, globusopt[o] ) else: globusadd = '(maxWallTime=4000)' if site == 'ANALY_SWT2_CPB': globusadd = '(maxWallTime=2500)(queue=atlas_analy_q)' if site == 'ANALY_UTA-DPCC': globusadd = '(maxWallTime=2500)(queue=atlas_analy_q)' if queue.find('blah') < 0: scheduler = '%s/jobmanager-%s' % ( gatekeeper, queue ) else: # For blah queues, I put the blah in the queue spec scheduler = '%s/%s' % ( gatekeeper, queue ) sitename = '?' for s in siteset: pat = re.compile(siteset[s]) mat = pat.match(site) if mat: sitename = s if sitename.lower().find('bnl') >= 0: environ += " http_proxy=http://squid.sec.bnl.local:3128 https_proxy=http://squid.sec.bnl.local:3128" if sitename.lower().find('slac') >= 0: environ += " http_proxy=http://atl-proxy.slac.stanford.edu:3128 https_proxy=https://atl-proxy.slac.stanford.edu:3128" queue_config = { 'name' : 'default', 'queue' : '%s' % scheduler, 'gatekeeper' : gatekeeper, 'system' : 'osg', 'site' : sitename, 'region' : 'US', 'se' : dq2url, 'ddm' : ddm, 'jdl' : '%s' % nickname, 'jdladd' : '', 'nickname' : nickname, 'nqueue' : nqueue_default, 'cmd' : 'condor_submit -verbose %s', 'environ' : environ, 'appdir' : "%s/atlas_app/atlas_rel" % appdir, 'datadir' : datadir, 'tmpdir' : tmpdir, 'wntmpdir' : wntmpdir, 'python_path' : pythonpath, 'dq2url' : dq2url, 'special_par' : globusadd, 'nodes' : sitenodes, #'status' : sitestatus, } queue_config['appdir'] = queue_config['appdir'].replace('//','/') jdldict = {} jdldict['name'] = queue_config['jdl'] jdldict['system'] = 'osg' jdldict['host'] = '' jdldict['jdl'] = """ Universe = grid globusscheduler = %s"""%scheduler+""" stream_output = false stream_error = false transfer_output = true transfer_error = true output = ==jobdir==/pilot.out error = ==jobdir==/pilot.err log = ==jobdir==/pilot.log should_transfer_files = YES when_to_transfer_output = ON_EXIT transfer_output_files = transfer_input_files = Notification = Never Notify_user = wenaus@gmail.com Executable = ==exe== Arguments = "==args==" transfer_executable = true globusrsl = (jobtype=single)%s"""%globusadd+""" copy_to_spool = false Requirements = (OpSys == "LINUX" && Arch == "INTEL") && (Disk >= DiskUsage) && (Memory >= 500) Rank = CPU_Speed Priority = +20 GetEnv = False leave_in_queue = JobStatus == 4 # automatic job removal # [policy] 1hr on HOLD # 2hr idle in condorg but not globus, i.e. not in queue on resource #periodic_hold = GridResourceUnavailableTime =!= UNDEFINED && (CurrentTime-GridResourceUnavailableTime > 1800) since = (CurrentTime-EnteredCurrentStatus) #periodic_remove = ( JobStatus == 5 && $(since) > 3600 ) || ( JobStatus == 4 && $(since) > 300 ) periodic_remove = ( JobStatus == 4 && $(since) > 300 ) submit_event_user_notes = pool:%s"""%site+""" ## Set non-essential flag for pilot behavior +Nonessential = True +Experiment = "atlas" +panda_pilotid = "==pilotid==" +panda_jobschedulerid = "==submitterid==" +is_pilot = True """ jdllist.append(jdldict) if site.lower().find('analy_long') >= 0: queue_config['jdladd'] += '+RACF_Group = "long"\n' elif site.lower().find('analy_bnl') >= 0: queue_config['jdladd'] += '+RACF_Group = "short"\n' schedconfig.append(queue_config) #### Schedd-Glidein Queues glideinTestQ = {} ## BNL Test GlideinQs ## [note] For those glidein queues for official use, they need to clone ## an official queue before their own customizations. Therefore, ## definitions are moved to clone queue session. glideinTestQ['BNL_GLIDE_TEST_1-condor'] = { 'name' : '%(name)s', 'queue' : '', 'gatekeeper' : 'gridtest01.racf.bnl.gov', 'system' : 'glidein', # osg, condor, or glidien 'site' : 'BNL', 'region' : 'US', #'environ' : ' _condor_JOBTYPE=Condor-C _condor_UNIVERSE=grid ', 'nickname' : 'BNL_GLIDE_TEST_1-condor', 'jdl' : 'schedd-condor-c', 'jdladd' : '+remote_jobuniverse = 5\n' + '+RACF_Group = "short"\n' + '+panda_CE = "BNL_SHORT"\n' + '+Launch_Mode = "Condor-C"\n', 'nqueue' : 2, # this would restrict number of submssions at a time 'jobmanager': 'condor03.usatlas.bnl.gov:9660', 'comment': 'Condor-C pilot submission with glidein schedd', 'cmd' : 'condor_submit -verbose -remote %(remote)s -pool %(pool)s %(cmdfile)s', # submit file, schedd, collector } glideinTestQ['TESTGLIDE'] = { 'name' : 'default', 'queue' : '', 'system' : 'osg', # osg, condor, or glidein 'site' : 'BNL', 'region' : 'US', 'nickname' : 'TESTGLIDE', 'jdl' : 'bnl-condor', # jdl name, used to index into the desired jdl template from table: jdllist 'jdladd' : '+RACF_Group = "short"\n' + '+panda_CE = "BNL_SHORT"\n', 'nqueue' : 2, 'cmd' : 'condor_submit -verbose %s', } for g in glideinTestQ: # to-do: set environment glideinTestQ[g]['cmtconfig'] = 'i686-slc4-gcc34-opt' schedconfig.append(glideinTestQ[g]) ####### Other site defs osgsites = {} osgjdl = {} #### Other ATLAS OSG osgsites['BNL_Install_test'] = { 'site' : 'BNL', 'region' : 'US', 'siteid' : 'BNL_Install_test', 'gatekeeper' : 'gridgk03.racf.bnl.gov', 'jobmanager' : 'condor', 'lfchost' : 'lfc.usatlas.bnl.gov', 'copyprefix' : '^srm://dcsrm.usatlas.bnl.gov', 'dq2url' : '', 'se' : 'srm://dcsrm.usatlas.bnl.gov', 'jdladd' : 'globusrsl = (queue=prod)\n', 'copytool' : 'BNLdccp', 'environ' : " http_proxy=http://squid.sec.bnl.local:3128 https_proxy=http://squid.sec.bnl.local:3128", #'environ' : '', 'copysetup' : '/afs/usatlas.bnl.gov/i386_redhat72/opt/dcache/dcache_client_config.sh', 'retry' : 'FALSE', 'proxy' : 'donothide', 'nqueue' : 2, 'status' : 'online', } osgsites['BNL_DDM'] = { 'site' : 'BNL', 'region' : 'US', 'gatekeeper' : 'gridgk03.racf.bnl.gov', # 'gatekeeper' : '', # 'jdl' : 'bnl-condor', 'jobmanager' : 'condor', 'lfchost' : 'lfc.usatlas.bnl.gov', 'lfcpath' : '/grid/atlas/dq2', 'lfcprodpath' : '/grid/atlas/dq2', 'copyprefix' : '^srm://dcsrm.usatlas.bnl.gov', 'dq2url' : '', 'se' : 'srm://dcsrm.usatlas.bnl.gov', 'sepath' : '/pnfs/usatlas.bnl.gov', 'seprodpath' : '/pnfs/usatlas.bnl.gov', #'jdladd' : 'globusrsl = (queue=distr_analysis)\n+RACF_Group = "dq2test"\n', 'jdladd' : 'globusrsl = (queue=dq2test)\n+RACF_Group = "dq2test"\n', 'copytool' : 'BNLdccp', #'environ' : " http_proxy=http://squid.sec.bnl.local:3128 https_proxy=http://squid.sec.bnl.local:3128", 'environ' : '', 'copysetup' : '/afs/usatlas.bnl.gov/i386_redhat72/opt/dcache/dcache_client_config.sh', 'retry' : 'FALSE', 'nqueue' : 75, 'status' : 'online', } osgsites['NDGF'] = { 'site' : 'Nordugrid', 'region' : 'Nordugrid', 'siteid' : 'NDGF', 'gatekeeper' : '', 'jobmanager' : 'condor', 'ddm' : 'NDGF-T1_MCDISK', # 'dq2url' : 'http://rls1.ndgf.org:8001/lrc/ws_', 'dq2url' : '', 'se' : 'token:ATLASMCDISK:srm://srm.ndgf.org:8443/srm/managerv2?SFN=', 'jdladd' : '', 'copytool' : 'mv', 'environ' : '', 'copysetup' : '', 'retry' : 'FALSE', 'nqueue' : 5, 'status' : 'online', } osgsites['ARC'] = { 'site' : 'ARC', 'region' : 'Nordic', 'siteid' : 'ARC', 'gatekeeper' : '', 'jobmanager' : 'condor', 'dq2url' : '', 'ddm' : 'NDGF-T1_MCDISK', 'se' : 'token:ATLASMCDISK:srm://srm.ndgf.org:8443/srm/managerv2?SFN=', 'jdladd' : '', 'copytool' : 'mv', 'environ' : '', 'copysetup' : '', 'retry' : 'FALSE', 'nqueue' : 5, 'status' : 'online', } osgsites['GLOW-ATLAS'] = { 'site' : 'UWMadison', 'region' : 'US', 'gatekeeper' : 'higgs08.cs.wisc.edu', 'jobmanager' : 'condor', 'appdir' : '/afs/hep.wisc.edu/atlas/osg/atlas_app/atlas_rel', 'wntmpdir' : '/tmp', 'datadir' : '/tmp', # 'dq2url' : 'http://atlas01.cs.wisc.edu:8000/dq2/', 'dq2url' : '', 'python_path' : '/home/atlas/atlas_app/python/python-2.4.1/Python-2.4.1/python', 'copytool' : 'xcp', 'lfchost' : 'higgs04.cs.wisc.edu', 'lfcpath' : '/grid/atlas/users/pathena', 'lfcprodpath' : '/grid/atlas/dq2', # 'se' : 'srm://atlas07.cs.wisc.edu:8443/srm/v2/server?SFN=/', 'se' : 'token:ATLASPRODDISK:srm://atlas07.cs.wisc.edu:8443/srm/v2/server?SFN=', 'setokens' : 'ATLASPRODDISK', 'sepath' : '/atlas/xrootd/atlasuserdisk', 'seprodpath' : '/atlas/xrootd/atlasproddisk', 'copyprefix' : '^srm://atlas07.cs.wisc.edu', 'copysetup' : '/afs/hep.wisc.edu/atlas/osg/atlasutils/setup.sh^srm://atlas07.cs.wisc.edu(:[0-9]+)*/srm/v2/server?SFN=/atlas/xrootd^root://atlas08.cs.wisc.edu:1094//atlas/xrootd^False^False', 'ddm' : 'WISC_PRODDISK', # 'ddm' : 'WISC', 'siteid' : 'GLOW-ATLAS', 'nqueue' : 3, 'queuehours' : 72, } ### OSG Integration testbed osgsites['OUHEP_ITB'] = { 'region' : 'US', 'gatekeeper' : 'ouhep1.nhn.ou.edu', 'jobmanager' : 'condor', 'jdladd' : 'globusrsl = (queue=atlas)\n', 'se' : '', } osgsites['GROW-ITB'] = { 'region' : 'US', 'gatekeeper' : 'grow-itb.its.uiowa.edu', 'jobmanager' : 'pbs', 'jdladd' : 'globusrsl = (queue=atlas)\n', 'se' : '', } osgsites['IUPUI_ITB'] = { 'region' : 'US', 'site' : 'IUPUI', 'gatekeeper' : 'feynman.uits.iupui.edu', 'jobmanager' : 'condor', 'se' : '', } # 'jdladd' : 'globusrsl = (queue=atlas)\n', osgsites['CMS-BURT-ITB'] = { 'region' : 'US', 'gatekeeper' : 'cmsitbsrv01.fnal.gov', 'jobmanager' : 'condor', 'jdladd' : 'globusrsl = (queue=atlas)\n', 'se' : '', } osgsites['ITB_INSTALL_TEST'] = { 'region' : 'US', 'gatekeeper' : 'cmssrv09.fnal.gov', 'jobmanager' : 'condor', 'jdladd' : 'globusrsl = (queue=atlas)\n', 'se' : '', } osgsites['CIT_ITB_1'] = { 'region' : 'US', 'gatekeeper' : 'citgrid3.cacr.caltech.edu', 'jobmanager' : 'condor', 'se' : '', } #### CERN testbed osgsites['CERN-PPS'] = { 'gatekeeper' : 'lxbra2501.cern.ch', 'site' : 'CERN-PPS', 'region' : 'CERN', 'jobmanager' : 'lcgpbs', 'localqueue' : 'atlas', 'system' : 'lcg-cg', 'jdladd' : 'globusrsl = (queue=atlas)\n', 'status' : 'online', } # 'jdladd' : 'globusrsl = (queue=atlas)\n', ### LCG via Condor-G # osgsites['UBC'] = { # 'region' : 'Canada', # 'gatekeeper' : 'hep.westgrid.ca', # 'jobmanager' : 'lcgpbs', # 'system' : 'lcg-cg', # 'jdladd' : 'globusrsl = (queue=ice)(maxWalltime=30)\n', # 'ddm' : 'SFU', # 'se' : '', # 'appdir' : '/export/LHC/software', # 'datadir' : '/scratch', # } ## Add LCG sites from BDII global loadlcg if loadlcg and os.path.exists('lcgLoad.py'): print "Updating LCG sites from BDII" try: print commands.getoutput('./lcgLoad.py') except Exception, e: print "Running lcgLoad.py failed:", e print "Reusing existing lcgQueueUpdate.py" execfile('lcgQueueUpdate.py') else: loadlcg = 0 ## Initialise lcg info tool for release tags and SE space global linfotool if loadlcg: linfotool = lcgInfositeTool.lcgInfositeTool() for osg in osgsites: print "Set up queue %s" % osg osgsites[osg]['name'] = 'default' if not osgsites[osg].has_key('site'): osgsites[osg]['site'] = osg if osgsites[osg]['jobmanager'].find('blah') < 0: osgsites[osg]['queue'] = '%s/jobmanager-%s' % ( osgsites[osg]['gatekeeper'], osgsites[osg]['jobmanager'] ) else: # for 'blah' queues, blah is in the jobmanager spec osgsites[osg]['queue'] = '%s/%s' % ( osgsites[osg]['gatekeeper'], osgsites[osg]['jobmanager'] ) if not osgsites[osg].has_key('system'): osgsites[osg]['system'] = 'osg' if osgsites[osg]['jobmanager'] != '': osgsites[osg]['nickname'] = '%s-%s' % ( osg, osgsites[osg]['jobmanager'] ) else: osgsites[osg]['nickname'] = osg if not osgsites[osg].has_key('nqueue') : osgsites[osg]['nqueue'] = nqueue_default osgsites[osg]['cmd'] = 'condor_submit -verbose %s' if not osgsites[osg].has_key('globusadd'): osgsites[osg]['globusadd'] = '' if not osgsites[osg].has_key('jdladd'): osgsites[osg]['jdladd'] = '' if not osgsites[osg].has_key('jdl'): osgsites[osg]['jdl'] = '%s' % osgsites[osg]['queue'] osgjdl[osg] = {} osgjdl[osg]['name'] = osgsites[osg]['jdl'] osgjdl[osg]['system'] = 'osg' osgjdl[osg]['host'] = '' osgjdl[osg]['jdl'] = """ Universe = grid globusscheduler = %s"""%osgsites[osg]['queue']+""" stream_output = false stream_error = false transfer_output = true transfer_error = true output = ==jobdir==/pilot.out error = ==jobdir==/pilot.err log = ==jobdir==/pilot.log should_transfer_files = YES when_to_transfer_output = ON_EXIT transfer_output_files = transfer_input_files = Notification = Never Notify_user = wenaus@gmail.com Executable = ==exe== Arguments = "==args==" transfer_executable = true globusrsl = (jobtype=single)(minMemory=500)%s"""%osgsites[osg]['globusadd']+""" copy_to_spool = false Requirements = (OpSys == "LINUX" && Arch == "INTEL") && (Disk >= DiskUsage) && (Memory >= 500) Rank = CPU_Speed Priority = +20 GetEnv = False leave_in_queue = JobStatus == 4 # automatic job removal # [policy] 1hr on HOLD # 2hr idle in condorg but not globus, i.e. not in queue on resource #periodic_hold = GridResourceUnavailableTime =!= UNDEFINED && (CurrentTime-GridResourceUnavailableTime > 1800) since = (CurrentTime-EnteredCurrentStatus) #periodic_remove = ( JobStatus == 5 && $(since) > 3600 ) || ( JobStatus == 4 && $(since) > 300 ) periodic_remove = ( JobStatus == 4 && $(since) > 300 ) ## Set non-essential flag for pilot behavior +Nonessential = True +Experiment = "atlas" +panda_pilotid = "==pilotid==" +panda_jobschedulerid = "==submitterid==" +is_pilot = True """ jdllist.append(osgjdl[osg]) else: print "Using jdl=%s for %s" % ( osgsites[osg]['jdl'], osgsites[osg]['nickname'] ) schedconfig.append(osgsites[osg]) #### Load storage_access_info.py to add the copy tools copytools = { #BNL sites "BNL_ATLAS_1":['BNLdccp','/afs/usatlas.bnl.gov/i386_redhat72/opt/dcache/dcache_client_config.sh'], "BNL_ATLAS_test":['BNLdccp','/afs/usatlas.bnl.gov/i386_redhat72/opt/dcache/dcache_client_config.sh'], "BNL_REL_VALID":['BNLdccp','/afs/usatlas.bnl.gov/i386_redhat72/opt/dcache/dcache_client_config.sh'], "BNL_ATLAS_DDM":['BNLdccp','/afs/usatlas.bnl.gov/i386_redhat72/opt/dcache/dcache_client_config.sh'], "ANALY_BNL_ATLAS_1":['BNLdccp','/afs/usatlas.bnl.gov/i386_redhat72/opt/dcache/dcache_client_config.sh'], # ITB sites "BNL_ITB_Test1":['BNLdccp','/afs/usatlas.bnl.gov/i386_redhat72/opt/dcache/dcache_client_config.sh'], "BNL_ITB_Test1b":['gridftp','/usatlas/OSG/OSG_WN_Clienti/setup.sh'], "Purdue-ITB":['gridftp','/apps/02/osg-wn-client-0.3.7/setup.sh'], "LIGO-CIT-ITB":['gridftp','/usr/local/grid/setup.sh'], "CIT_ITB_1":['gridftp','/apps/ITB-1.3.7-wnclient/setup.sh'], "IUPUI-ITB":['gridftp','/usr/local/grid/setup.sh'], "OUHEP_ITB":['gridftp','/opt/osgwn/setup.sh'], "OSG_ITB_PSU":['gridftp','/usr1/global/OSG-ITB-WN/setup.sh'], "TTU-TESTWULF":['gridftp','/usr/local/grid_OSG-0.3.7/setup.sh'], "UFlorida-IGT":['gridftp','/share/igt/osg/setup.sh'], "CMS-BURT-ITB":['gridftp','/fnal/products/osg/wn-client-0.3.7/setup.sh'], #MWT2 sites "UC_ATLAS_MWT2":['lcg-cp2','/share/wn-client/setup.sh'], "IU_OSG":['gridftp','/usr/local/osg/setup.sh'], "MWT2_IU":['lcg-cp2','/share/wn-client/setup.sh'], "MWT2_UC":['lcg-cp2','/share/wn-client/setup.sh'], "UC_Teraport":['gridftp','/home/software/linux-rhel4-x86_64/osg-0.6.0-r1/setup.sh'], #Other sites "HU_ATLAS_Tier2":['necp',''], "ANALY_HU_ATLAS_Tier2":['necp',''], "IllinoisHEP":['gridftp','/home/osg/wn/setup.sh'], "ANALY_IllinoisHEP":['gridftp','/home/osg/wn/setup.sh'], "OU_OSCER_ATLAS":['uberftp', '/hep/home/gridapp/atlas_app/UberFTP/setup.sh'], "OU_PAUL_TEST":['uberftp', '/hep/home/gridapp/atlas_app/UberFTP/setup.sh'], "SLACXRD":['xcp', '/afs/slac.stanford.edu/package/xrootd/atlasutils/setup.sh'], "ANALY_SLAC":['xcp', '/afs/slac.stanford.edu/package/xrootd/atlasutils/setup.sh'], "SLAC_PAUL_TEST":['xcp', '/afs/slac.stanford.edu/package/xrootd/atlasutils/setup.sh'], "UBC_PAUL_TEST":['lcg-cp', '/global/scratch/rwalker/LCGUI/etc/profile.d/grid_env.sh'], #"UBC":['lcg-cp', '/global/scratch/rwalker/LCGUI/etc/profile.d/grid_env.sh'], "TORONTO-LCG2":['lcg-cp', ''], "LTU_CCT":['uberftp', '/panasas/osg/wn/setup.sh'], "ALBERTA":['lcg-cp', ''], "BRUNEL":['lcg-cp', ''], "UVIC":['lcg-cp', ''], "TRIUMF":['lcg-cp', ''], "UBC":['lcg-cp', ''], "local":['gridftp',''], } for cs in copytools: for spec in schedconfig: if spec['nickname'][:spec['nickname'].find('-')] == cs: spec['copytool'] = copytools[cs][0] spec['copysetup'] = copytools[cs][1] ## Add LRC info for spec in schedconfig: if (not spec.has_key('ddm')) or (spec['ddm'] == ''): #print "Setting default DDM for", spec['nickname'] if spec['region'] == 'US': spec['ddm'] = 'BNLPANDA' # if spec['region'] == 'France': # spec['ddm'] = 'LYONDISK' # if spec['region'] == 'Italy': # spec['ddm'] = 'CNAFDISK' if spec['region'] == 'CERN': spec['ddm'] = 'CERN-PROD_MCDISK' if not spec.has_key('copytool'): if spec['region'] == 'US': spec['copytool'] = '' else: spec['copytool'] = 'lcgcp' ## Add cloud mappings clouds = {} clouds['US'] = "BNL GreatLakesT2 BostonU IndianaU MidwestT2 OU SLAC UChicago UTArlington UTDallas LouisianaTech UWMadison IllinoisHEP".split() clouds['CA'] = "TRIUMF TRIUMF_REPRO TRIUMF_DDM TORONTO-LCG2 ALBERTA-LCG2 VICTORIA-LCG2 UBC MCGILL-LCG2 MONTREAL-LCG2 SFU-LCG2".split() clouds['UK'] = "RAL-LCG2 RAL_REPRO UKI-LT2-Brunel UKI-NORTHGRID-MAN-HEP UKI-NORTHGRID-LIV-HEP UKI-NORTHGRID-LANCS-HEP UKI-LT2-QMUL UKI-LT2-IC-HEP UKI-SOUTHGRID-RALPP UKI-SOUTHGRID-OX-HEP UKI-SOUTHGRID-BRIS-HEP UKI-NORTHGRID-SHEF-HEP UKI-LT2-UCL-CENTRAL UKI-LT2-IC-LeSC UKI-LT2-UCL-HEP UKI-SOUTHGRID-CAM-HEP UKI-SCOTGRID-DURHAM UKI-SCOTGRID-ECDF UKI-LT2-RHUL UKI-SOUTHGRID-BHAM-HEP UKI-SCOTGRID-GLASGOW".split() clouds['FR'] = "IN2P3-CC LYON_REPRO IN2P3-CC-T2 GRIF-IRFU GRIF-LAL GRIF-LPNHE IN2P3-CPPM IN2P3-LPC IN2P3-LPSC IN2P3-LAPP TOKYO-LCG2 NIPNE BEIJING-LCG2".split() clouds['NL'] = 'NIKHEF-ELPROD NIKHEF_REPRO SARA_REPRO JINR-LCG2 ru-PNPI RU-Protvino-IHEP ITEP ru-Moscow-SINP-LCG2 csTCDie RRC-KI TR-10-ULAKBIM'.split() clouds['DE'] = 'FZK-LCG2 FZK_REPRO LRZ-Munich DESY-ZN DESY-HH CSCS-LCG2 MPPMU praguelcg2 prague_cesnet_lcg2 PSNC UNI-FREIBURG wuppertalprod CYFRONET-LCG2 GoeGrid HEPHY-UIBK UNI-DORTMUND'.split() clouds['ES'] = 'PIC PIC_REPRO IFIC-LCG2 IFAE LIP-Coimbra LIP-Lisbon UAM-LCG2 '.split() clouds['TW'] = 'Taiwan-LCG2 ASGC_REPRO TW-FTT Australia-ATLAS Taiwan-IPAS-LCG2'.split() clouds['IT'] = 'INFN-T1 INFN-T1_REPRO INFN-CNAF INFN-MILANO INFN-ROMA1 INFN-NAPOLI-ATLAS INFN-FRASCATI GENERIC_TEST'.split() clouds['NDGF'] = 'Nordugrid'.split() clouds['ND'] = 'ARC'.split() clouds['CERN'] = 'CERN-PROD CERN-UNVALID CERN-RELEASE CERN-BUILDS'.split() # Set the cloud and releases for spec in schedconfig: if spec['nickname'].startswith('UBC'): spec['site'] = 'UBC' spec['cloud'] = '' for c in clouds: if spec['site'] in clouds[c]: spec['cloud'] = c # Check releases if linfotool and spec.has_key('gatekeeper') \ and spec['cloud'] in ['CA','UK','DE','ES','FR','NL','IT','TW']: tags=linfotool.getSWtags(spec['gatekeeper']) if len(tags) > 0: releases = '|'.join(tags) print "Release tags: %s for %s"%(releases,spec['nickname']) spec['releases']=releases # Ruse to find sl4 sites if '14.5.0' in tags: print "Set cmtconfig for %s"%spec['nickname'] spec['cmtconfig']='i686-slc4-gcc34-opt' else: print "No releases found for %s"% spec['gatekeeper'] # Fill the RAM if spec.has_key('gatekeeper') and spec.has_key('localqueue'): memory = linfotool.getRAM(spec['gatekeeper'],spec['localqueue']) print 'Would set memory: %d for %s-%s'%(memory,spec['gatekeeper'],spec['localqueue']) if spec['cloud'] in ['UK']: print "Setting memory: %d : %s-%s"%(memory,spec['gatekeeper'],spec['localqueue']) # spec['memory'] = memory # Fill the max cpu time in seconds maxcpu = linfotool.getMaxcpu(spec['gatekeeper'],spec['localqueue']) print 'Would set Maxcpu time: %d for %s-%s'%(maxcpu,spec['gatekeeper'],spec['localqueue']) # spec['maxtime'] = maxcpu ####### Customize queues # defaults for EGEE eglfcpath='/grid/atlas/users/pathena' eglfcprodpath='/grid/atlas/dq2' egsepath='/users/pathena' egseprodpath='/dq2' uklfc='lfc.gridpp.rl.ac.uk' for spec in schedconfig: if spec['site'] == 'BNL': if spec['nickname'] != 'BNL_XRD': spec['copytool'] = 'BNLdccp' if spec['nickname'].startswith('ANALY_'): spec['proxy'] = 'donothide' if spec['site'].find('_Install') >= 0: spec['proxy'] = 'donothide' if spec['nickname'].startswith('ANALY_BNL') or spec['nickname'].startswith('ANALY_LONG_BNL'): spec['copysetup'] = '/afs/usatlas.bnl.gov/i386_redhat72/opt/dcache/dcache_client_config.sh^srm://dcsrm.usatlas.bnl.gov(:[0-9]+)*(/srm/managerv2?SFN=)*/^dcache:/^False^False' if spec['nickname'].find('HU_ATLAS_Tier2') >= 0: spec['site'] = 'HarvardU' spec['cloud'] = 'US' if spec['nickname'].startswith('HU_ATLAS_Tier2'): spec['jdladd'] = 'globusrsl = (queue=ATLAS_Production)\n' if spec['nickname'].startswith('ANALY_HU_ATLAS_Tier2'): spec['jdladd'] = 'globusrsl = (queue=ATLAS_Analysis)\n' if spec['nickname'].find('IllinoisHEP') >= 0: spec['site'] = 'IllinoisHEP' spec['cloud'] = 'US' if spec['nickname'].find('UCITB_EDGE7') >= 0: spec['site'] = 'UChicago' spec['cloud'] = 'US' spec['copytool'] = 'gridftp' spec['copysetup'] = '/opt/wn/setup.sh' if spec['nickname'] == 'SLACXRD-lsf': # spec['dq2url'] = 'http://www-atllrc.slac.stanford.edu/dq2/' spec['ddm'] = 'SLACXRD_PRODDISK' spec['setokens'] = 'ATLASPRODDISK' spec['se'] = 'token:ATLASPRODDISK:srm://osgserv04.slac.stanford.edu:8443/srm/v2/server?SFN=' spec['seprodpath'] = '/xrootd/atlas/atlasproddisk' spec['dq2url'] = '' spec['copyprefix'] = '^srm://osgserv04.slac.stanford.edu' spec['lfchost'] = 'atl-lfc.slac.stanford.edu' spec['lfcpath'] = '' spec['lfcprodpath'] = '/grid/atlas/dq2' if spec['nickname'].startswith('ANALY_SLAC'): spec['ddm'] = 'SLACXRD_USERDISK' spec['setokens'] = 'ATLASUSERDISK' spec['se'] = 'token:ATLASUSERDISK:srm://osgserv04.slac.stanford.edu:8443/srm/v2/server?SFN=' spec['sepath'] = '/xrootd/atlas/atlasuserdisk' spec['seprodpath'] = '/xrootd/atlas/atlasuserdisk' spec['lfchost'] = 'atl-lfc.slac.stanford.edu' spec['lfcpath'] = '/grid/atlas/users/pathena' spec['lfcprodpath'] = '' spec['copyprefix'] = '^srm://osgserv04.slac.stanford.edu' spec['dq2url'] = '' if spec['nickname'].startswith('ANALY_HU_ATLAS_Tier2') or spec['nickname'].startswith('ANALY_NET2'): spec['ddm'] = 'NET2_USERDISK' spec['dq2url'] = '' spec['copytool'] = 'lsm' spec['copyprefix'] = '^srm://atlas.bu.edu' spec['lfcpath'] = '/grid/atlas/users/pathena' spec['lfcprodpath'] = '/grid/atlas/users/pathena' if spec['nickname'].startswith('ANALY_NET2'): spec['lfchost'] = 'atlas007.bu.edu' spec['envsetup'] = 'source /atlasgrid/osg-wn-1.0.0/setup.sh' else: spec['lfchost'] = 'heroatlas.fas.harvard.edu' spec['envsetup'] = 'source /n/data1/ATLAS/osg/wn-client/setup.sh' spec['setokens'] = 'ATLASUSERDISK' spec['se'] = 'token:ATLASUSERDISK:srm://atlas.bu.edu:8443/srm/v2/server?SFN=' spec['sepath'] = '/gpfs1/atlasuserdisk' spec['seprodpath'] = '/gpfs1/atlasuserdisk' if spec['nickname'].startswith('HU_ATLAS_Tier2'): spec['ddm'] = 'NET2_PRODDISK' spec['dq2url'] = '' spec['copytool'] = 'lsm' spec['copyprefix'] = '^srm://atlas.bu.edu' spec['lfcpath'] = '' spec['lfcprodpath'] = '/grid/atlas/dq2' spec['lfchost'] = 'heroatlas.fas.harvard.edu' spec['envsetup'] = 'source /n/data1/ATLAS/osg/wn-client/setup.sh' spec['setokens'] = 'ATLASPRODDISK' spec['se'] = 'token:ATLASPRODDISK:srm://atlas.bu.edu:8443/srm/v2/server?SFN=' spec['seprodpath'] = '/gpfs1/atlasproddisk' if spec['nickname'].startswith('BU_ATLAS'): spec['copytool'] = 'cp' if spec['nickname'].startswith('BU_ATLAS_Tier2o'): spec['ddm'] = 'NET2_PRODDISK' spec['dq2url'] = '' spec['copytool'] = 'lsm' spec['copyprefix'] = '^srm://atlas.bu.edu' spec['lfcpath'] = '' spec['lfcprodpath'] = '/grid/atlas/dq2' spec['lfchost'] = 'atlas007.bu.edu' #'heroatlas.fas.harvard.edu' spec['envsetup'] = 'source /atlasgrid/osg-wn-1.0.0/setup.sh' spec['setokens'] = 'ATLASPRODDISK' spec['se'] = 'token:ATLASPRODDISK:srm://atlas.bu.edu:8443/srm/v2/server?SFN=' spec['seprodpath'] = '/gpfs1/atlasproddisk' if spec['nickname'].find('OU_OSCER') >= 0: spec['copytool'] = 'uberftp' spec['retry'] = 'False' spec['recoverdir'] = '$OSG_DATA' spec['lfchost'] = 'tier2-02.ochep.ou.edu' if spec['nickname'].startswith('ANALY'): spec['lfcpath'] = '/grid/atlas/users/pathena' spec['lfcprodpath'] = '' else: spec['lfcpath'] = '' spec['lfcprodpath'] = '/grid/atlas/dq2' spec['copyprefix'] = '^tier2-02.ochep.ou.edu' if spec['nickname'].startswith('OU_OCHEP_SWT2'): spec['nqueue'] = 10 if spec['nickname'].find('OU_OCHEP_SWT2') >= 0: spec['copytool'] = 'cp' spec['lfchost'] = 'tier2-02.ochep.ou.edu' if spec['nickname'].startswith('ANALY'): spec['lfcpath'] = '/grid/atlas/users/pathena' spec['lfcprodpath'] = '' else: spec['lfcpath'] = '' spec['lfcprodpath'] = '/grid/atlas/dq2' spec['copyprefix'] = '^tier2-02.ochep.ou.edu' if spec['site'].startswith('UTA'): spec['nqueue'] = 2 spec['ddm'] = 'UTA_SWT2' spec['copytool'] = 'cp' if spec['nickname'].find('UTA-DPCC')>=0: spec['ddm'] = 'UTA' spec['queuehours'] = 72 spec['nqueue'] = 4 if spec['nickname'].find('UTA-SWT2')>0: spec['ddm'] = 'UTA_SWT2' spec['queuehours'] = 72 if spec['nickname'].find('UTA_SWT2') >= 0: spec['cmtconfig'] = 'i686-slc4-gcc34-opt' spec['copyprefix'] = '^srm://gk05.swt2.uta.edu' spec['se'] = 'token:ATLASPRODDISK:srm://gk05.swt2.uta.edu:8443/srm/v2/server?SFN=' spec['ddm'] = 'UTA_SWT2_PRODDISK' spec['lfchost'] = 'gk03.swt2.uta.edu' spec['lfcprodpath'] = '/grid/atlas/dq2/' spec['seprodpath'] = '/ifs1/dq2/atlasproddisk' spec['setokens'] = 'ATLASPRODDISK' if spec['nickname'].find('GLOW-ATLAS') >= 0: spec['dq2url'] = '' spec['lfchost'] = 'higgs04.cs.wisc.edu' spec['copyprefix'] = '^srm://atlas07.cs.wisc.edu' if spec['nickname'].startswith('ANALY'): spec['ddm'] = 'WISC_USERDISK' spec['lfcpath'] = '/grid/atlas/users/pathena' spec['lfcprodpath'] = '' spec['se'] = 'token:ATLASUSERDISK:srm://atlas07.cs.wisc.edu:8443/srm/v2/server?SFN=' spec['setokens'] = 'ATLASUSERDISK' spec['sepath'] = '/atlas/xrootd/atlasuserdisk' spec['seprodpath'] = '/atlas/xrootd/atlasuserdisk' else: spec['ddm'] = 'WISC_PRODDISK' spec['lfcpath'] = '' spec['lfcprodpath'] = '/grid/atlas/dq2' spec['se'] = 'token:ATLASPRODDISK:srm://atlas07.cs.wisc.edu:8443/srm/v2/server?SFN=' spec['setokens'] = 'ATLASPRODDISK' spec['sepath'] = '' spec['seprodpath'] = '/atlas/xrootd/atlasproddisk' if spec['nickname'].find('SWT2_CPB') >= 0: spec['site'] = 'UTArlington' spec['cloud'] = 'US' spec['copytoolin'] = '' spec['copytool'] = 'xcp' spec['copysetupin'] = '' spec['copysetup'] = '/cluster/atlas/xrootd/atlasutils/setup_xcp.sh' spec['ddm'] = 'SWT2_CPB_PRODDISK' spec['lfchost'] = 'gk02.atlas-swt2.org' spec['copyprefix'] = '^srm://gk03.atlas-swt2.org' spec['envsetup'] = 'source /cluster/grid/wn-client/setup.sh' spec['dq2url'] = '' if spec['nickname'].startswith('ANALY'): spec['ddm'] = 'SWT2_CPB_USERDISK' spec['se'] = 'token:ATLASUSERDISK:srm://gk03.atlas-swt2.org:8443/srm/v2/server?SFN=' spec['sepath'] = '/xrd/atlasuserdisk' spec['seprodpath'] = '/xrd/atlasuserdisk' spec['setokens'] = 'ATLASUSERDISK' spec['lfcpath'] = '/grid/atlas/users/pathena' spec['lfcprodpath'] = '' else: spec['se'] = 'token:ATLASPRODDISK:srm://gk03.atlas-swt2.org:8443/srm/v2/server?SFN=' spec['sepath'] = '' spec['seprodpath'] = '/xrd/atlasproddisk' spec['setokens'] = 'ATLASPRODDISK' spec['lfcpath'] = '' spec['lfcprodpath'] = '/grid/atlas/dq2' if spec['nickname'] == 'AGLT2-condor': spec['nqueue'] = 50 if spec['nickname'].find('AGLT2') >= 0: spec['copytool'] = 'lcg-cp2' spec['envsetup'] = 'source /afs/atlas.umich.edu/OSGWN/setup.sh' spec['dq2url'] = '' spec['lfchost'] = 'lfc.aglt2.org' spec['copyprefix'] = '^srm://head01.aglt2.org' if spec['nickname'].find('ANALY_AGLT2') >= 0: spec['ddm'] = 'AGLT2_USERDISK' spec['copysetup'] = '^srm://head01.aglt2.org(:[0-9]+)*(/srm/managerv2?SFN=)*/pnfs/^dcache:/pnfs/^False^False' spec['se'] = 'token:ATLASUSERDISK:srm://head01.aglt2.org:8443/srm/managerv2?SFN=' spec['setokens'] = 'ATLASUSERDISK' spec['sepath'] = '/pnfs/aglt2.org/atlasuserdisk' spec['seprodpath'] = '' spec['lfcpath'] = '/grid/atlas/users/pathena' spec['lfcprodpath'] = '' else: spec['ddm'] = 'AGLT2_PRODDISK' spec['se'] = 'token:ATLASPRODDISK:srm://head01.aglt2.org:8443/srm/managerv2?SFN=' spec['setokens'] = 'ATLASPRODDISK' spec['seprodpath'] = '/pnfs/aglt2.org/atlasproddisk' spec['sepath'] = '' spec['python_path'] = '/atlas/data08/OSG/APP/atlas_app/python/python32bit-2.4/bin/python' spec['lfcpath'] = '' spec['lfcprodpath'] = '/grid/atlas/dq2' if spec['nickname'].startswith('MWT2_UC') or spec['nickname'].startswith('UC_ATLAS_MWT2'): spec['ddm'] = 'MWT2_UC_PRODDISK' spec['copytool'] = 'lcg-cp2' spec['copyprefix'] = '^srm://uct2-dc1.uchicago.edu' spec['dq2url'] = '' if spec['nickname'].startswith('MWT2_UC'): spec['copytoolin'] = 'dccp' spec['retry'] = 'true' spec['envsetup'] = 'source /share/wn-client/setup.sh' spec['se'] = 'token:ATLASPRODDISK:srm://uct2-dc1.uchicago.edu:8443/srm/managerv2?SFN=' spec['setokens'] = 'ATLASPRODDISK' spec['sepath'] = '' spec['seprodpath'] = '/pnfs/uchicago.edu/atlasproddisk' spec['lfchost'] = 'uct2-grid5.uchicago.edu' spec['lfcpath'] = '' spec['lfcprodpath'] = '/grid/atlas/dq2' if spec['nickname'].startswith('MWT2_IU'): spec['ddm'] = 'MWT2_IU_PRODDISK' spec['copytoolin'] = 'dccp' spec['copytool'] = 'lcg-cp2' spec['envsetup'] = 'source /share/wn-client/setup.sh' spec['se'] = 'token:ATLASPRODDISK:srm://iut2-dc1.iu.edu:8443/srm/managerv2?SFN=' spec['setokens'] = 'ATLASPRODDISK' spec['sepath'] = '' spec['seprodpath'] = '/pnfs/iu.edu/atlasproddisk' spec['lfchost'] = 'iut2-grid5.iu.edu' spec['lfcpath'] = '' spec['lfcprodpath'] = '/grid/atlas/dq2' spec['copyprefix'] = '^srm://iut2-dc1.iu.edu' if spec['nickname'].startswith('IU_OSG'): spec['ddm'] = 'MWT2_IU_PRODDISK' spec['copytool'] = 'lcg-cp2' spec['copyprefix'] = '^srm://iut2-dc1.iu.edu' spec['lfchost'] = 'iut2-grid5.iu.edu' spec['lfcpath'] = '' spec['lfcprodpath'] = '/grid/atlas/dq2' spec['envsetup'] = 'source /usr/local/osg/setup.sh' spec['setokens'] = 'ATLASPRODDISK' spec['se'] = 'token:ATLASPRODDISK:srm://iut2-dc1.iu.edu:8443/srm/managerv2?SFN=' spec['seprodpath'] = '/pnfs/iu.edu/atlasproddisk' if spec['nickname'].startswith('ANALY_MWT2'): spec['ddm'] = 'MWT2_UC_USERDISK' spec['copyprefix'] = '^srm://uct2-dc1.uchicago.edu' spec['copytool'] = 'lcg-cp2' spec['copytoolin'] = 'dccp' # spec['copysetup'] = '^srm://uct2-dc1.uchicago.edu:8443/srm/managerv2?SFN=/pnfs/^dcache:/pnfs/^False^True' spec['copysetup'] = '^srm://uct2-dc1.uchicago.edu(:[0-9]+)*(/srm/managerv2?SFN=)*/pnfs/^dcache:/pnfs/^False^False' spec['lfchost'] = 'uct2-grid5.uchicago.edu' spec['lfcpath'] = '/grid/atlas/users/pathena' spec['lfcprodpath'] = '/grid/atlas/dq2' spec['se'] = 'token:ATLASUSERDISK:srm://uct2-dc1.uchicago.edu:8443/srm/managerv2?SFN=' spec['sepath'] = '/pnfs/uchicago.edu/atlasuserdisk' spec['seprodpath'] = '/pnfs/uchicago.edu/atlasproddisk' spec['setokens'] = 'ATLASUSERDISK' spec['proxy'] = 'donothide' # DDM settings ddm = '' if spec['nickname'].lower().find('bnl') >= 0: ddm = 'BNLPANDA' site2ddm = { 'Australia-ATLAS' : 'AUSTRALIA-ATLAS_PRODDISK', 'Australia-UNIMELB-LCG2' : 'AU-UNIMELB', } name2ddm = { 'UC_Teraport' : 'MWT2_UC', 'GLOW' : 'WISC', 'OUHEP' : 'OUHEP', 'RO-' : 'NIPNE_07', } for nd in name2ddm: if spec['nickname'].find(nd) >= 0: ddm = name2ddm[nd] for sd in site2ddm: if spec['site'].find(sd) >= 0: ddm = site2ddm[sd] if ddm != '': spec['ddm'] = ddm #print "DDM for %s set to %s" % ( spec['nickname'], spec['ddm'] ) # FR defaults if spec['region'] in ( 'France', 'Romania', 'Japan', 'China' ): spec['lfchost'] = 'lfc-prod.in2p3.fr' spec['proxy'] = 'noimport' # UK defaults if spec['region'] == 'UK': spec['lfchost'] = 'lfc.gridpp.rl.ac.uk' spec['proxy'] = 'noimport' # ES defaults if spec['region'] == 'Spain': spec['lfchost'] = 'lfcatlas.pic.es' if spec['region'] == 'Germany': spec['lfchost'] = 'lfc-fzk.gridka.de' if spec['region'] == 'Holland': spec['lfchost'] = 'lfc-atlas.grid.sara.nl' if spec['region'] == 'Taiwan' or spec['cloud']=='TW': spec['lfchost'] = 'lfc.grid.sinica.edu.tw' if spec['site'] == 'CERN-PROD': spec['envsetup'] = '' # For Conditions data access spec['environ'] = 'DATAPATH=/afs/cern.ch/atlas/conditions/poolcond/catalogue' # override VO_ATLAS_DIR spec['appdir'] = '/afs/cern.ch/atlas/software/releases' spec['cmtconfig'] = "i686-slc4-gcc34-opt" spec['copytool'] = 'lcgcp' spec['copytoolin'] = 'rfcp' spec['copysetup'] = '' spec['se'] = 'token:ATLASMCDISK:srm://srm-atlas.cern.ch:8443/srm/managerv2?SFN=,srm://srm-durable-atlas.cern.ch' spec['lfchost'] = 'prod-lfc-atlas-local.cern.ch' spec['ddm'] = 'CERN-PROD_MCDISK,CERN-PROD_DATADISK,CERN-PROD_DATATAPE,CERN-PROD_MCTAPE' spec['setokens'] = 'ATLASMCDISK,ATLASDATADISK,ATLASDATATAPE,ATLASMCTAPE' # spec['seprodpath'] = '/castor/cern.ch/grid/atlas/tzero/[atlasmcdisk,atlasdatadisk,atlasdatatape]/' spec['seprodpath'] = '/castor/cern.ch/grid/atlas/[atlasmcdisk,atlasdatadisk,((tzero/prod1/perm)|(tzero/prod2/perm)|(t0/perm)|(DAQ)|(conditions)|(atlasdatatape)),atlasmctape]/' spec['nqueue'] = 1 if spec['nickname'].find('2nh_atlas') > 0 or spec['nickname'].find('grid_atlas') > 0: spec['siteid'] = 'CERN-PROD' # FR sites if spec['region'] == 'FRANCE': spec['wntmpdir'] = '/scratch' if spec['site'] in ('IN2P3-CC','IN2P3-CC-T2'): spec['envsetup'] = 'export LFC_HOST=%s ; source /afs/in2p3.fr/grid/profiles/lcg_env.sh;' % spec['lfchost'] spec['envsetupin'] = spec['envsetup'] spec['copytool'] = 'lcgcp' spec['copytoolin'] = 'dccplfc' spec['copysetup'] = '' spec['copyprefix'] = 'dcap://ccdcapatlas.in2p3.fr:22125^srm://ccsrm.in2p3.fr' spec['copyprefixin'] = 'dcap://ccdcapatlas.in2p3.fr:22125^dummy' spec['sepath'] = '/pnfs/in2p3.fr/data/atlas/disk/dq2/pathena' spec['lfcpath'] = '/grid/atlas/users/pathena' spec['lfcprodpath'] = '/grid/atlas/dq2' spec['ddm'] = 'IN2P3-CC_MCDISK,IN2P3-CC_DATADISK,IN2P3-CC_DATATAPE,IN2P3-CC_MCTAPE' spec['setokens'] = 'ATLASMCDISK,ATLASDATADISK,ATLASDATATAPE,ATLASMCTAPE' spec['seprodpath'] = '/pnfs/in2p3.fr/data/atlas/[atlasmcdisk,atlasdatadisk,atlasdatatape,atlasmctape]/' spec['wntmpdir'] = '$TMPBATCH' # spec['recoverdir'] = '/sps/atlas/p/panda/' spec['recoverdir'] = '' spec['retry'] = 'FALSE' if spec['nickname'].lower().find('short') >= 0: spec['nqueue'] = 2 else: spec['nqueue'] = 1 if spec['site'] == 'GRIF-IRFU': print "Saclay:", spec['nickname'], spec['status'] spec['ddm'] = 'GRIF-SACLAY_PRODDISK' spec['nqueue'] = 6 spec['copytoolin'] = 'rfcplfc' if spec['site'] == 'GRIF-LAL': print "Orsay:", spec['nickname'], spec['status'] spec['ddm'] = 'GRIF-LAL_PRODDISK' spec['nqueue'] = 6 # spec['copytoolin'] = 'rfcplfc' spec['copytoolin'] = '' if spec['site'] == 'BEIJING-LCG2': print "Beijing:", spec['nickname'], spec['status'] spec['ddm'] = 'BEIJING-LCG2_PRODDISK' spec['nqueue'] = 2 # spec['copysetup'] = 'export DPM_HOST=$VO_ATLAS_DEFAULT_SE; export DPNS_HOST=$VO_ATLAS_DEFAULT_SE' # spec['copytoolin'] = 'rfcplfc' spec['copysetup'] = '' spec['copytoolin'] = '' if spec['nickname'].startswith('RO-07-NIPNE'): print "Romania07:", spec['nickname'], spec['status'] spec['ddm'] = 'RO-07-NIPNE_PRODDISK' spec['nqueue'] = 6 if spec['nickname'].startswith('RO-02-NIPNE'): print "Romania02:", spec['nickname'], spec['status'] spec['ddm'] = 'RO-02-NIPNE_PRODDISK' spec['nqueue'] = 6 if spec['site'] == 'GRIF-LPNHE': print "Paris:", spec['nickname'], spec['status'] spec['ddm'] = 'GRIF-LPNHE_PRODDISK' spec['nqueue'] = 6 # spec['copytoolin'] = 'rfcplfc' spec['copytoolin'] = '' if spec['site'].startswith('IN2P3-LAPP'): print "LAPP:", spec['nickname'], spec['status'] spec['ddm'] = 'IN2P3-LAPP_PRODDISK' spec['nqueue'] = 6 spec['copytoolin'] = 'rfcplfc' if spec['site'].startswith('IN2P3-LPC'): print "LPC:", spec['nickname'], spec['status'] spec['wntmpdir'] = '$SCRATCH_DIRECTORY' spec['ddm'] = 'IN2P3-LPC_PRODDISK' spec['nqueue'] = 2 spec['copytoolin'] = 'rfcplfc' if spec['site'].startswith('IN2P3-LPSC'): print "LPSC:", spec['nickname'], spec['status'] spec['ddm'] = 'IN2P3-LPSC_PRODDISK' spec['nqueue'] = 2 spec['copytoolin'] = 'rfcplfc' spec['copytoolin'] = '' if spec['site'].startswith('IN2P3-CPPM'): print "CPPM:", spec['nickname'], spec['status'] spec['ddm'] = 'IN2P3-CPPM_PRODDISK' spec['nqueue'] = 2 # spec['copytoolin'] = 'rfcplfc' spec['copytoolin'] = '' if spec['site'] == 'TOKYO-LCG2': # spec['lfchost'] = 'lfc-prod.in2p3.fr' print "TOKYO:", spec['nickname'], spec['status'] spec['copytoolin'] = 'rfcplfc' spec['ddm'] = 'TOKYO-LCG2_PRODDISK' spec['nqueue'] = 2 # spec['wntmpdir'] = '/tmp' if spec['nickname'].startswith('ifae'): spec['site'] = 'IFAE' print spec['nickname'], spec['site'] if spec['site'] == 'IFAE': spec['copyprefix'] = 'srm://srmifae.pic.es/^dummy' spec['copyprefixin'] = 'dcap://dcap.pic.es/^dummy' spec['copytool'] = 'lcgcp' spec['copytoolin'] = 'dccplfc' spec['ddm'] = 'IFAE_PRODDISK' spec['se'] = 'token:T2ATLASPRODDISK:srm://srmifae.pic.es:8443/srm/managerv2?SFN=' spec['sepath'] = '/pnfs/pic.es/IFAEAtlasTier2/t2atlasproddisk/users/pathena' spec['seprodpath'] = '/pnfs/pic.es/IFAEAtlasTier2/t2atlasproddisk/' spec['setokens'] = 'T2ATLASPRODDISK' if spec['site'] == 'PSNC': spec['lfchost'] = 'lfc-fzk.gridka.de' if spec['site'] == 'MPPMU': spec['ddm'] = 'MPPMU_PRODDISK' # spec['se'] = 'srm://lcg-lrz-se.lrz-muenchen.de' spec['siteid'] = 'MPP' if spec['region'] == 'Canada': spec['lfchost'] = 'lfc.triumf.ca'; if spec['site'] == 'UKI-SCOTGRID-GLASGOW': spec['siteid'] = spec['site'] spec['recoverdir'] = '$TMPDIR' spec['retry'] = 'FALSE' spec['copytoolin'] = 'rfcplfc' if spec['site'] == 'UKI-LT2-Brunel': spec['memory'] = 0 spec['recoverdir'] = '$EDG_WL_SCRATCH' spec['retry'] = 'FALSE' spec['nqueue'] = 1 if spec['site'] == 'UKI-LT2-UCL-CENTRAL': spec['retry'] = 'FALSE' # IC clusters will be T3 using RHUL if spec['site'] in ['UKI-LT2-IC-HEP','UKI-LT2-IC-LeSC']: spec['ddm'] = 'UKI-LT2-RHUL_PRODDISK' # if spec['site'] == 'UKI-SOUTHGRID-OX-HEP': # spec['ddm'] = 'UKI-SOUTHGRID-OX-HEP_PRODDISK' if spec['site'] == 'UKI-LT2-QMUL': spec['siteid'] = 'UKI-LT2-QMUL' spec['memory'] = 0 # spec['ddm'] = 'UKI-LT2-QMUL_PRODDISK' if spec['site'] == 'UKI-LT2-RHUL': spec['ddm'] = 'UKI-LT2-RHUL_PRODDISK' spec['copytoolin'] = 'rfcplfc' spec['se'] = 'token:ATLASPRODDISK:srm://se2.ppgrid1.rhul.ac.uk:8446/srm/managerv2?SFN=' if spec['site'] == 'SFU-LCG2': spec['siteid'] = spec['site'] spec['ddm'] = 'SFU-LCG2_PRODDISK' spec['copytoolin'] = 'dccplfc' spec['copyprefix'] = 'srm://wormhole.westgrid.ca/^dcap://wormhole.westgrid.ca/pnfs/sfu.ca/data/' spec['copyprefixin'] = 'dcap://wormhole.westgrid.ca/pnfs/sfu.ca/data/^dummy' spec['envsetup'] = '' if spec['nickname'].find('UBC') >= 0: if spec['nickname'] == 'UBC-lcgpbs': spec['siteid'] = 'UBC' spec['lfchost'] = 'lfc.triumf.ca' spec['region'] = 'Canada' if spec['nickname'].startswith('UBC'): spec['site'] = 'UBC' spec['envsetup'] = 'source /global/home/LHC/software/lcg_env.sh ;' spec['copytool'] = 'lcgcp' spec['copytoolin'] = 'dccplfc' spec['copysetup'] = '' spec['copyprefix'] = 'srm://wormhole.westgrid.ca/^dcap://wormhole.westgrid.ca/pnfs/sfu.ca/data/' spec['copyprefixin'] = 'dcap://wormhole.westgrid.ca/pnfs/sfu.ca/data/^dummy' spec['se'] = 'srm://wormhole.westgrid.ca' spec['sepath'] = '/atlas/dq2/users/pathena' spec['lfcpath'] = '/grid/atlas/users/pathena' spec['ddm'] = 'SFU-LCG2_PRODDISK' spec['recoverdir'] = '/scratch' spec['retry'] = 'TRUE' spec['nqueue'] = 2 spec['releases'] = '12.0.31|12.0.6|12.0.8|12.0.95|13.0.30|13.0.40' print "ROD: ",spec['nickname'],spec['releases'] if spec['site'] == 'Umontreal-LCG2': spec['lfchost'] = 'lfc.triumf.ca' spec['envsetup'] = 'export LFC_HOST=%s;' % spec['lfchost'] spec['se'] = 'srm://lcg-se.lps.umontreal.ca' spec['lfcpath'] = '/grid/atlas/users/pathena' spec['ddm'] = 'MONTREAL' if spec['site'].startswith('TORONTO'): spec['siteid'] = spec['site'] spec['copytool'] = 'lcgcp' spec['ddm'] = 'TORONTO-LCG2_PRODDISK' spec['copysetup'] = '' spec['nqueue'] = 2 if spec['site'] == 'TRIUMF': spec['lfchost'] = 'lfc.triumf.ca' spec['copytool'] = 'lcgcp' spec['copytoolin'] = 'dccplfc' spec['copyprefix'] = 'srm://srm.triumf.ca/^dummy' spec['copyprefixin'] = 'dcap://dpool.triumf.lcg/pnfs/triumf.ca/data/^dummy' # Needed for dcap access from pathena spec['copysetup']='/etc/profile.d/triumf.sh^srm://srm.triumf.ca^dcap://dpool.triumf.lcg/pnfs/triumf.ca/data^False^False' # spec['se'] = 'srm://srm.triumf.ca' # spec['sepath'] = '/atlas/users/pathena' spec['lfcpath'] = '/grid/atlas/users/pathena' spec['ddm'] = 'TRIUMF-LCG2_MCDISK,TRIUMF-LCG2_DATADISK,TRIUMF-LCG2_DATATAPE,TRIUMF-LCG2_MCTAPE' spec['setokens'] = 'ATLASMCDISK,ATLASDATADISK,ATLASDATATAPE,ATLASMCTAPE' spec['seprodpath'] = '/atlas/atlasmcdisk/,/atlas/atlasdatadisk/,/atlas/tape/atlasdatatape/,/atlas/tape/atlasmctape/' spec['nqueue'] = 2 spec['recoverdir'] = '$HOME' spec['retry'] = 'FALSE' if spec['site'] == 'UKI-SCOTGRID-ECDF': spec['memory'] = 0 # if spec['site'] == 'UKI-SOUTHGRID-CAM-HEP': # spec['ddm'] = 'UKI-SOUTHGRID-CAM-HEP_MCDISK' if spec['site'] == 'UKI-NORTHGRID-LANCS-HEP': spec['ddm'] = 'UKI-NORTHGRID-LANCS-HEP_PRODDISK' spec['copytoolin'] = 'rfcplfc' spec['siteid'] = spec['site'] spec['recoverdir'] = '$ATLAS_RECOVERDIR' spec['retry'] = 'FALSE' if spec['site'] == 'UKI-NORTHGRID-LIV-HEP': spec['siteid'] = spec['site'] spec['recoverdir'] = '$ATLAS_RECOVERDIR' # MANC has 2 distincs CE`s, clusters and SE'S - but one GOC name. if spec['site'] == 'UKI-NORTHGRID-MAN-HEP': if spec['gatekeeper']=='ce01.tier2.hep.manchester.ac.uk': spec['ddm'] = 'UKI-NORTHGRID-MAN-HEP1_PRODDISK' spec['se'] = 'token:ATLASPRODDISK:srm://bohr3223.tier2.hep.manchester.ac.uk:8446/srm/managerv2?SFN=' spec['site'] = 'UKI-NORTHGRID-MAN-HEP1' spec['siteid'] = 'UKI-NORTHGRID-MAN-HEP1' spec['copytoolin'] = 'rfcplfc' spec['envsetup'] = '' spec['copyprefix'] = '' spec['copyprefixin'] = 'srm://bohr3223.tier2.hep.manchester.ac.uk/^dummy' elif spec['gatekeeper']=='ce02.tier2.hep.manchester.ac.uk': spec['ddm'] = 'MANC-2' spec['copyprefixin'] = 'gsidcap://gsidcap02.tier2.hep.manchester.ac.uk:22128/^dummy' spec['site'] = 'UKI-NORTHGRID-MAN-HEP2' spec['siteid'] = 'UKI-NORTHGRID-MAN-HEP2' spec['copytoolin'] = 'lcgcp' # Common config spec['recoverdir'] = '$ATLAS_RECOVERDIR' spec['retry'] = 'FALSE' spec['nqueue'] = 1 # if spec['site'] == 'UKI-NORTHGRID-SHEF-HEP': # spec['ddm'] = 'UKI-NORTHGRID-SHEF-HEP_MCDISK' if spec['site'] == 'FZK-LCG2': print 'ROD FZK', spec['nickname'] if spec['nickname'].find('atlasXL') >= 0: spec['siteid'] = 'FZK-LCG2' spec['ddm'] = 'FZK-LCG2_MCDISK,FZK-LCG2_DATADISK,FZK-LCG2_DATATAPE,FZK-LCG2_MCTAPE' spec['setokens']='ATLASMCDISK,ATLASDATADISK,ATLASDATATAPE,ATLASMCTAPE' spec['seprodpath']='/pnfs/gridka.de/atlas/[disk-only/atlasmcdisk,disk-only/atlasdatadisk,atlasdatatape,atlasmctape]/' spec['copytoolin'] = 'dccplfc' spec['copyprefix'] = 'srm://gridka-dcache.fzk.de/^dummy' spec['copyprefixin'] = 'dcap://dcacheh1.gridka.de:22125/^dummy' # Below gives /grid/fzk.de/mounts/pnfs//pnfs/gridka.de/atlas/ # spec['copyprefixin'] = '/grid/fzk.de/mounts/pnfs/^dummy' spec['envsetup'] = '' spec['nqueue'] = 1 if spec['site'] == 'DESY-ZN': spec['siteid'] = 'DESY-ZN' spec['ddm'] = 'DESY-ZN_PRODDISK' if spec['site'] == 'CSCS-LCG2': spec['siteid'] = spec['site'] spec['ddm'] = 'CSCS-LCG2_PRODDISK' if spec['site'] == 'CYFRONET-LCG2': spec['ddm'] = 'CYFRONET-LCG2_PRODDISK' if spec['site'] == 'praguelcg2': spec['ddm'] = 'PRAGUELCG2_PRODDISK' if spec['site'] == 'prague_cesnet_lcg2': spec['siteid'] = 'prague_cesnet_lcg2' spec['ddm'] = 'PRAGUELCG2_PRODDISK' if spec['site'] == 'LRZ-Munich': spec['ddm'] = 'LRZ-LMU_PRODDISK' if spec['site'] == 'UNI-FREIBURG': spec['siteid'] = spec['site'] spec['ddm'] = 'UNI-FREIBURG_PRODDISK' if 'RAL-LCG2' in spec['nickname']: spec['copytoolin'] = 'rfcpsvcclass' if spec['site'] == 'RAL-LCG2': spec['siteid'] = 'RAL' spec['ddm'] = 'RAL-LCG2_MCDISK,RAL-LCG2_DATADISK,RAL-LCG2_DATATAPE,RAL-LCG2_MCTAPE' spec['setokens'] = 'ATLASMCDISK,ATLASDATADISK,ATLASDATATAPE,ATLASMCTAPE' spec['seprodpath'] = '/castor/ads.rl.ac.uk/prod/atlas/[simStrip/atlasmcdisk,stripInput/atlasdatadisk,raw/atlasdatatape,simRaw/atlasmctape]/' spec['se'] = 'token:ATLASMCDISK:srm://srm-atlas.gridpp.rl.ac.uk:8443/srm/managerv2?SFN=,srm://ralsrmd.rl.ac.uk' if spec['site'] == 'UKI-SOUTHGRID-RALPP': spec['siteid'] = spec['site'] if spec['site'] == 'PIC': spec['ddm'] = 'PIC_MCDISK,PIC_DATADISK,PIC_DATATAPE,PIC_MCTAPE' spec['setokens'] = 'ATLASMCDISK,ATLASDATADISK,ATLASDATATAPE,ATLASMCTAPE' spec['seprodpath'] = '/pnfs/pic.es/data/atlas/[atlasmcdisk,atlasdatadisk,tape/atlasdatatape,tape/atlasmctape]/' spec['recoverdir'] = '$HOME' spec['retry'] = 'FALSE' spec['envsetup'] = '' spec['nqueue'] = 1 spec['copyprefixin'] = 'dcap://dcap.pic.es:22125^dummy' spec['copytoolin'] = 'dccplfc' if spec['site'] == 'UAM-LCG2': spec['siteid'] = spec['site'] # if spec['site'] == 'IFIC-LCG2': # spec['se'] = 'srm://lsrm.ific.uv.es,srm://castorsrm.ific.uv.es' if spec['site'] == 'NIKHEF-ELPROD': spec['siteid'] = spec['site'] # 2 SEs at nikhef/sara - use sara because will need tape migration spec['ddm'] = 'SARA-MATRIX_MCDISK,NIKHEF-ELPROD_DATADISK,SARA-MATRIX_DATATAPE,SARA-MATRIX_MCTAPE' spec['setokens']='ATLASMCDISK,ATLASDATADISK,ATLASDATATAPE,ATLASMCTAPE' #spec['seprodpath']='/pnfs/grid.sara.nl/data/atlas/atlasmcdisk/,/dpm/nikhef.nl/home/atlas/atlasdatadisk/,/atlasdatatape/,/pnfs/grid.sara.nl/data/atlas/atlasmctape/' spec['se'] = 'token:ATLASMCDISK:srm://srm.grid.sara.nl:8443/srm/managerv2?SFN=,srm://tbn18.nikhef.nl' spec['seopt'] = 'srm://srm.grid.sara.nl:8443/srm/managerv2?SFN=,srm://tbn18.nikhef.nl:8446/srm/managerv2?SFN=,srm://srm.grid.sara.nl:8443/srm/managerv2?SFN=,srm://srm.grid.sara.nl:8443/srm/managerv2?SFN=' spec['seprodpath']='/pnfs/grid.sara.nl/data/atlas/atlasmcdisk/,/dpm/nikhef.nl/home/atlas/atlasdatadisk/,/pfns/grid.sara.nl/data/atlas/atlasdatatape/,/pnfs/grid.sara.nl/data/atlas/atlasmctape/' spec['nqueue'] = 1 if spec['site'] == 'csTCDie': spec['siteid'] = 'csTCDie' spec['ddm'] = 'CSTCDIE_PRODDISK' if spec['site'] == 'ITEP': spec['siteid'] = spec['site'] spec['ddm'] = 'ITEP_PRODDISK' if spec['site'] == 'ru-PNPI': spec['ddm'] = 'RU-PNPI_PRODDISK' if spec['site'] == 'Protvino-IHEP': spec['ddm'] = 'RU-PROTVINO-IHEP_PRODDISK' if spec['site'] == 'JINR-LCG2': spec['ddm'] = 'JINR-LCG2_PRODDISK' if spec['site'] == 'ru-Moscow-SINP-LCG2': spec['siteid'] = spec['site'] if spec['site'] == 'TR-10-ULAKBIM': spec['siteid'] = spec['site'] spec['cmtconfig'] = 'i686-slc4-gcc34-opt' if spec['site'] == 'INFN-CNAF': # Only site with site!=gstat spec['site'] = 'INFN-T1' spec['copytool'] = 'lcg-cp' spec['ddm'] = 'INFN-T1_MCDISK,INFN-T1_DATADISK,INFN-T1_DATATAPE,INFN-T1_MCTAPE' spec['setokens'] = 'ATLASMCDISK,ATLASDATADISK,ATLASDATATAPE,ATLASMCTAPE' spec['seprodpath'] = '/atlas/atlasmcdisk/,/atlas/atlasdatadisk/,/castor/cnaf.infn.it/grid/lcg/atlas/atlasdatatape/,/castor/cnaf.infn.it/grid/lcg/atlas/atlasmctape/' spec['se'] = 'token:ATLASMCDISK:srm://storm-fe.cr.cnaf.infn.it:8444/srm/managerv2?SFN=,srm://srm-v2.cr.cnaf.infn.it' spec['nqueue'] = 1 if spec['site'] == 'INFN-MILANO': spec['siteid'] = 'INFN-MILANO' if spec['site'] == 'INFN-ROMA1': spec['siteid'] = spec['site'] if spec['site'] == 'INFN-NAPOLI-ATLAS': spec['siteid'] = spec['site'] if spec['site'] == 'INFN-FRASCATI': spec['siteid'] = spec['site'] if spec['site'] == 'Taiwan-LCG2': spec['ddm'] = 'TAIWAN-LCG2_MCDISK,TAIWAN-LCG2_DATADISK,TAIWAN-LCG2_DATATAPE,TAIWAN-LCG2_MCTAPE' spec['setokens'] = 'ATLASMCDISK,ATLASDATADISK,ATLASDATATAPE,ATLASMCTAPE' spec['seprodpath'] = '/castor/grid.sinica.edu.tw/[d1t0/atlas/atlasmcdisk,d1t0/atlas/atlasdatadisk,d0t1/atlas/atlasdatatape,d0t1/atlas/atlasmctape]/' spec['se'] = 'token:ATLASMCDISK:srm://srm2.grid.sinica.edu.tw:8443/srm/managerv2?SFN=,srm://srm.grid.sinica.edu.tw,srm://castorsc.grid.sinica.edu.tw' spec['nqueue'] = 3 if spec['site'] == 'TW-FTT': spec['ddm'] = 'TW-FTT_PRODDISK' if spec['site'] == 'Taiwan-IPAS-LCG2': spec['ddm'] = 'ASGCDISK_V2' if spec['site'].startswith('VICTORIA'): spec['ddm'] = 'VICTORIA-LCG2_PRODDISK' spec['siteid'] = spec['site'] #spec['wntmpdir'] = '/tmp' spec['copytool'] = 'lcgcp' spec['copyprefix'] = 'srm://lcg-se.rcf.uvic.ca/^dummy' spec['copysetup'] = '' spec['recoverdir'] = '$EDG_WL_SCRATCH' spec['retry'] = 'FALSE' # spec['copytoolin'] = 'dccplfc' # spec['copyprefixin'] = 'dcap://lcg-se.rcf.uvic.ca:22125/^dummy' spec['copytoolin'] = '' spec['copyprefixin'] = '' if spec['site'].startswith('ALBERTA'): spec['siteid'] = spec['site'] spec['ddm'] = 'ALBERTA-LCG2_PRODDISK' #spec['wntmpdir'] = '/tmp' spec['copytool'] = 'lcgcp' spec['copytoolin'] = 'dccplfc' spec['copyprefixin'] ='dcap://lcgse00.cpp.ualberta.ca/^dummy' spec['recoverdir'] = '$EDG_WL_SCRATCH' spec['retry'] = 'TRUE' if spec['site'].startswith('MCGILL'): spec['siteid'] = spec['site'] spec['ddm'] = 'MCGILL' if spec['nickname'].find('BNL_ATLAS') >= 0: if 'ANALY' in spec['nickname']: spec['lfcpath'] = '/grid/atlas/users/pathena' spec['lfcprodpath'] = '/grid/atlas/users/pathena' else: spec['lfcpath'] = '/grid/atlas/dq2' spec['lfcprodpath'] = '/grid/atlas/dq2' spec['copyprefix'] = '^srm://dcsrm.usatlas.bnl.gov' spec['lfchost'] = 'lfc.usatlas.bnl.gov' spec['dq2url'] = '' spec['se'] = 'srm://dcsrm.usatlas.bnl.gov' spec['sepath'] = '/pnfs/usatlas.bnl.gov' spec['seprodpath'] = '/pnfs/usatlas.bnl.gov' spec['appdir'] = '/usatlas/OSG' if spec['nickname'].startswith('UTD-HEP'): spec['ddm'] = 'UTD_PRODDISK' spec['copyprefix'] = '^srm://fester.utdallas.edu' spec['copytool'] = 'cp' spec['envsetup'] = 'source /opt/wn/setup.sh; ' spec['lfchost'] = 'fester.utdallas.edu' spec['se'] = 'token:ATLASPRODDISK:srm://fester.utdallas.edu:8446/srm/v2/server?SFN=' spec['seprodpath'] = '/net/yy/srmcache/atlasproddisk' spec['setokens'] = 'ATLASPRODDISK' spec['lfcprodpath'] = '/grid/atlas/dq2' spec['cmtconfig'] = 'i686-slc4-gcc34-opt' spec['retry'] = 'FALSE' if spec.has_key('jdl') and spec['jdl'].startswith('bnl-condor'): for s2 in schedconfig: if s2['nickname'] == 'BNL_ATLAS_1-condor': if not spec.has_key('appdir'): spec['appdir'] = s2['appdir'] if not spec.has_key('datadir'): spec['datadir'] = s2['datadir'] if not spec.has_key('tmpdir'): spec['tmpdir'] = s2['tmpdir'] if not spec.has_key('wntmpdir'): spec['wntmpdir'] = s2['wntmpdir'] ## Add copy tool if available try: if not spec.has_key('copytool'): spec['copytool'] = s2['copytool'] if not spec.has_key('copysetup'): spec['copysetup'] = s2['copysetup'] except: pass if isGlideinQ(spec): ## <.> hard-coded for now spec['appdir'] = "/usatlas/OSG/" spec['datadir'] = "/usatlas/prodjob/share/" spec['tmpdir'] = "/tmp" spec['wntmpdir'] = "/tmp" ## <.> add Enviornment ######## Set DDM from ToA where not already set # This doesn`t do anything for OSG or for sites with names!=goc name if ToA and ( not spec.has_key('ddm') or spec['ddm'] == ''): ddmsites = ToA.getAllDestinationSites() for ds in ddmsites: gocnames = ToA.getSiteProperty(ds,'alternateName') if not gocnames: gocnames=[] # upper case for matching gocnames_up=[] for gn in gocnames: gocnames_up+=[gn.upper()] # If PRODDISK found use that if spec['site'].upper() in gocnames_up and ds.endswith('PRODDISK'): print "Assign site %s to DDM %s" % ( spec['site'], ds ) spec['ddm'] = ds # Set the lfc host re_lfc = re.compile('^lfc://([\w\d\-\.]+):([\w\-/]+$)') print "ds:",ds try: relfc=re_lfc.search(ToA.getLocalCatalog(ds)) if relfc : lfchost=relfc.group(1) #print "Set lfchost to %s"%lfchost spec['lfchost'] = lfchost else: print " Cannot get lfc host for %s"%ds except: print " Cannot get local catalog for %s"%ds # And work out the cloud if not spec['cloud']: #print "Cloud not set for %s"%ds for cl in ToA.ToACache.dbcloud.keys(): if ds in ToA.getSitesInCloud(cl): #print "Found %s in %s"%(ds,cl) spec['cloud']=cl # EGEE defaults #if spec['region'] in ['Canada','France','UK'] or spec['cloud'] in ['US','FR','UK']: if spec['region'] != 'US': # Use the pilot submitter proxy, not imported one (Nurcan non-prod) spec['proxy'] = 'noimport' spec['lfcpath'] = '/grid/atlas/users/pathena' spec['lfcprodpath'] = '/grid/atlas/dq2' if not spec.has_key('copytool'): spec['copytool'] = 'lcgcp' if spec.has_key('ddm') and spec['ddm']: ddm1 = spec['ddm'].split(',')[0] print 'ddm: using %s from %s'%(ddm1,spec['ddm']) # Set the lfc host re_lfc = re.compile('^lfc://([\w\d\-\.]+):([\w\-/]+$)') if ToA: loccat = ToA.getLocalCatalog(ddm1) if loccat: relfc=re_lfc.search(loccat) if relfc : lfchost=relfc.group(1) print "ROD sets lfchost for %s %s"%(spec['ddm'],lfchost) spec['lfchost'] = lfchost else: print " Cannot get lfc host for %s"%ddm1 srm_ep = ToA.getSiteProperty(ddm1,'srm') print 'srm_ep: ',srm_ep if not srm_ep: #print 'srm_ep in None' continue # Regexp to extract srm host and path(without trailing /) re_srm_ep=re.compile('(srm://[\w.\-]+)(/[\w.\-/]+)?/$') # Allow srmv2 form #'token:ATLASDATADISK:srm://srm.triumf.ca:8443/srm/managerv2?SFN=/atlas/atlasdatadisk/' re_srm2_ep=re.compile('(token:\w+:(srm://[\w.\-]+):\d+/srm/managerv\d\?SFN=)(/[\w.\-/]+)/?$') resrm_ep=re_srm_ep.search(srm_ep) resrm2_ep=re_srm2_ep.search(srm_ep) if resrm_ep: print "ROD: srmv1" se=resrm_ep.group(1) sepath=resrm_ep.group(2) copyprefix=se+'/^dummy' elif resrm2_ep: se=resrm2_ep.group(1) copyprefix=resrm2_ep.group(2)+'/^dummy' sepath=resrm2_ep.group(3) if resrm_ep or resrm2_ep: print 'SRM: ',se,sepath,copyprefix if not spec.has_key('se'): spec['se'] = se if not spec.has_key('sepath'): spec['sepath'] = sepath+'/users/pathena' #print 'Set sepath: ',spec['sepath'] if not spec.has_key('seprodpath'): spec['seprodpath'] = sepath #print 'Set seprodpath: ',spec['seprodpath'] if not spec.has_key('copyprefix'): spec['copyprefix'] = copyprefix else: print 'DDM not set for %s'% spec['nickname'] def fillStorageInfo(spec,force=False): print "In fillStorageInfo" # Use the pilot submitter proxy, not imported one (Nurcan non-prod) spec['proxy'] = 'noimport' spec['lfcpath'] = '/grid/atlas/users/pathena' spec['lfcprodpath'] = '/grid/atlas/dq2' if not spec.has_key('copytool'): spec['copytool'] = 'lcgcp' if spec.has_key('ddm') and spec['ddm']: ddm1 = spec['ddm'].split(',')[0] print 'ddm: using %s from %s'%(ddm1,spec['ddm']) # Set the lfc host re_lfc = re.compile('^lfc://([\w\d\-\.]+):([\w\-/]+$)') if ToA: loccat = ToA.getLocalCatalog(ddm1) if loccat: relfc=re_lfc.search(loccat) if relfc : lfchost=relfc.group(1) print "ROD would Set lfchost for %s %s"%(ddm1,lfchost) spec['lfchost'] = lfchost else: print " Cannot get lfc host for %s"%spec['ddm'] srm_ep = ToA.getSiteProperty(ddm1,'srm') print 'srm_ep: ',srm_ep if not srm_ep: #print 'srm_ep in None' return # Regexp to extract srm host and path(without trailing /) re_srm_ep=re.compile('(srm://[\w.\-]+)(/[\w.\-/]+)?/$') # Allow srmv2 form #'token:ATLASDATADISK:srm://srm.triumf.ca:8443/srm/managerv2?SFN=/atlas/atlasdatadisk/' re_srm2_ep=re.compile('(token:\w+:(srm://[\w.\-]+):\d+/srm/managerv\d\?SFN=)(/[\w.\-/]+)/?$') resrm_ep=re_srm_ep.search(srm_ep) resrm2_ep=re_srm2_ep.search(srm_ep) if resrm_ep: print "ROD: srmv1" se=resrm_ep.group(1) sepath=resrm_ep.group(2) copyprefix=se+'/^dummy' elif resrm2_ep: se=resrm2_ep.group(1) copyprefix=resrm2_ep.group(2)+'/^dummy' sepath=resrm2_ep.group(3) if resrm_ep or resrm2_ep: print 'SRM: ',se,sepath,copyprefix if not spec.has_key('se') or force: spec['se'] = se if not spec.has_key('sepath') or force: spec['sepath'] = sepath+'/users/pathena' #print 'Set sepath: ',spec['sepath'] if not spec.has_key('seprodpath') or force: spec['seprodpath'] = sepath #print 'Set seprodpath: ',spec['seprodpath'] if not spec.has_key('copyprefix') or force: spec['copyprefix'] = copyprefix else: print 'DDM not set for %s'% spec['nickname'] return #### Clone queues -- only after all queue customizations are done def getQueue(nickname): for s in schedconfig: if s['nickname'] == nickname: newqueue = {} for p in s: newqueue[p] = s[p] return newqueue return None newsched = getQueue('ANALY_LONG_BNL_ATLAS-condor') if newsched: newsched['nickname'] = 'ANALY_LONG_BNL_ATLAS' newsched['jdladd'] = '+VO = "usatlas"\n' + '+Job_Type = "cas"\n' + '+RACF_Group = "distr_analysis"\n' + '+panda_CE = "ANALY_LONG_BNL_ATLAS"\n' schedconfig.append(newsched) newsched = getQueue('ANALY_BNL_ATLAS_1-condor') if newsched: newsched['nickname'] = 'ANALY_BNL_LOCAL' newsched['jdladd'] = '+VO = "usatlas"\n' + '+RACF_Group = "bnl-local"\n' + '+panda_CE = "BNL_SHORT"\n' schedconfig.append(newsched) newsched = getQueue('ANALY_LONG_BNL_ATLAS-condor') if newsched: newsched['nickname'] = 'ANALY_LONG_BNL_LOCAL' newsched['jdladd'] = '+VO = "usatlas"\n' + '+RACF_Group = "bnl-local"\n' + '+panda_CE = "BNL_LONG"\n' schedconfig.append(newsched) if loadlcg: # test queue can clone any site for tests newsched = getQueue('INFN-MILANO-t2-ce-01-atlas-lcgpbs') if newsched: newsched['nickname'] = 'GENERIC_TEST' newsched['siteid'] = 'GENERIC_TEST' newsched['site'] = 'GENERIC_TEST' newsched['ddm'] = 'INFN-MILANO_PPSDATADISK' newsched['status'] = 'online' newsched['copytool'] = 'storm' fillStorageInfo(newsched,True) schedconfig.append(newsched) for lq in ('5','6'): newsched = getQueue('IN2P3-CC-T2-cclcgceli0%s'%lq+'-long-bqs') if newsched: newsched['nickname'] = 'ANALY_LYON%s' % lq newsched['siteid'] = 'ANALY_LYON' newsched['envsetup'] = 'export LFC_HOST=%s ; source /afs/in2p3.fr/grid/profiles/lcg_env.sh; ' % newsched['lfchost'] newsched['envsetupin'] = 'export LFC_HOST=%s ; source /afs/in2p3.fr/grid/profiles/lcg_env.sh; ' % newsched['lfchost'] newsched['copysetup'] = '/usr/local/shared/bin/xrootd_env.sh^srm://ccsrm.in2p3.fr^root://ccsrb15:1094//^False^True' newsched['copysetupin'] = '/usr/local/shared/bin/xrootd_env.sh^srm://ccsrm.in2p3.fr/^root://ccsrb15:1094//^False^True' # newsched['copysetupin'] = '/usr/local/shared/bin/xrootd_env.sh^srm://ccsrm.in2p3.fr/pnfs/in2p3.fr/data/atlas/^root://ccsrb15:1094/^False^True' newsched['cloud'] = 'FR' newsched['lfchost'] = 'lfc-prod.in2p3.fr' newsched['copytool'] = 'lcgcp' # newsched['copytoolin'] = 'xrdcp^export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/products/xrootd/prod/lib;$VO_ATLAS_SW_DIR/groupAreas/rPosix' newsched['copytoolin'] = 'xrdcp^source $VO_ATLAS_SW_DIR/groupAreas/xrootd_lhc.sh;$VO_ATLAS_SW_DIR/groupAreas/rPosix' newsched['copyprefix'] = 'dcap://ccdcapatlas.in2p3.fr:22125^srm://ccsrm.in2p3.fr' newsched['copyprefixin'] = 'dcap://ccdcapatlas.in2p3.fr:22125^root://ccsrb15:1094' newsched['seprodpath'] = '/pnfs/in2p3.fr/data/atlas/[atlasmcdisk]/' newsched['se'] = 'token:ATLASUSERDISK:srm://ccsrm.in2p3.fr:8443/srm/managerv2?SFN=' newsched['sepath'] = '/pnfs/in2p3.fr/data/atlas/atlasuserdisk/' newsched['ddm'] = 'IN2P3-CC_USERDISK' newsched['setokens'] = 'ATLASUSERDISK' newsched['proxy'] = 'donothide' schedconfig.append(newsched) newsched = getQueue('TOKYO-LCG2-lcg-ce01-atlas-lcgpbs') if newsched: newsched['nickname'] = 'ANALY_TOKYO_RFIO' newsched['siteid'] = 'ANALY_TOKYO_RFIO' newsched['envsetup'] = 'export LFC_HOST=%s ' % newsched['lfchost'] newsched['envsetupin'] = '' newsched['copysetup'] = '' newsched['copysetupin'] = '^srm://lcg-se01.icepp.jp/^rfio://lcg-se01.icepp.jp/^False^True' newsched['cloud'] = 'FR' newsched['lfchost'] = 'lfc-prod.in2p3.fr' newsched['copytool'] = 'lcgcp' # newsched['copytoolin'] = 'xrdcp^export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/products/xrootd/prod/lib;$VO_ATLAS_SW_DIR/groupAreas/rPosix' newsched['copytoolin'] = '' newsched['copyprefix'] = '' newsched['copyprefixin'] = '' newsched['seprodpath'] = ' /dpm/icepp.jp/home/atlas/[atlasuserdisk/,atlaslocalgroupdisk/]' newsched['se'] = 'token:ATLASUSERDISK:srm://lcg-se01.icepp.jp:8446/srm/managerv2?SFN=' newsched['sepath'] = '/dpm/icepp.jp/home/atlas/[atlasuserdisk/,atlaslocalgroupdisk/]' newsched['ddm'] = 'TOKYO-LCG2_USERDISK,TOKYO-LCG2_LOCALGROUPDISK' newsched['setokens'] = 'TOKYO-LCG2_USERDISK,TOKYO-LCG2_LOCALGROUPDISK' schedconfig.append(newsched) newsched = getQueue('IN2P3-CC-cclcgceli02-atlas_verylong-bqs') if newsched: newsched['site'] = 'LYON_REPRO' newsched['nickname'] = 'LYON_REPRO' newsched['ddm'] = 'IN2P3-CC_DATADISK' newsched['copytoolin'] = 'dccplfc' newsched['copyprefixin'] = 'dcap://ccdcapatlas.in2p3.fr:22125^dummy' schedconfig.append(newsched) newsched = getQueue('TRIUMF-LCG2-ce1-atlas-lcgpbs') if newsched: newsched['site'] = 'TRIUMF_DDM' newsched['nickname'] = 'TRIUMF_DDM' newsched['ddm'] = 'TRIUMF-LCG2_DATADISK' fillStorageInfo(newsched,True) schedconfig.append(newsched) newsched = getQueue('INFN-T1-ce05-lcg-atlas-lcglsf') if newsched: newsched['site'] = 'INFN-T1_DDM' newsched['nickname'] = 'INFN-T1_DDM' newsched['ddm'] = 'INFN-T1_DATADISK' fillStorageInfo(newsched,True) schedconfig.append(newsched) newsched = getQueue('INFN-T1-ce05-lcg-atlas-lcglsf') if newsched: newsched['site'] = 'INFN-T1_REPRO' newsched['nickname'] = 'INFN-T1_REPRO' newsched['ddm'] = 'INFN-T1_DATADISK' newsched['copytool'] = 'lcgcp' newsched['se'] = 'token:ATLASDATADISK:srm://storm-fe.cr.cnaf.infn.it:8444/srm/managerv2?SFN=,srm://srm-v2.cr.cnaf.infn.it' schedconfig.append(newsched) newsched = getQueue('NIKHEF-ELPROD-tbn20-atlas-pbs') if newsched: newsched['site'] = 'NIKHEF_REPRO' newsched['nickname'] = 'NIKHEF_REPRO' newsched['ddm'] = 'NIKHEF-ELPROD_DATADISK' schedconfig.append(newsched) newsched = getQueue('SARA-MATRIX-ce-medium-pbs') if newsched: newsched['site'] = 'SARA_REPRO' newsched['siteid'] = 'SARA_REPRO' newsched['nickname'] = 'SARA_REPRO' newsched['ddm'] = 'NIKHEF-ELPROD_DATADISK' schedconfig.append(newsched) newsched = getQueue('pic-ce05-glong-lcgpbs') if newsched: newsched['site'] = 'PIC_REPRO' newsched['nickname'] = 'PIC_REPRO' newsched['ddm'] = 'PIC_DATADISK' schedconfig.append(newsched) newsched = getQueue('FZK-LCG2-ce-fzk-atlasXL-pbspro') if newsched: newsched['site'] = 'FZK_REPRO' newsched['nickname'] = 'FZK_REPRO' newsched['ddm'] = 'FZK-LCG2_DATADISK' fillStorageInfo(newsched,True) schedconfig.append(newsched) newsched = getQueue('RAL-LCG2-lcgce02-grid2000M-lcgpbs') if newsched: newsched['site'] = 'RAL_REPRO' newsched['nickname'] = 'RAL_REPRO' newsched['ddm'] = 'RAL-LCG2_DATADISK' fillStorageInfo(newsched,True) schedconfig.append(newsched) newsched = getQueue('Taiwan-LCG2-lcg00125-atlas-lcgpbs') if newsched: newsched['site'] = 'ASGC_REPRO' newsched['nickname'] = 'ASGC_REPRO' newsched['ddm'] = 'TAIWAN-LCG2_DATADISK' fillStorageInfo(newsched,True) schedconfig.append(newsched) ### Reprocessing queue at T1 newsched = getQueue('TRIUMF-LCG2-ce1-atlas-lcgpbs') if newsched: newsched['site'] = 'TRIUMF_REPRO' newsched['nickname'] = 'TRIUMF_REPRO' #fillStorageInfo(newsched,True) schedconfig.append(newsched) newsched = getQueue('CERN-PROD-ce106-grid_2nh_atlas-lcglsf') if newsched: newsched['site'] = 'CERN-UNVALID' newsched['siteid'] = 'CERN-UNVALID' newsched['nickname'] = 'CERN-UNVALID' newsched['appdir'] = '/afs/cern.ch/atlas/software/unvalidated/caches' schedconfig.append(newsched) newsched = getQueue('CERN-UNVALID') if newsched: newsched['site'] = 'CERN-RELEASE' newsched['siteid'] = 'CERN-RELEASE' newsched['nickname'] = 'CERN-RELEASE' newsched['appdir'] = '/afs/cern.ch/atlas/software/releases' schedconfig.append(newsched) newsched = getQueue('CERN-UNVALID') if newsched: newsched['site'] = 'CERN-BUILDS' newsched['siteid'] = 'CERN-BUILDS' newsched['nickname'] = 'CERN-BUILDS' newsched['appdir'] = '/afs/cern.ch/atlas/software/builds' schedconfig.append(newsched) #### Other schedconfig additions newsched = {} ## BNL_XRD newsched['name'] = 'default' newsched['nickname'] = 'BNL_XRD' newsched['se'] = 'root://acas0420.usatlas.bnl.gov/' newsched['ddm'] = 'BNLPANDA' newsched['site'] = 'BNL' newsched['region'] = 'US' newsched['wntmpdir'] = '/tmp' newsched['copytool'] = 'xcp' newsched['copysetup'] = '/usatlas/u/sm/xrootd/atlas_xrd_utils/setup.sh' newsched['sepath'] = '/data/cache' newsched['system'] = 'se' schedconfig.append(newsched) #### Add Panda site associations and status info from PandaSiteIDs #### Dummy virtual queues (gatekeeper = to.be.set) and clone queues ready for customization if PandaSiteIDs: dummies = "CHARMM ANALY_CERN ANALY_CNAF ANALY_CPPM ANALY_FZK ANALY_LAPP ANALY_LONG_LYON_DCACHE ANALY_LPC ANALY_LPSC ANALY_ROMANIA02 ANALY_ROMANIA07 ANALY_GRIF-LPNHE ANALY_LYON_DCACHE ANALY_PIC ANALY_RAL ANALY_GRIF-IRFU ANALY_GRIF-LAL ANALY_SARA ANALY_SHEF ANALY_TAIWAN ANALY_TOKYO IHEP ANALY_BEIJING ANALY_MANC ANALY_BRUNEL ANALY_GLASGOW ANALY_LANCS ANALY_LIV BARNETT_TEST TESTCHARMM TWTEST TestPilot UMESHTEST TEST1 TEST2 TEST3 TEST4 ANALY_BNL_test ANALY_BNL_test2 ANALY_BNL_test3 RDIGTEST BNL_ATLAS_test BU_ATLAS_test SLAC_PAUL_TEST UBC_PAUL_TEST UTA_PAUL_TEST OU_PAUL_TEST ANALY_VICTORIA ANALY_MCGILL ANALY_ALBERTA ANALY_SFU ANALY_TORONTO ANALY_TRIUMF ANALY_OU_OCHEP_SWT2 ANALY_TEST BNL_ATLAS_Install AGLT2_Install BU_Atlas_Tier2o_Install HU_ATLAS_Tier2_Install IU_OSG_Install MWT2_UC_Install MWT2_IU_Install UC_ATLAS_MWT2_Install WT2_Install SWT2_CPB_Install OU_OCHEP_SWT2_Install GLOW-ATLAS_Install".split() for d in dummies: # print " --ELN Queue %s " % d ## Get the corresponding queue from PandaSiteIDs if PandaSiteIDs.has_key(d): nickname = PandaSiteIDs[d]['nickname'] # print " --ELN nickname %s " % nickname # Choose any queue to clone for TEST queue if d=='ANALY_TEST': nickname='TRIUMF-LCG2-ce1-atlas-lcgpbs' ## Get the schedconfig data and load the dummy data from it newsched = getQueue(nickname) print " --ELN newsched %s " % newsched if newsched: newsched['nickname'] = d newsched['gatekeeper'] = 'to.be.set' newsched['siteid'] = d # Remove TEST site from brokerage if d=='ANALY_TEST': newsched['status']='brokeroff' newsched['copysetup']='/opt/exp_software/atlas/fixme/triumf.sh^srm://srm.triumf.ca^dcap://dpool.triumf.lcg/pnfs/triumf.ca/data^False^False' if d=='ANALY_TRIUMF': newsched['copysetup']='/opt/exp_software/atlas/fixme/triumf.sh^srm://srm.triumf.ca^dcap://dpool.triumf.lcg/pnfs/triumf.ca/data^False^False' if newsched['cloud'] in ['CA','UK','CERN','DE']: newsched['proxy']='donothide' fillDDMpaths.fillDDMpaths(newsched) # for FR queues if newsched['region'] in ['France','Japan','China','Romania'] : if d in ['ANALY_LONG_LYON','ANALY_LYON','ANALY_LONG_LYON_DCACHE','ANALY_LYON_DCACHE'] : newsched['site']='IN2P3-CC-T2' if d in ['ANALY_GRIF-IRFU'] : newsched['site']='GRIF-SACLAY' fillDDMpaths.fillDDMpaths(newsched) schedconfig.append(newsched) elif d != nickname: print "Queue %s maps to offline queue %s" % ( d, nickname ) else: newsched = {} newsched['nickname'] = d newsched['gatekeeper'] = 'to.be.set' newsched['siteid'] = d if d=='ANALY_TRIUMF': newsched['proxy']='donothide' newsched['copysetup']='/opt/exp_software/atlas/fixme/triumf.sh^srm://srm.triumf.ca^dcap://dpool.triumf.lcg/pnfs/triumf.ca/data^False^False' schedconfig.append(newsched) for s in PandaSiteIDs: omit = 0 for d in dummies: if s == d: # ignore dummy sites omit = 1 if not omit: nickname = PandaSiteIDs[s]['nickname'] #status = PandaSiteIDs[s]['status'] for sc in schedconfig: if sc['nickname'] == nickname: sc['siteid'] = s #sc['status'] = status ##### Customize test queues and glidein queues ##### # helper def checkSubmitFile(newschedd): for jdl in jdllist: if newschedd['jdl'] == jdl['name']: print "New jdl content for %s:\n%s" % (newschedd['jdl'], jdl['jdl']) break return def cloneQueueHandler(p_nickname=None): """ Handler for cloning queues. Given a regex describing the nickname of your desire queue, this routine will search through the defined queues and return the first one that matches. """ newqueue = {} if not p_nickname: p_nickname = re.compile('(analy.*atlas)|bnl|(analy.*bnl)', re.I) # default pattern p_local = re.compile('local', re.I) # don't want local or test queues #p_ddm = re.compile('ddm', re.I) p_test = re.compile('test', re.I) p_univ = re.compile('globus|grid', re.I) for s in schedconfig: nickname = s['nickname'] desired_queue = 0 # search for the desire queue if nickname and ( p_nickname.search(nickname) and not p_local.search(nickname) and not p_test.search(nickname) ): try: for jdl in jdllist: if jdl['name'] == s['jdl']: if jdl.has_key('jdl') and p_univ.search(jdl['jdl']): desired_queue = 1 break except: continue if desired_queue: print "[cloneQueueHandler] Found queue: %s" % nickname for p in s: newqueue[p] = s[p] break if not newqueue: print "[cloneQueueHandler] No available queue is up for cloning ..." return newqueue # end: cloneQueueHandler() # define test queues by cloning a queue followed by customizations for test_queue in ('TEST1','TEST2','TEST3','TEST4',): if int(test_queue[-1]) <= 2: newschedd = getQueue('ANALY_BNL_LOCAL') # clone queue # [note] ANALY_BNL_ATLAS_1-condor's using grigk02! if not newschedd: newschedd = cloneQueueHandler() # customize queue if newschedd: newschedd['gatekeeper'] = 'gridgk01.racf.bnl.gov' newschedd['jobmanager'] = 'condor' old_queue = newschedd['queue'] new_queue = newschedd['queue'] = '%s/jobmanager-%s' % (newschedd['gatekeeper'], newschedd['jobmanager']) # create new jdl refecting changes above newjdl = {} for jdl in jdllist: if newschedd['jdl'] == jdl['name']: #print "Old jdl content for %s:\n%s" % (newschedd['jdl'], jdl['jdl']) for k in jdl.keys(): if k == 'jdl': newjdl[k] = jdl[k].replace(old_queue, new_queue) elif k == 'name': newschedd['jdl'] = newjdl[k] = 'ANALY_BNL_%s' % test_queue else: newjdl[k] = jdl[k] jdllist.append(newjdl) break # if you want to double check, uncomment the following function #checkSubmitFile(newschedd) else: newschedd = getQueue('ANALY_BNL_ATLAS_1-condor') if newschedd: newschedd['nickname'] = test_queue schedconfig.append(newschedd) #print "TEST%d:\n%s" % (int(test_queue[-1]), newschedd) # end: for-loop(test queues) # Define offical glidein queues here glidein_queues = ['BNL_GLIDE_1-condor', 'BNL_GLIDE_2-condor', 'UTA_GLIDE_1-pbs',] glideinQ = {} glideinQ = glideinQ.fromkeys(glidein_queues) for gq in glideinQ: glideinQ[gq] = getQueue('ANALY_BNL_LOCAL') # clone queue # [note] ANALY_BNL_ATLAS_1-condor's using grigk02! if not glideinQ[gq]: glideinQ[gq] = cloneQueueHandler() # customized spec for glidein queues cspec = {} # local submission using Condor-C cspec['BNL_GLIDE_1-condor'] = { 'name' : '%(name)s', 'queue' : '', 'gatekeeper' : 'gridgk01.racf.bnl.gov', 'system' : 'glidein', # osg, condor, or glidien 'site' : 'BNL', 'region' : 'US', #'environ' : ' _condor_JOBTYPE=Condor-C _condor_UNIVERSE=grid ', 'nickname' : 'BNL_GLIDE_1-condor', 'jdl' : 'schedd-condor-c', 'jdladd' : '+remote_jobuniverse = 5\n' + '+RACF_Group = "short"\n' + '+remote_RACF_Group = "short"\n' + '+panda_CE = "BNL_SHORT"\n' + '+Launch_Mode = "Condor-C"\n', 'nqueue' : 5, # this would restrict number of submssions at a time 'jobmanager': 'condor03.usatlas.bnl.gov:9660', 'comment': 'Condor-C pilot submission with glidein schedd', 'cmd' : 'condor_submit -verbose -remote %(remote)s -pool %(pool)s %(cmdfile)s', # submit file, schedd, collector } cspec['BNL_GLIDE_2-condor'] = { 'name' : '%(name)s', 'queue' : '', 'gatekeeper' : 'gridgk02.racf.bnl.gov', 'system' : 'glidein', # osg, condor, or glidien 'site' : 'BNL', 'region' : 'US', #'environ' : ' _condor_JOBTYPE=Condor-C _condor_UNIVERSE=grid ', 'nickname' : 'BNL_GLIDE_2-condor', 'jdl' : 'schedd-condor-c', 'jdladd' : '+remote_jobuniverse = 5\n' + '+RACF_Group = "short"\n' + '+remote_RACF_Group = "short"\n' + '+panda_CE = "BNL_SHORT"\n' + '+Launch_Mode = "Condor-C"\n', 'nqueue' : 5, # this would restrict number of submssions at a time 'jobmanager': 'condor03.usatlas.bnl.gov:9660', 'comment': 'Condor-C pilot submission with glidein schedd', 'cmd' : 'condor_submit -verbose -remote %(remote)s -pool %(pool)s %(cmdfile)s', # submit file, schedd, collector } cspec['UTA_GLIDE_1-pbs'] = { 'name' : '%(name)s', 'queue' : '', 'system' : 'glidein', # osg, condor, or glidein 'site' : 'UTArlington', 'region' : 'US', #'environ' : ' _condor_UNIVERSE=grid ', 'nickname' : 'UTA_GLIDE_1-pbs', 'jdl' : 'schedd-pbs', # jdl name, used to index into the desired jdl template from table: jdllist 'jdladd' : '+RACF_Group = "short"\n' + '+panda_CE = "BNL_SHORT"\n' + '+Launch_Mode = "Condor-PBS"\n', 'nqueue' : 5, 'jobmanager' : 'pbs', 'comment': 'CondorPBS pilot submission with glidein schedd', 'cmd' : 'condor_submit -verbose -remote %(remote)s -pool %(pool)s %(cmdfile)s', } for gq in glideinQ: glideinQ[gq]['cmtconfig'] = 'i686-slc4-gcc34-opt' # common attributes glideinQ[gq]['python_path'] = '/direct/usatlas+u/gfg/python-latest/python-2.4.1/python-2.4.1/bin/python' glideinQ[gq]['se'] = 'srm://dcsrm.usatlas.bnl.gov' for k, v in cspec[gq].items(): glideinQ[gq][k] = v schedconfig.append(glideinQ[gq]) if glidein_debug: glidein_queues = [spec for spec in schedconfig if isGlideinQ(spec, jdllist)] for i, q in enumerate(glidein_queues): print "Queue %d:%s\n %s" % (i+1, q['nickname'], q) ####### Queue customization for spec in schedconfig: if spec['nickname'].startswith('ANALY_SLAC'): # old: spec['copysetup'] = '/afs/slac.stanford.edu/package/xrootd/atlasutils/setup.sh^gsiftp://osgserv04.slac.stanford.edu/xrootd/atlas^srm://osgserv04.slac.stanford.edu:8443/srm/v2/server?SFN=/xrootd/atlas^False^True' # until 7/1/08: spec['copysetup'] = '/afs/slac.stanford.edu/package/xrootd/atlasutils/setup.sh^gsiftp://osgserv04.slac.stanford.edu/xrootd/atlas^root://atl-xrdr.slac.stanford.edu:1094//atlas/xrootd^False^True' spec['copysetup'] = '/afs/slac.stanford.edu/package/xrootd/atlasutils/setup.sh^srm://osgserv04.slac.stanford.edu(:[0-9]+)*/srm/v2/server?SFN=/xrootd/atlas^root://atl-xrdr.slac.stanford.edu:1094//atlas/xrootd^False^True' # spec['copysetup'] = '/afs/slac.stanford.edu/package/xrootd/atlasutils/setup.sh' spec['copytool'] = 'xcp' spec['envsetup'] = '' if spec['nickname'].startswith('ANALY_CERN'): spec['se'] = 'token:ATLASUSERDISK:srm://srm-atlas.cern.ch:8443/srm/managerv2?SFN=/' # if not spec.has_key('environ'): # BNL queues with environ set already have proxies set # if spec['site'].lower().find('bnl') >= 0: # spec['environ'] = " http_proxy=http://squid.sec.bnl.local:3128 https_proxy=http://squid.sec.bnl.local:3128" ####### Finish up schedconfig #debug_queues = [ "UBC-lcgpbs" ] debug_queues = [ ] if glidein_debug: debug_queues.append('bnl-glidein-loop') for spec in schedconfig: if spec.has_key('region') and spec['region'] != 'US': if ( not spec.has_key('copyprefix') ) or spec['copyprefix'] == '': if spec.has_key('se'): spec['copyprefix'] = '%s^dummy' % spec['se'] if not spec.has_key('status'): spec['status'] = '' if not spec.has_key('jdladd'): spec['jdladd'] = '' #if not spec.has_key('lfchost'): spec['lfchost'] = '' if spec.has_key('system') and spec['system'].startswith('lcg') and (not spec.has_key('retry')): spec['retry'] = 'FALSE' # For debug queues, return outputs in case of kill if spec['nickname'] in debug_queues: print "Setting up %s as debug queue" % spec['nickname'] spec['status'] = 'debug' spec['jdladd'] += 'leave_in_queue = true\n' # glidein-specific test if isGlideinQ(spec) and isCondorC(spec, jdllist): spec['jdladd'] += "+remote_jobuniverse = 7\n" for jdl in jdllist: if jdl['name'] == spec['jdl']: print "Setting jdl for %s to return outputs ON_EXIT_OR_EVICT" % spec['jdl'] jdl['jdl'] = jdl['jdl'].replace('ON_EXIT','ON_EXIT_OR_EVICT') # Add environment variables where needed if spec.has_key('environ') and spec['environ'] != '' and not isGlideinQ(spec, jdllist): spec['jdladd'] += 'Environment = "%s"\n' % spec['environ'] # Add local queue spec where needed if spec.has_key('localqueue') and spec['localqueue'] != '': spec['jdladd'] += 'globusrsl = (jobtype=single)(queue=%s)\n' % spec['localqueue'] # Close out Condor job def if spec.has_key('system') and spec['system'] in ( 'condor', 'osg', 'lcg-cg', 'glidein' ): spec['jdladd'] += '\nQueue\n' #print "Adding", spec['nickname'] ##################### submit hosts submithosts = [ { 'name' : 'atldbdev01.cern.ch', 'nickname' : 'atldbdev', 'host' : 'atldbdev01.cern.ch', 'system' : ' lsf ', 'rundir' : '/data/wenaus/scheduler', 'runurl' : 'http://atldbdev01.cern.ch:20082/schedlogs/local/', }, #### New CERN setup { 'name' : 'newcern.cern.ch', 'nickname' : 'atldbdev', 'host' : 'atldbdev01.cern.ch', 'system' : ' lsf ', 'rundir' : '/data/wenaus/scheduler', 'runurl' : 'http://atldbdev01.cern.ch:20082/schedlogs/local/', }, { 'name' : 'gridui01.usatlas.bnl.gov', 'nickname' : 'gridui01', 'host' : 'gridui01.usatlas.bnl.gov', 'system' : ' osg lcg-cg condor glidein ', 'rundir' : '/data/wenaus/scheduler', 'runurl' : 'http://gridui01.usatlas.bnl.gov:25880/schedlogs/', }, { 'name' : 'gridui03.usatlas.bnl.gov', 'nickname' : 'gridui03', 'host' : 'gridui03.usatlas.bnl.gov', 'system' : ' osg lcg-cg condor glidein ', 'rundir' : '/data/wenaus/scheduler', 'runurl' : 'http://gridui03.usatlas.bnl.gov:25880/schedlogs/', }, { 'name' : 'gridui07.usatlas.bnl.gov', 'nickname' : 'gridui07', 'host' : 'gridui07.usatlas.bnl.gov', 'system' : ' osg lcg-cg condor glidein ', 'rundir' : '/home/sm/logs/scheduler', 'runurl' : 'http://gridui07.usatlas.bnl.gov:25880/schedlogs/', }, { 'name' : 'gridui09.usatlas.bnl.gov', 'nickname' : 'gridui09', 'host' : 'gridui09.usatlas.bnl.gov', 'system' : ' osg lcg-cg condor glidein ', 'rundir' : '/home/sm/logs/scheduler', 'runurl' : 'http://gridui09.usatlas.bnl.gov:25880/schedlogs/', }, { 'name' : 'gridui10.usatlas.bnl.gov', 'nickname' : 'gridui10', 'host' : 'gridui10.usatlas.bnl.gov', 'system' : ' osg lcg-cg condor glidein ', 'rundir' : '/home/sm/logs/scheduler', 'runurl' : 'http://gridui10.usatlas.bnl.gov:25880/schedlogs/', }, { 'name' : 'gridui11.usatlas.bnl.gov', 'nickname' : 'gridui11', 'host' : 'gridui11.usatlas.bnl.gov', 'system' : ' osg lcg-cg condor glidein ', 'rundir' : '/home/sm/logs/scheduler', 'runurl' : 'http://gridui11.usatlas.bnl.gov:25880/schedlogs/', }, { 'name' : 'gridui12.usatlas.bnl.gov', 'nickname' : 'gridui12', 'host' : 'gridui12.usatlas.bnl.gov', 'system' : ' osg lcg-cg condor glidein ', 'rundir' : '/home/sm/logs/scheduler', 'runurl' : 'http://gridui12.usatlas.bnl.gov:25880/schedlogs/', }, { 'name' : 'pandadev01.usatlas.bnl.gov', 'nickname' : 'pandadev01', 'host' : 'pandadev01.usatlas.bnl.gov', 'system' : ' osg lcg-cg condor glidein ', 'rundir' : '/usatlas/prodjob/share/schedlogs', # temporary work directory 'runurl' : 'http://pandadev02.usatlas.bnl.gov:25880/glidein_schedlogs/', }, { 'name' : 'pandadev03.usatlas.bnl.gov', 'nickname' : 'pandadev03', 'host' : 'pandadev03.usatlas.bnl.gov', 'system' : ' osg lcg-cg condor glidein ', 'rundir' : '/usatlas/prodjob/share/schedlogs', # temporary work directory 'runurl' : 'http://pandadev03.usatlas.bnl.gov:25880/schedlogs/', }, { 'name' : 'lcgui004.cern.ch', 'nickname' : 'lcgui004', 'host' : 'lcgui004.cern.ch', 'system' : ' osg lcg-cg condor glidein ', 'rundir' : '/var/www/html/autopilot/logs/scheduler/', 'runurl' : 'http://lcgui004.cern.ch/autopilot/logs/scheduler/', }, { 'name' : 'atlas002.uta.edu', 'nickname' : 'atlas002', 'host' : 'atlas002.uta.edu', 'system' : ' osg lcg-cg pbs glidein ', 'rundir' : '/atlas-grid/TestPilot/scheduler', 'runurl' : 'http://atlas002.uta.edu:8091/schedlogs/', }, { 'name' : 'condor-g-1.cs.wisc.edu', 'nickname' : 'Wisconsin', 'host' : 'condor-g-1', 'system' : ' osg lcg-cg pbs glidein ', 'rundir' : '/home/tim/panda-osg/logs/scheduler', 'runurl' : 'http://condor-g-1.cs.wisc.edu:8089/schedlogs/', }, { 'name' : 'grid.dpcc.uta.edu', 'nickname' : 'UTA', 'host' : 'grid.dpcc.uta.edu', 'system' : ' pbs ', 'rundir' : '/data73/grid3-1.1.11/apps/umesh/schedlogs', 'runurl' : 'http://master.dpcc.uta.edu/umesh/schedlogs/', }, { 'name' : 'cclcgatlas02.in2p3.fr', 'nickname' : 'lyon', 'host' : 'cclcgatlas02', 'system' : ' osg lcg-cg condor ', 'rundir' : '/var/www/html/autopilot/logs/scheduler', 'runurl' : 'http://cclcgatlas02.in2p3.fr:43210/autopilot/logs/scheduler/', }, { 'name' : 'condorg.triumf.ca', 'nickname' : 'TRIUMF', 'host' : 'condorg.triumf.ca', 'system' : ' osg lcg-cg ', 'rundir' : '/home/atlas/Panda/autopilot/logs/scheduler', 'runurl' : 'http://gridinfo.triumf.ca/panda/', }, { 'name' : 'svr017.gla.scotgrid.ac.uk', 'nickname' : 'Glasgow', 'host' : 'svr017.gla.scotgrid.ac.uk', 'system' : ' lcg-cg ', 'rundir' : '/disk/www/html/panda/autopilot', 'runurl' : 'http://svr017.gla.scotgrid.ac.uk/panda/autopilot/', }, { 'name' : 'LMU pyfactory', 'nickname' : 'LMU', 'host' : 'etpgrid01.garching.physik.uni-muenchen.de', 'system' : ' lcg-cg ', 'rundir' : 'unused', 'runurl' : 'http://etpgrid01.garching.physik.uni-muenchen.de/pilots/', }, ] ## glidein submit host # [note] # gridgk0x cannot access '/data/wenaus/scheduler'; # use personal directory for the time being schedd_BNL_01 = { 'name' : 'gridgk01.racf.bnl.gov', 'nickname' : 'gridgk01', # alternative: BNL-glidein 'host' : 'gridgk01.racf.bnl.gov', 'system' : ' glidein osg condor ', # include glidein as a kind of system 'rundir' : '/usatlas/prodjob/share/schedlogs', 'runurl' : 'http://gridui03.usatlas.bnl.gov:25880/glidein_schedlogs/', 'jdltxt' : glideinJDL_CC, ## Condor-C job; defined above } schedd_BNL_02 = { 'name' : 'gridgk02.racf.bnl.gov', 'nickname' : 'gridgk02', 'host' : 'gridgk02.racf.bnl.gov', 'system' : ' glidein osg condor ', 'rundir' : '/usatlas/prodjob/share/schedlogs', 'runurl' : 'http://gridui03.usatlas.bnl.gov:25880/glidein_schedlogs/', 'jdltxt' : glideinJDL_CC, ## Condor-C job; defined above } schedd_UTA_01 = { 'name' : 'atlas.dpcc.uta.edu', 'nickname' : 'atlas_dpcc_uta', 'host' : 'atlas.dpcc.uta.edu', 'system' : ' glidein osg pbs ', 'rundir' : '/data73/grid3-1.1.11/barnett/', 'runurl' : 'http:/master.dpcc.uta.edu/barnett', 'jdltxt' : glideinJDL_CC, #Condor-C job description; defined above } schedd_UTA_02 = { 'name' : 'grid.dpcc.uta.edu', 'nickname' : 'atlas_dpcc_uta', 'host' : 'atlas.dpcc.uta.edu', 'system' : ' glidein osg pbs ', 'rundir' : '/data73/grid3-1.1.11/barnett/', 'runurl' : 'http:/master.dpcc.uta.edu/barnett', 'jdltxt' : glideinJDL_CC, #Condor-C jdl; defined above } submithosts.extend([schedd_BNL_01, schedd_BNL_02, schedd_UTA_02]) # support glidein system for s in submithosts: submit_sys = s['system'] try: if submit_sys.find('glidein') < 0: if submit_sys[-1] == ' ': submit_sys += 'glidein ' else: submit_sys += ' glidein ' s['system'] = submit_sys except: pass if glidein_debug: for s in submithosts: print "host: %s, system: %s" % (s['name'], s['system']) if glidein_debug: for spec in schedconfig: if isGlideinQ(spec, jdllist): print "-------------------------- schedd glidein sdf --------------------------------" print " = <%s, %s>" % (spec['nickname'], spec['jdl']) tmpjdl = {} if not spec.has_key('globusadd'): spec['globusadd'] = '' for jdl in jdllist: jdl_name = jdl['name'] if spec['jdl'] == jdl_name: print "Found: schedd jdl!" print " = <%s, %s, %s>" % (jdl_name, jdl['host'], jdl['system']) print "--------------------------------- TEXT ---------------------------------------" print jdl['jdl'] ##################### active services servicelist = [] bnl_monitors = ( './pilotScheduler.py --summary', './pilotScheduler.py --monitor --region=US', './pilotScheduler.py --monitor --region=France', './pilotScheduler.py --monitor --region=CERN', ) for s in bnl_monitors: svc = { 'name' : 'Pilot monitor', 'host' : 'gridui01', 'config' : s, 'state' : 'on', } servicelist.append(svc) bnl_schedulers = ( './pilotScheduler.py --region=US --nqueue=%s' % nqueue_default, './pilotScheduler.py --tag=charmm --pandasite=CHARMM', './pilotScheduler.py --tag=testcharmm --pandasite=TESTCHARMM', #'./pilotScheduler.py --queue=bnl-schedd-glidein --pandasite=UMESHTEST', #'./pilotScheduler.py --tag=schedduniv --pandasite=GPF' ) for s in bnl_schedulers: svc = { 'name' : 'Job scheduler', 'host' : 'gridui01', 'config' : s, 'state' : 'on', } servicelist.append(svc) ##################### site DDM configurations siteddm = ( { 'name' : 'LYON', 'incmd' : 'globus-url-copy', 'inpath' : '', 'inopts' : '', 'outcmd' : 'dccp', 'outopts' : '', 'outpath' : 'dcap://ccsrm.in2p3.fr:22125/pnfs/in2p3.fr/data/atlas/disk/dq2/user', }, { 'name' : 'osg', 'incmd' : 'lcgcp', 'inpath' : 'gsiftp://dcgftp.usatlas.bnl.gov:2811/pnfs/usatlas.bnl.gov/u04/wdeng/osg', 'inopts' : '', 'outcmd' : 'lcgcp', 'outopts' : '', 'outpath' : 'gsiftp://dcgftp.usatlas.bnl.gov:2811/pnfs/usatlas.bnl.gov/u04/wdeng/osg', }, ) ##################### tag info taginfo = [ { 'tag' : 'ANALY_BNL', 'description' : 'ATLAS pathena analysis at BNL', }, { 'tag' : 'ANALY_OU_OCHEP_SWT2', 'description' : 'ATLAS pathena analysis at OU', }, { 'tag' : 'ANALY_LONG_BNL', 'description' : 'ATLAS pathena analysis at BNL, long queue', }, { 'tag' : 'ANALY_CERN', 'description' : 'ATLAS pathena analysis at CERN', }, { 'tag' : 'ANALY_UBC', 'description' : 'ATLAS pathena analysis at Canada WestGrid', }, { 'tag' : 'ANALY_ALBERTA', 'description' : 'ATLAS pathena analysis at U Alberta', }, { 'tag' : 'ANALY_VICTORIA', 'description' : 'ATLAS pathena analysis at U Vic', }, { 'tag' : 'ANALY_TRIUMF', 'description' : 'ATLAS pathena analysis at TRIUMF', }, { 'tag' : 'ANALY_TORONTO', 'description' : 'ATLAS pathena analysis at UofT', }, { 'tag' : 'ANALY_LYON', 'description' : 'ATLAS pathena analysis at IN2P3-CC', }, { 'tag' : 'ANALY_LONG_LYON', 'description' : 'ATLAS pathena analysis LONG queue at IN2P3-CC', }, { 'tag' : 'ANALY_GRIF-IRFU', 'description' : 'ATLAS pathena analysis at SACLAY', }, { 'tag' : 'ANALY_LYON_DCACHE', 'description' : 'ATLAS pathena analysis at LYON using dCache', }, { 'tag' : 'ANALY_CPPM', 'description' : 'ATLAS pathena analysis at Marseille', }, { 'tag' : 'ANALY_LPC', 'description' : 'ATLAS pathena analysis at Clermont-Ferrand', }, { 'tag' : 'ANALY_LPSC', 'description' : 'ATLAS pathena analysis at IN2P3-LPSC', }, { 'tag' : 'ANALY_ROMANIA02', 'description' : 'ATLAS pathena analysis in Romania02', }, { 'tag' : 'ANALY_ROMANIA07', 'description' : 'ATLAS pathena analysis in Romania07', }, { 'tag' : 'ANALY_GRIF-LPNHE', 'description' : 'ATLAS pathena analysis at LPNHE (Paris)', }, { 'tag' : 'ANALY_LAPP', 'description' : 'ATLAS pathena analysis at LAPP (Annecy)', }, { 'tag' : 'ANALY_GRIF-LAL', 'description' : 'ATLAS pathena analysis at LAL (Orsay)', }, { 'tag' : 'ANALY_TOKYO', 'description' : 'ATLAS pathena analysis at TOKYO', }, { 'tag' : 'ANALY_BEIJING', 'description' : 'ATLAS pathena analysis at BEIJING', }, { 'tag' : 'ANALY_RAL', 'description' : 'ATLAS pathena analysis at UK RAL', }, { 'tag' : 'ANALY_MANC', 'description' : 'ATLAS pathena analysis at UK Manchester', }, { 'tag' : 'ANALY_BRUNEL', 'description' : 'ATLAS pathena analysis at Brunel (UK)', }, { 'tag' : 'ANALY_GLASGOW', 'description' : 'ATLAS pathena analysis at Glasgow', }, { 'tag' : 'ANALY_LANCS', 'description' : 'ATLAS pathena analysis at LANCS (UK)', }, { 'tag' : 'ANALY_LIV', 'description' : 'ATLAS pathena analysis at Liverpool (UK)', }, { 'tag' : 'ANALY_SHEF', 'description' : 'ATLAS pathena analysis at Sheffield', }, { 'tag' : 'ANALY_FZK', 'description' : 'ATLAS pathena analysis at FZK Germany', }, { 'tag' : 'ANALY_CNAF', 'description' : 'ATLAS pathena analysis at CNAF Italy', }, { 'tag' : 'ANALY_PIC', 'description' : 'ATLAS pathena analysis at PIC Spain', }, { 'tag' : 'ANALY_SARA', 'description' : 'ATLAS pathena analysis at SARA Netherlands', }, { 'tag' : 'ANALY_TAIWAN', 'description' : 'ATLAS pathena analysis at Taiwan ASGC', }, { 'tag' : 'itb', 'description' : 'Integration testbed', }, { 'tag' : 'tpprod', 'description' : 'ATLAS production with AutoPilot', }, { 'tag' : 'prod-usatlas', 'description' : 'US ATLAS production queues', }, { 'tag' : 'charmm', 'description' : 'Queues usable by CHARMM VO', }, { 'tag' : 'testcharmm', 'description' : 'Queues that we are testing for the CHARMM VO', }, { 'tag' : 'schedd_glidein', 'description' : 'Queues for testing schedd glidein', }, { 'tag' : 'rdigtest', 'description' : 'Queues usable by RDIG testing', }, { 'tag' : 'working', 'description' : 'Working queues as of the last validation scan', }, { 'tag' : 'has_worked', 'description' : 'Has been working at one time or another', }, { 'tag' : 'never_worked', 'description' : 'Has never been known to work', }, { 'tag' : 'broken', 'description' : 'Broken queues - job failures', }, { 'tag' : 'noauth', 'description' : 'Authorization failure', }, { 'tag' : 'timeout', 'description' : 'Jobs aborted after excessive time in wait state', }, { 'tag' : 'offline', 'description' : 'Queues currently offline', }, { 'tag' : 'no_atlas', 'description' : 'ATLAS not currently an authorized VO', }, ] ###### tag assignments tagset = {} tagset['itb'] = ' .*ITB.* FNAL_GPFARM_TEST IUB-VTB FNAL_FERMIGRID_TEST TTU-TESTWULF ' tagset['prod-usatlas'] = ' BNL_ATLAS_1-condor BU_ATLAS_Tier2-pbs BU_ATLAS_Tier2o-pbs OU_OCHEP_SWT2-condor SLACXRD-lsf UC_ATLAS_MWT2-condor UC_Teraport-pbs UTA-DPCC-pbs UTA-SWT2-pbs ' tagset ['tpprod'] = ' bnl-condor-* ANALY.* ' tagset ['ANALY_BNL'] = ' ANALY_BNL_ATLAS_1-condor ' tagset ['ANALY_OU_OCHEP_SWT2'] = ' ANALY_OU_OCHEP_SWT2-condor ' tagset ['ANALY_CERN'] = ' CERN-PROD-ce.*-grid_2nh_atlas-lcglsf ' tagset ['ANALY_UBC'] = ' UBC-.* ' tagset ['ANALY_TRIUMF'] = ' TRIUMF-LCG2-ce1-atlas-lcgpbs TRIUMF-LCG2-ce2-atlas-lcgpbs ' tagset ['ANALY_ALBERTA'] = ' ALBERTA-LCG2-lcgce01-atlas-lcgpbs ' tagset ['ANALY_VICTORIA'] = ' VICTORIA-LCG2-lcg-ce-general-lcgpbs ' tagset ['ANALY_TORONTO'] = ' TORONTO-LCG2-bigmac-lcg-ce-atlas-lcgcondor ' #-- FR-Cloud tagset ['ANALY_CPPM'] = ' IN2P3-CPPM-marce01-atlas-pbs ' tagset ['ANALY_BEIJING'] = ' BEIJING-LCG2-lcg002-atlas-lcgpbs ' tagset ['ANALY_GRIF-LAL'] = ' GRIF-LAL-grid10-atlasana-pbs ' tagset ['ANALY_GRIF-LPNHE'] = ' GRIF-LPNHE-lpnce-atlasana-pbs ' tagset ['ANALY_GRIF-IRFU'] = ' GRIF-IRFU.*atlasana.* ' tagset ['ANALY_LAPP'] = ' IN2P3-LAPP-lapp-ce01-atlas-pbs ' tagset ['ANALY_LPC'] = ' IN2P3-LPC-clrlcgce03-atlasana-lcgpbs IN2P3-LPC-clrlcgce01-atlasana-lcgpbs ' tagset ['ANALY_LPSC'] = ' IN2P3-LPSC-lpsc-ce-atlasana-pbs ' tagset ['ANALY_LYON_DCACHE'] = ' IN2P3-CC-T2-cclcgceli06-medium-bqs IN2P3-CC-T2-cclcgceli05-medium-bqs ' tagset ['ANALY_LONG_LYON_DCACHE'] = ' IN2P3-CC-T2-cclcgceli06-long-bqs IN2P3-CC-T2-cclcgceli05-long-bqs ' tagset ['ANALY_ROMANIA02'] = ' RO-02-NIPNE-tbat01-atlas-lcgpbs ' tagset ['ANALY_ROMANIA07'] = ' RO-07-NIPNE-tbit01-atlas-lcgpbs ' tagset ['ANALY_LYON'] = ' ANALY_LYON ' tagset ['ANALY_TOKYO'] = ' TOKYO-LCG2-lcg-ce01-atlas-lcgpbs ' tagset ['ANALY_RAL'] = ' RAL-LCG2-.*.*S-lcgpbs ' tagset ['ANALY_MANC'] = ' UKI-NORTHGRID-MAN-HEP-ce01-atlas-lcgpbs ' tagset ['ANALY_BRUNEL'] = ' UKI-LT2-Brunel-dgc-grid-44-atlas-lcgpbs ' tagset ['ANALY_GLASGOW'] = ' UKI-SCOTGRID-GLASGOW-svr016-atlas-lcgpbs ' tagset ['ANALY_LANCS'] = ' UKI-NORTHGRID-LANCS-HEP-fal-pygrid-18-atlas-lcgpbs ' tagset ['ANALY_LIV'] = ' UKI-NORTHGRID-LIV-HEP-hepgrid2-atlas-lcgpbs ' tagset ['ANALY_SHEF'] = ' UKI-NORTHGRID-SHEF-HEP-lcgce0-atlas-lcgpbs ' tagset['ANALY_FZK'] = ' FZK-LCG2-ce-5-fzk-atlasXS-pbspro FZK-LCG2-ce-4-fzk-atlasXS-pbspro FZK-LCG2-ce-2-fzk-atlasXS-pbspro ' tagset['ANALY_SARA'] = ' SARA-MATRIX-ce-short-pbs ' tagset['ANALY_CNAF'] = ' INFN-T1-ce05-lcg-atlas-lcglsf ' tagset['ANALY_TAIWAN'] = ' Taiwan-LCG2-w-ce01-atlas-lcgpbs Taiwan-LCG2-w-ce02-atlas-lcgpbs ' tagset['ANALY_PIC'] = ' pic-ce.*-gmedium-.* ' tagset['schedd_glidein'] = ' SCHEDD_GLIDEIN-osg-atlas ' tagset['rdigtest'] = ' CERN-PROD-ce102-grid_2nh_atlas-lcglsf ' #tagset['charmm'] = ' ANALY.* bnl-condor-.* GROW-UNI-P.* Rice.* UFlorida-EO.* UTA-DPCC.* VAMPIRE-Vanderbilt.* ' #tagset['charmm'] = ' GRASE-CCR-U2.* UFlorida-IHEPA.* UFlorida-PG.* Purdue-Physics.* GROW-UNI-P.* USCMS-FNAL-WC1-CE.* FIU-PG.* UCSD.* UTA-DPCC.* VAMPIRE-Vanderbilt.* ' tagset['charmm'] = ' UFlorida-IHEPA.* UFlorida-PG.* FIU-PG.* UCSD.* Nebraska-pbs OSG_LIGO_PSU-pbs SBGrid-Harvard-East-condor SBGrid-Harvard-Exp-condor ' tagset['charmm'] += tagset['prod-usatlas'] tagset['charmm'] = tagset['charmm'].replace('SLACXRD-lsf','') tagset['charmm'] = tagset['charmm'].replace('SLACXRD','') tagset['charmm'] = tagset['charmm'].replace('UC_Teraport-pbs','') tagset['charmm'] = tagset['charmm'].replace('Purdue-Physics-pbs', '') tagset['charmm'] = tagset['charmm'].replace('UTA-DPCC-pbs', '') tagset['charmm'] = tagset['charmm'].replace('UC_Teraport-pbs', '') tagset['charmm'] = tagset['charmm'].replace('UC_ATLAS_MWT2-condor', '') tagset['charmm'] = tagset['charmm'].replace('BU_ATLAS_Tier2-pbs', '') tagset['charmm'] = tagset['charmm'].replace('BU_ATLAS_Tier2o-pbs', '') #print "CHARMM %s" % tagset['charmm'] #tagset['testcharmm'] = ' UWMadisonCMS-condor UTA0SWT2-pbs Purdue-Physics-pbs ' #tagset['testcharmm'] = ' UWMadisonCMS-condor UTA-SWT2-pbs ' tagset['testcharmm'] = ' Purdue-MPI-pbs ' tagset['offline'] = '' errinfo = {} # do not work (gLite CE): not_working = ' ' errinfo['Not usable'] = not_working tagset['offline'] += not_working # No authorization: noauth = ' NYU.* Purdue-Lear.* USCMS-FNAL-WC1-LCG.* NERSC-PDSF.* UIC_PHYSICS.* ' errinfo['No authorization'] = noauth tagset['noauth'] = noauth tagset['offline'] += noauth # No svn repository access # nosvn = " RU-Moscow-KIAM-LCG2.* CIT.*" # errinfo['No svn repository access'] = nosvn # tagset['offline'] += nosvn # Closed: $$$ and so indicated in GSTAT; need to extract this info closed = ' ' #' UKI-LT2-Brunel ' errinfo['Closed'] = closed tagset['offline'] += closed ## Add offline queues to offline tag for spec in schedconfig: if spec.has_key('tags'): spec['tags'] = spec['tags'].replace('offline','') if spec['status'] == 'offline': tagset['offline'] += ' %s ' % spec['nickname'] else: tagset['offline'] = tagset['offline'].replace(spec['nickname'],'') systems = {} for spec in schedconfig: if spec.has_key('system') and not systems.has_key(spec['system']): systems[spec['system']] = '' if not spec.has_key('tags'): spec['tags'] = '' else: spec['tags'] = spec['tags'].replace('offline','') if spec['tags'] != '': spec['tags'] += ' ' if spec.has_key('system'): spec['tags'] += spec['system'] if systems[spec['system']] != '': systems[spec['system']] += ' ' systems[spec['system']] += spec['nickname'] for s in systems: td = { 'tag' : s, 'description' : '%s submission system' % s } td['queues'] = systems[s] sl = systems[s].split() td['nqueues'] = len(sl) taginfo.append(td) for tagd in taginfo: tag = tagd['tag'] if tagset.has_key(tag): tagd['nqueues'] = 0 tagd['queues'] = '' tagpats = tagset[tag].split() for tp in tagpats: pat = re.compile(tp) matched = 0 for spec in schedconfig: mat = pat.match(spec['nickname'].strip()) if mat: matched = 1 spec['tags'] = spec['tags'].replace('offline','') if spec['tags'] != '': spec['tags'] += ' ' spec['tags'] += tag tagd['nqueues'] += 1 if tagd['queues'] != '': tagd['queues'] += ' ' tagd['queues'] += spec['nickname'] if not matched: print "WARNING: could not find queue %s to set tag %s" % ( tp, tag ) else: if not tagd.has_key('nqueues'): tagd['nqueues'] = 0 tagd['queues'] = '' ## Build the lists of correct tags for sites sitetags = {} for tagd in taginfo: tag = tagd['tag'] if tag in ( 'broken', 'has_worked', 'never_worked', 'timeout', 'working' ): continue queuelist = tagd['queues'].split() for q in queuelist: if not sitetags.has_key(q): sitetags[q] = '' sitetags[q] += '%s ' % tag for s in schedconfig: if sitetags.has_key(s['nickname']): s['tags'] = sitetags[s['nickname']] #print s['nickname'], sitetags[s['nickname']] for spec in schedconfig: spec['errinfo'] = '' for err in errinfo: pats = errinfo[err].split() for pt in pats: pat = re.compile(pt) for spec in schedconfig: mat = pat.match(spec['nickname']) if mat: #print '%s: %s' % ( spec['nickname'], err ) spec['errinfo'] = err ##### For Condor queues, add the environment variable giving access to the local job ID for s in schedconfig: if s.has_key('system') and s['system'] in ( 'lcg-cg', 'osg', 'condor', 'glidein' ): if s.has_key('jdl'): jdl = s['jdl'] found = 0 for j in jdllist: if j['name'] == jdl: found = 1 regexp = '(Environment[\s]+=[\s]+"[^"]+)' pat = re.compile(regexp) mat = pat.search(j['jdl']) if mat: envstr = mat.group(1) pat = re.compile(".*clusterid=\$\(Cluster\)") mat = pat.match(envstr) if not mat: newenvstr = envstr + " clusterid=$(Cluster)" newjdl = re.sub(regexp,newenvstr,j['jdl']) j['jdl'] = newjdl else: added = 0 if s.has_key('jdladd'): mat = pat.search(s['jdladd']) if mat: # Add it to jdladd, if it exists and sets environment added = 1 envstr = mat.group(1) newenvstr = envstr + " clusterid=$(Cluster)" newjdladd = re.sub(regexp,newenvstr,s['jdladd']) s['jdladd'] = newjdladd if not added: # otherwise append it to jdl pat = re.compile("clusterid=\$\(Cluster\)") mat = pat.search(j['jdl']) if not mat: newjdl = j['jdl'] + '\nEnvironment = clusterid=$(Cluster)\n' j['jdl'] = newjdl ##### Status override settings (but not overridden if queue has sysconfig='manual'; see below) set_online = "UBC-pbs" set_offline = "" online_list = set_online.split() offline_list = set_offline.split() for spec in schedconfig: for q in offline_list: if spec['nickname'].find(q) >= 0: spec['status'] = 'offline' print "Setting %s queue %s offline" % ( q, spec['nickname'] ) for q in online_list: if spec['nickname'].find(q) >= 0: spec['status'] = 'online' print "Setting %s queue %s online" % ( q, spec['nickname'] ) ##### sysconfig='manual' queues have status set via curl; pilotController doesn't touch it manual_queues = {} for spec in schedconfig: if spec.has_key('region') and spec['region'] == 'US': manual_queues[spec['nickname']] = 1 for spec in schedconfig: if manual_queues.has_key(spec['nickname']): spec['sysconfig'] = 'manual' if spec.has_key('status'): del spec['status'] if spec.has_key('nqueue'): del spec['nqueue'] ## Check manual queues in DB, be sure the status isn't being changed utils.initDB() query = "select nickname, sysconfig, status, cloud, tags from schedconfig" nrows = utils.dictcursor.execute(query) rows = utils.dictcursor.fetchall() for r in rows: found = 0 for s in schedconfig: if r['nickname'] == s['nickname']: found = 1 if r['sysconfig'] == 'manual': s['status'] = r['status'] if found == 0 and r['status'] == 'online' and r['cloud'] != 'US' and r['sysconfig'] != 'manual' and ( (not r.has_key('gatekeeper')) or r['gatekeeper'] != 'to.be.set') : # for non-US sites, if not in schedconfig list (ie not in current BDII), set it offline unless queue is set to manual set_offline = 0 if r['nickname'].startswith('CERN-PROD'): set_offline = 1 # Test setting offline for Closed queues. 'Closed' CEs are not in bdii # or rather do not acccept atlas VO if r.has_key('cloud') and r['cloud'] in ['UK','CA']: set_offline = 0 # ignore ANALY queues is PandaSites.py not loaded if not PandaSiteIDs and r['nickname'].startswith('ANALY'): set_offline = 0 if set_offline: print "Queue %s not in BDII. Status changed from online to offline" % r['nickname'] sco = {} sco = r sco['status'] = 'offline' schedconfig.append(sco) else: print "Queue %s not in BDII but is online. Status not changed" % r['nickname'] utils.endDB() ## cloudconfig table if loadclouds: clouds = [ # { 'name' : 'CA', 'description' : 'Canada', 'tier1' : 'TRIUMF', 'tier1SE' : 'TRIUMF-LCG2_MCDISK', 'server' : 'pandasrv.usatlas.bnl.gov' }, # { 'name' : 'CERN', 'description' : 'CERN', 'tier1' : 'CERN', 'tier1SE' : 'CERN-PROD_MCDISK', 'server' : 'pandasrv.usatlas.bnl.gov' }, # { 'name' : 'DE', 'description' : 'Germany', 'tier1' : 'FZK-LCG2', 'tier1SE' : 'FZK-LCG2_MCDISK', 'server' : 'pandasrv.usatlas.bnl.gov' }, # { 'name' : 'ES', 'description' : 'Spain', 'tier1' : 'PIC', 'tier1SE' : 'PIC_MCDISK', 'server' : 'pandasrv.usatlas.bnl.gov' }, # { 'name' : 'FR', 'description' : 'France', 'tier1' : 'LYON', 'tier1SE' : 'IN2P3-CC_MCDISK', 'server' : 'pandasrv.usatlas.bnl.gov' }, # { 'name' : 'IT', 'description' : 'Italy', 'tier1' : 'INFN-T1', 'tier1SE' : 'INFN-T1_MCDISK', 'server' : 'pandasrv.cern.ch' }, # { 'name' : 'NDGF', 'description' : 'Nordic countries', 'tier1' : 'NDGF', 'tier1SE' : 'NDGFDISK', 'server' : 'pandasrv.usatlas.bnl.gov' }, # { 'name' : 'ND', 'description' : 'Nordic countries', 'tier1' : 'ND', 'tier1SE' : 'NDGF-T1_MCDISK', 'server' : 'pandasrv.usatlas.bnl.gov', 'status': 'brokeroff', 'transtimelo' : 2, 'transtimehi' : 1 }, # { 'name' : 'NL', 'description' : 'Netherlands', 'tier1' : 'NIKHEF-ELPROD', 'tier1SE' : 'SARA-MATRIX_MCDISK', 'server' : 'pandasrv.usatlas.bnl.gov' }, # { 'name' : 'TW', 'description' : 'Taiwan', 'tier1' : 'ASGC', 'tier1SE' : 'ASGCDISK,ASGCDISK_V2,TAIWAN-LCG2_DATADISK,TAIWAN-LCG2_MCDISK', 'server' : 'pandasrv.usatlas.bnl.gov' }, # { 'name' : 'UK', 'description' : 'United Kingdom', 'tier1' : 'RAL', 'tier1SE' : 'RALDISK', 'server' : 'pandasrv.usatlas.bnl.gov' }, # { 'name' : 'US', 'description' : 'United States', 'tier1' : 'BNL_ATLAS_1', 'tier1SE' : 'BNLPANDA', 'server' : 'pandasrv.usatlas.bnl.gov' }, ] utils.initDB() utils.replaceDB('cloudconfig', clouds) utils.endDB() ##################### load the data to DB if DBUpdate: print "Updating DBs ..." utils.initDB() #print "Load schedulers" for s in schedconfig: if s.has_key('status') and s['status'] == 'online': s['tags'] = s['tags'].replace('offline','') utils.replaceDB('schedconfig', schedconfig) # and finally for schedconfig, make sure seprodpath=sepath for US analysis sites query = "update schedconfig set seprodpath=sepath where cloud='US' and nickname like 'ANALY%' and sepath!=seprodpath" utils.dictcursor.execute(query) #print "Load pilot types" utils.replaceDB('pilottype', pilots) #print "Load jdl" utils.replaceDB('jdllist', jdllist) #print "Load submit hosts" ## Set the pilotqueue table names for submithosts for s in submithosts: if s['nickname'] in ( 'gridui03', 'gridui07', 'gridui09' ): s['pilotqueue'] = 'pilotqueue_bnl' else: s['pilotqueue'] = 'pilotqueue' utils.replaceDB('submithosts', submithosts) #print "Load site DDM configurations" utils.replaceDB('siteddm', siteddm) #print "Load tags" utils.replaceDB('taginfo', taginfo) utils.endDB() else: print "Entering testing mode. No DB updates will occur ..." # Later, add SimpleHTTP controller to modify config, and use DB config as source def isCondorC(spec=[], jdllist=[]): """ Input: 1. *jdl* is the jdl field of schedconfig 2. *jdllist* is the global jdllist that contains spec for various submit files Output: True if the submit file associated with *jdl* is a Condor-C submit file; False if NOT """ try: result = False; jdltxt = '' if type(jdllist) != type([]): raise RuntimeError, "jdllist should be a list of dictionaries" if jdllist: for e in jdllist: if e['name'] == spec['jdl']: jdltxt = e['jdl'] pat_res = re.compile('grid_resource[ ]*=[ ]*(\S+\w+\S+\s*){3}$', re.I) # match condor-C template pat_univ = re.compile('universe[ ]*=[ ]*grid', re.I) jdl_lines = jdltxt.split('\n') m_univ = m_res = 0 for line in jdl_lines: if pat_res.search(line): m_res = 1 if pat_univ.search(line): m_univ = 1 if m_res and m_univ: result = True except RuntimeError, e: print "[isCondorC] Diagnosis: %s" % e #sys.exit(1) result = False return result def isGlideinQ(spec=[], jdllist=[]): try: jdltxt = '' # pull out the job description and then parse it ... if jdllist: for e in jdllist: if spec.has_key('jdl') and e.has_key('name'): # some queues may not have 'jdl' added yet if e['name'] == spec['jdl']: jdltxt = e['jdl'] else: #print "%s may not not have jdl yet" % spec['nickname'] pass pat_glidein = re.compile("glide(in)?", re.I) if pat_glidein.search(spec['nickname']): return True if pat_glidein.search(spec['system']): return True except RuntimeError, e: print "[isGlideinQ] Diagnosis: %s", e #sys.exit(1) return False if __name__ == "__main__": loadConfig()