80 |
|
self.eventsPerFile = {} # DBS output: map files-events |
81 |
|
self.blocksinfo = {} # DBS output: map fileblocks-files |
82 |
|
self.maxEvents = 0 # DBS output: max events |
83 |
+ |
self.parent = {} # DBS output: max events |
84 |
|
|
85 |
|
# #################################### |
86 |
|
def fetchDBSInfo(self): |
100 |
|
if (self.cfg_params.has_key('CMSSW.runselection')): |
101 |
|
runselection = parseRange2(self.cfg_params['CMSSW.runselection']) |
102 |
|
|
103 |
+ |
common.logger.debug(6,"runselection is: %s"%runselection) |
104 |
|
## service API |
105 |
|
args = {} |
106 |
|
args['url'] = dbs_url |
107 |
|
args['level'] = 'CRITICAL' |
108 |
|
|
109 |
+ |
## check if has been requested to use the parent info |
110 |
+ |
if (self.cfg_params.has_key('CMSSW.runselection')): |
111 |
+ |
runselection = parseRange2(self.cfg_params['CMSSW.runselection']) |
112 |
+ |
|
113 |
+ |
useParent = self.cfg_params.get('CMSSW.use_parent',False) |
114 |
+ |
|
115 |
+ |
allowedRetriveValue = [ |
116 |
+ |
'retrive_child', |
117 |
+ |
'retrive_block', |
118 |
+ |
'retrive_lumi', |
119 |
+ |
'retrive_run' |
120 |
+ |
] |
121 |
+ |
if useParent: allowedRetriveValue.append('retrive_parent') |
122 |
+ |
common.logger.debug(5,"Set of input parameters used for DBS query : \n"+str(allowedRetriveValue)) |
123 |
+ |
common.logger.write("Set of input parameters used for DBS query : \n"+str(allowedRetriveValue)) |
124 |
|
api = DBSAPI.dbsApi.DbsApi(args) |
125 |
|
try: |
126 |
|
if len(runselection) <= 0 : |
127 |
< |
files = api.listDatasetFiles(self.datasetPath) |
127 |
> |
files = api.listFiles(path=self.datasetPath,retriveList=allowedRetriveValue) |
128 |
|
else : |
129 |
< |
files = api.listFiles(path=self.datasetPath, details=True) |
129 |
> |
files=[] |
130 |
> |
for arun in runselection: |
131 |
> |
try: |
132 |
> |
filesinrun = api.listFiles(path=self.datasetPath,retriveList=allowedRetriveValue,runNumber=arun) |
133 |
> |
files.extend(filesinrun) |
134 |
> |
except: |
135 |
> |
msg="WARNING: problem extracting info from DBS for run %s "%arun |
136 |
> |
common.logger.message(msg) |
137 |
> |
pass |
138 |
> |
|
139 |
|
except DbsBadRequest, msg: |
140 |
|
raise DataDiscoveryError(msg) |
141 |
|
except DBSError, msg: |
143 |
|
|
144 |
|
# parse files and fill arrays |
145 |
|
for file in files : |
146 |
+ |
parList = [] |
147 |
|
filename = file['LogicalFileName'] |
148 |
+ |
# asked retry the list of parent for the given child |
149 |
+ |
if useParent: parList = [x['LogicalFileName'] for x in file['ParentList']] |
150 |
+ |
self.parent[filename] = parList |
151 |
|
if filename.find('.dat') < 0 : |
152 |
|
fileblock = file['Block']['Name'] |
153 |
|
events = file['NumberOfEvents'] |
154 |
< |
continue_flag = 0 |
155 |
< |
if len(runselection) > 0 : |
156 |
< |
runslist = file['RunsList'] |
127 |
< |
for run in runslist : |
128 |
< |
runnumber = run['RunNumber'] |
129 |
< |
for selected_run in runselection : |
130 |
< |
if runnumber == selected_run : |
131 |
< |
continue_flag = 1 |
154 |
> |
# number of events per block |
155 |
> |
if fileblock in self.eventsPerBlock.keys() : |
156 |
> |
self.eventsPerBlock[fileblock] += events |
157 |
|
else : |
158 |
< |
continue_flag = 1 |
159 |
< |
|
160 |
< |
if continue_flag == 1 : |
161 |
< |
# number of events per block |
162 |
< |
if fileblock in self.eventsPerBlock.keys() : |
163 |
< |
self.eventsPerBlock[fileblock] += events |
164 |
< |
else : |
165 |
< |
self.eventsPerBlock[fileblock] = events |
166 |
< |
|
142 |
< |
# number of events per file |
143 |
< |
self.eventsPerFile[filename] = events |
144 |
< |
|
145 |
< |
# number of events per block |
146 |
< |
if fileblock in self.blocksinfo.keys() : |
147 |
< |
self.blocksinfo[fileblock].append(filename) |
148 |
< |
else : |
149 |
< |
self.blocksinfo[fileblock] = [filename] |
158 |
> |
self.eventsPerBlock[fileblock] = events |
159 |
> |
# number of events per file |
160 |
> |
self.eventsPerFile[filename] = events |
161 |
> |
|
162 |
> |
# number of events per block |
163 |
> |
if fileblock in self.blocksinfo.keys() : |
164 |
> |
self.blocksinfo[fileblock].append(filename) |
165 |
> |
else : |
166 |
> |
self.blocksinfo[fileblock] = [filename] |
167 |
|
|
168 |
< |
# total number of events |
169 |
< |
self.maxEvents += events |
168 |
> |
# total number of events |
169 |
> |
self.maxEvents += events |
170 |
|
|
171 |
|
for block in self.eventsPerBlock.keys() : |
172 |
|
common.logger.debug(6,"DBSInfo: total nevts %i in block %s "%(self.eventsPerBlock[block],block)) |
205 |
|
""" |
206 |
|
return self.blocksinfo |
207 |
|
|
208 |
+ |
# ################################################# |
209 |
+ |
def getParent(self): |
210 |
+ |
""" |
211 |
+ |
return parent grouped by file |
212 |
+ |
""" |
213 |
+ |
return self.parent |
214 |
+ |
|
215 |
|
######################################################################## |