-
Wainer Vandelli authoredWainer Vandelli authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
MergedMigratedOld.py 2.61 KiB
#!/bin/env python
__version__='$Revision:$'
# $Source$
from SFOFileNameParser import SFOFileNameParser
import os.path
import sys
from subprocess import *
BASEDIR = '/castor/cern.ch/grid/atlas/tzero/prod1/perm/'
def nsls(target, castorenv, opts=[]):
command = ['nsls']
command.extend(opts)
command.append(target)
kwds = {}
if castorenv:
kwds['env'] = castorenv
nsls = Popen(command, stdout = PIPE,
stderr = STDOUT, **kwds)
nslsOut, _ = nsls.communicate()
ret = nsls.wait()
return ((ret == 0), nslsOut)
def MergedMigrated(castorfile, castorenv, verbose = False):
"""
Input file: /some_path/data09_cos.00122050.physics_IDCosmic.daq.RAW._lb0123._SFO-1._0001.data
Check fo migration of:
/<basedir>/<projecttag>/<streamtype_streamname>/<runnr-7digit>/<dataset>/<dataset>._lb<lbnr-4digit>._0001.<y>
basedir = /castor/cern.ch/grid/atlas/tzero/prod1/perm/
projecttag = data09_cos
dataset = data09_cos.00122050.physics_IDCosmic.merge.RAW
"""
parsed = SFOFileNameParser(os.path.basename(castorfile))
dataset = '%s.%s.%s_%s.merge.RAW' \
% (parsed.ProjectTag(), parsed.RunNr(), \
parsed.StreamType(), parsed.StreamName())
### List the content of the path
path = os.path.join(BASEDIR, parsed.ProjectTag(), \
'%s_%s' % (parsed.StreamType(), parsed.StreamName()), \
'%07d' % int(parsed.RunNr()), \
'%s' % dataset)
if verbose:
print path
### Look for files into the dataset dir
success, all_files = nsls(path, castorenv)
## If fails, return false
if not success: return False
files = []
target_lb = int(parsed.LBNr())
for f in all_files.split('\n'):
if not f: continue
lbstring = f.split('.',6)[5].partition('_lb')[2]
if '-' in lbstring:
#Multi LB file
minlb,maxlb = [int(lb) for lb in lbstring.split('-')]
if minlb <= target_lb and \
maxlb >= target_lb: files.append(f)
else:
#Single LB file
if target_lb == int(lbstring): files.append(f)
if not files: return False
file = sorted([(int(f.rsplit('.',1)[1]),f) for f in files])[-1][1]
#Check the migration status for the file
success, out = nsls(os.path.join(path, file), \
castorenv, opts = ['-l'])
if success and 'm' in out.split(' ')[0]: return True
else: return False
if __name__ == '__main__':
print MergedMigrated(sys.argv[1], '', verbose=True)