diff --git a/Script/eosstorage.py b/Script/eosstorage.py new file mode 100644 index 0000000000000000000000000000000000000000..17e27d4456587734ebbe378a859ab16dde6aeb1c --- /dev/null +++ b/Script/eosstorage.py @@ -0,0 +1,78 @@ + +__version__='$Revision$' + +from subprocess import * +import castorstorage +import sys + +def sizechecksum(filename, stager, pool, logger=None): + + if logger: + logInfo = {'file':logger.findCaller()[0], + 'line':logger.findCaller()[1]} + logger.debug('Fetching checksum from eos for: ' + + filename, extra = logInfo) + + + cmd=['xrdcp', 'root://%s//proc/user/' % stager, + '-', + '-OSmgm.cmd=fileinfo&mgm.path=%s&mgm.file.info.option=--checksum-m' % filename, + '-np'] + + xrd = Popen(cmd, stdout = PIPE, stderr = STDOUT) + ret = xrd.wait() + out = xrd.stdout.read() + + if not ret: + splitted = out.split(' ') + + size = int(splitted[1].split('=')[1]) + checksum = splitted[10].split('=')[1][:8] + else: + checksum=size=None + if logger: + logger.warning('Adler32 checksum or size not found for ' + + filename + ': ' + + out, extra=logInfo) + + return size,checksum + + +def mkdir(directory, stager, pool, logger=None): + return 0 + + +def migrated(filename, stager, pool, logger=None): + if logger: + logInfo = {'file':logger.findCaller()[0],'line':logger.findCaller()[1]} + logger.fatal('Migration not support on eos', extra = logInfo) + + sys.exit(1) + + +def remove(dstfile, stager, pool, logger=None): + + xrd = Popen(['xrd',stager,'rm',dstfile], stdout = PIPE, + stderr = STDOUT)#, env=castorstorage._castorenv(stager,pool)) + ret = xrd.wait() + + if logger: + logInfo = {'file':logger.findCaller()[0],'line':logger.findCaller()[1]} + logger.debug(xrd.stdout.read(),extra = logInfo) + + return ret + + +def backgroundcopy(srcfile, dstfile, stager, pool, logger=None): + + dstfile = 'root://%s/%s' % (stager, dstfile) + cmd = ['xrdcp', '-f', srcfile, dstfile,'-ODsvcClass=%s' % pool] + xrdcp = Popen(cmd, stdout = PIPE, stderr = STDOUT) + + return xrdcp, xrdcp.pid + + +copystate = castorstorage.copystate +copystdout = castorstorage.copystdout + +