ATLAS Offline Software
Loading...
Searching...
No Matches
testIfMatch.py
Go to the documentation of this file.
1#!/usr/bin/env python
2
3# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
4
5import re,sys,os
6
7import subprocess
8
9
11 try:
12 from pyAMI.pyAMI import AMI
13 amires = AMI().execute(["ListConfigurationTag","-configTag=%s" % tag])
14 d = amires.getDict()['rowset_%s'%tag][tag]
15 outDict = eval(d.get('outputs','None'))
16 except Exception as e:
17 print ("Failed to get OutputDict from AMI")
18 print (e)
19 return None
20 return outDict
21
22
24 #cdirs=("/castor/cern.ch/grid/atlas/tzero/prod1/perm/data11_7TeV","/castor/cern.ch/grid/atlas/tzero/prod1/perm/data11_cos")
25 cdirs=("/castor/cern.ch/grid/atlas/tzero/prod1/perm/data11_hi","/castor/cern.ch/grid/atlas/tzero/prod1/perm/data11_7TeV")
26
27 tasknames=set()
28 for d in cdirs:
29 proj=d.split("/")[-1]
30 cmd="nsls "+d
31 (stat,out)=subprocess.getstatusoutput(cmd)
32 if stat!=0:
33 print ("ERROR, could not get list of streams from castor directory",d)
34 print (out)
35 return None
36 for stream in out.split(os.linesep):
37 tasknames.add(proj+".00000000."+stream+".merge.RAW")
38 return tasknames
39
40
41
42if __name__=='__main__':
43 if len(sys.argv)!=2:
44 print ("Syntax:")
45 print (sys.argv[0],"<ami-tag>")
46 sys.exit(-1)
47
48 tag=sys.argv[1]
49 print ("ifmatch matrix for AMI configuration tag",tag)
50
52 if outDict is None:
53 sys.exit(-1)
54
55 #print (outDict)
56
58 if taskNames is None:
59 sys.exit(-1)
60
61 #print (streamList)
62
63 matrix=dict()
64 for taskname in taskNames:
65 matrix[taskname]=dict()
66
67 for name,outDef in outDict.items():
68 if 'ifMatch' in outDef:
69 print ("\n"+name+" ["+ outDef['ifMatch'] +"]")
70 for taskname in taskNames:
71 if re.match(outDef['ifMatch'],taskname):
72 print ("\t",taskname," MATCH")
73 matrix[taskname][name]=True
74 else:
75 matrix[taskname][name]=False
76
77
78
79 print ("Inverse Matrix:")
80 for tn,ops in matrix.items():
81 print (tn[:-9]+": ", end='')
82 #print (" %30s :" % tn[:-9], end='')
83 for nm,s in ops.items():
84 if s:
85 print (nm[6:-4]+" ", end='')
86 #print ("%8s " % nm[6:-4], end='')
87 #else:
88 # print (" ", end='')
89 print ("")
90
STL class.