for i in range(len(subdirs)):
        subdir = dir + subdirs[i].strip("\n") + "/"
        if (options.clean): cleanfiles(subdir)
        if (options.duplicate): removeduplicated(subdir)
        makefilelists(subdir)

# Transfer Files
myOptions = drOptions()
myOptions.TO_SITE = options.TO_SITE
myOptions.FROM_SITE = "CERN_CASTOR_USER"
myOptions.WHITELIST = ""
myOptions.BLACKLIST = ""

filelists = popen("ls | grep '\.filelist'").readlines()
for i in range(len(filelists)):
    filelist = filelists[i].strip("\n")
    myOptions.logfile = filelist[0:filelist.find(".")] + ".log"
    fileName = [
        filelist, options.USERDIR + "/" + filelist[0:filelist.find(".")]
    ]
    #print "fileName is: %s" %fileName
    NumFiles = popen("cat " + filelist +
                     " | wc | awk '{print $1}'").readlines()
    NumFiles[0] = NumFiles[0].strip("\n")
    myOptions.THREADS = NumFiles[0]
    if int(NumFiles[0]) > 25: myOptions.THREADS = "25"
    if options.singlethread: myOptions.THREADS = "1"
    drExit = data_replica.data_replica(fileName, myOptions)
    if (drExit != 0 and not (options.DRYRUN)):
        print "Some errors in copying"
Пример #2
0
def dbs_transferRegister(DATASET, TO_SITE):
    #SiteToSe, SeToSite = getSeName()
    myBlocks = getDatasetBlockList(api, DATASET)

    if myBlocks!=1:
        totalDatasetSize = 0
        for block in myBlocks:
            totalDatasetSize += block['BlockSize']

        print "Dataset Size: "+ str(totalDatasetSize/(1024*1024*1024)) +" GB"

        blockTransferErrors=0
        for block in myBlocks:
            skip = False
            print "\n------- Copying block: "+ block['Name']
            print "Block Size: "+str( float(block['BlockSize'])/(1024*1024*1024))+" GB"

            # Checking existing replicas
            if not options.RETRANSFER:
                for se in block['StorageElementList']:
                    if SeToSite[ se["Name"] ] == TO_SITE:
                        print "[INFO] Block already at destination, skipping"
                        skip = True
            
            if skip:
                continue
            logfile = "data_replica_"+str(os.getpid())+".log"
            fileList = getBlockListFile(api,DATASET,block['Name'])
            fileName = createFileTxt( fileList)
            myOptions = drOptions()
            myOptions.TO_SITE = TO_SITE
            myOptions.logfile = logfile
            myOptions.DEBUG = options.DEBUG
            myOptions.TOOL = options.TOOL
            myOptions.delete = options.DELETE
            
            sourceSEs = block['StorageElementList']
            data_replica.setBlackWhiteSiteList(options,PREFERRED_SITES, DENIED_SITES  )
            filteredSourceSEs = arrange_sources(sourceSEs ,PREFERRED_SITES, DENIED_SITES )
                        
            if filteredSourceSEs == []:
                print "[ERROR] No sites found for block:\n ",block['Name'],"\nplease review your blacklist. Exiting..."
                exit(1)

            blockTransferred=False
            for se in filteredSourceSEs:
                print "SE: " +se['Name']
                myOptions.FROM_SITE = SeToSite[ se['Name'] ]
                print "Copying from "+myOptions.FROM_SITE
                drExit = data_replica.data_replica([fileName], myOptions)
                if drExit!=0:
                    print "Some errors in copying, block not added to replica"
                    ### print error files?
                else:
                    print "\nCopy succeded for block "+ block["Name"]+", registering in DBS..."
                    addBlockReplica(api, block['Name'], SiteToSe[TO_SITE])
                    blockTransferred=True
                    print os.getcwd()+"/"+fileName
                    os.unlink( os.getcwd()+"/"+fileName)
                    break
            
            if not blockTransferred: blockTransferErrors += 1
    
                    
        print 'Processed %d blocks, %d Copied successfully' % (len(myBlocks), len(myBlocks)-blockTransferErrors) 
        exitCode = 0 if blockTransferErrors == 0 else 2
        return exitCode
if options.recursive:
	subdirs = popen("rfdir "+dir+" | awk '{print $9}'").readlines()
	for i in range(len(subdirs)):
		subdir = dir+subdirs[i].strip("\n") + "/"
		if (options.clean): cleanfiles(subdir)
		if (options.duplicate): removeduplicated(subdir)
		makefilelists(subdir)

# Transfer Files
myOptions = drOptions()
myOptions.TO_SITE = options.TO_SITE
myOptions.FROM_SITE = "CERN_CASTOR_USER"
myOptions.WHITELIST = ""
myOptions.BLACKLIST = ""

filelists = popen("ls | grep '\.filelist'").readlines()
for i in range(len(filelists)):
	filelist = filelists[i].strip("\n")
	myOptions.logfile = filelist[0:filelist.find(".")]+".log"
	fileName = [filelist,options.USERDIR+"/"+filelist[0:filelist.find(".")]]
	#print "fileName is: %s" %fileName
	NumFiles = popen("cat "+filelist+" | wc | awk '{print $1}'").readlines()
	NumFiles[0] = NumFiles[0].strip("\n")
	myOptions.THREADS = NumFiles[0]
	if int(NumFiles[0])>25: myOptions.THREADS="25"
	if options.singlethread: myOptions.THREADS="1"
	drExit = data_replica.data_replica(fileName, myOptions)
	if (drExit!=0 and not(options.DRYRUN)):
		print "Some errors in copying"