Changeset 3430

Show
Ignore:
Timestamp:
09/21/2009 12:54:31 PM (6 months ago)
Author:
brian
Message:

Upgrade of cmsSync to only use the PhEDEx datasvc.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • cmsSync/setup.py

    r2145 r3430  
    44setup( \ 
    55    name="cmsSync", 
    6     version = "0.2.0", 
     6    version = "0.2.1", 
    77    author = "Brian Bockelman", 
    88    author_email="bbockelm@math.unl.edu", 
  • cmsSync/src/cmsSync/sync_phedex.py

    r2853 r3430  
    1212from xml.dom.minidom import parse 
    1313 
     14import sync_file 
    1415from dCachePnfs import PnfsSizeWalker 
    1516from cms_tools import pretty_size 
     
    3233    parser.add_option('-z', '--size', action='store_true', dest="show_size", 
    3334        default=False, help="Show the total filesystem size.") 
     35    parser.add_option("-i", "--inspect", dest="inspect", default=False, 
     36        action="store_true", help="Check the files with CMSSW") 
     37    parser.add_option("-c", "--cmsset", dest="cmsset", default=None, 
     38        help="Location of cmsset_default.sh") 
     39    parser.add_option("-v", "--cmsswVersion", dest="cmssw", 
     40        default="CMSSW_3_1_1", help="CMSSW version to use.") 
     41    parser.add_option("-a", "--accessProtocol", dest="access", 
     42        default="direct", help="Access protocol to check the files.") 
    3443    options, args = parser.parse_args() 
    3544    if len(args) == 0: 
     
    4150def get_phedex_name(se_name): 
    4251    url = os.path.join(nebraska_datasvc, 'map_se', se_name) 
     52    try: 
     53        fp = urllib2.urlopen(url) 
     54    except: 
     55        print url 
     56        raise 
     57    return fp.read() 
     58 
     59def get_phedex_name(se_name): 
     60    url = os.path.join(phedex_datasvc, 'json', 'prod', 'nodes') 
    4361    fp = urllib2.urlopen(url) 
    44     return fp.read() 
     62    nodes = json(fp.read()) 
     63    nodes = nodes['phedex']['node'] 
     64    for node in nodes: 
     65        if node['se'] == se_name: 
     66            return node['name'] 
     67    raise Exception("Unable to determine PhEDEx name for SE %s." % se_name) 
    4568 
    4669def get_tfc(se_name): 
     
    5578    tfc = get_tfc(se_name) 
    5679    phedex_name = get_phedex_name(se_name) 
    57     url = os.path.join(nebraska_datasvc, 'xml', phedex_name) 
    58     fp = urllib2.urlopen(url) 
     80    #url = os.path.join(nebraska_datasvc, 'xml', phedex_name) 
     81    url = os.path.join(phedex_datasvc, 'xml', 'prod', 'tfc') 
     82    query = urllib.urlencode({'node': phedex_name}) 
     83    fp = urllib2.urlopen(url + "?" + query) 
    5984    dom = parse(fp) 
    6085    tfc = TfcMapper(dom) 
     
    126151        do_lookup(query) 
    127152 
    128 def get_file_replicas(blocks, se_name, numThreads=20, atatime=20): 
     153def get_file_replicas(blocks, se_name, numThreads=20, atatime=10): 
    129154    t2 = -time.time() 
    130155    splits = splitBlocks(blocks, splitNum=numThreads) 
     
    260285        pretty_size(extra_lfns_size, PrettyOptions)) 
    261286 
     287    if options.inspect: 
     288        print "About to start opening files with PyROOT to validate them." \ 
     289            "  This may take awhile..." 
     290        check_lfns = reg_lfns.intersection(lfns) 
     291        check_pfns = [tfc.map_to_pfn(lfn, protocol=options.access) for \ 
     292            lfn in check_lfns] 
     293        open("checked_files.txt", "w").write("\n".join(check_pfns)) 
     294        print "Saved the PFNs we'll check to checked_files.txt." 
     295        if options.cmsset and not os.path.exists(options.cmsset): 
     296            print "Error!  Unable to find cmsset_default.sh; value given was:" \ 
     297                " %s." % str(options.cmsset) 
     298            return 1 
     299        sync_file.bootstrap_cms(options.cmsset, options.cmssw) 
     300        bad_files = sync_file.verify_files(check_pfns) 
     301        open("bad_files.txt", "w").write("\n".join(bad_files)) 
     302        print "There were %i files which failed to open in PyROOT.  These are" \ 
     303            " written to bad_files.txt." 
     304 
    262305if __name__ == '__main__': 
    263     main() 
    264  
     306    retval = main() 
     307    if retval: 
     308        sys.exit(retval) 
     309