1 |
|
#!/usr/bin/env python |
2 |
|
import exceptions |
3 |
< |
import DBS2API.dbsApi |
4 |
< |
from DBS2API.dbsApiException import * |
3 |
> |
import DBSAPI.dbsApi |
4 |
> |
from DBSAPI.dbsApiException import * |
5 |
|
import common |
6 |
+ |
from crab_util import * |
7 |
|
|
8 |
|
|
9 |
|
# ####################################### |
91 |
|
try: |
92 |
|
dbs_url=self.cfg_params['CMSSW.dbs_url'] |
93 |
|
except KeyError: |
94 |
< |
dbs_url="http://cmsdoc.cern.ch/cms/test/aprom/DBS/CGIServer/prodquery" |
94 |
> |
dbs_url="http://cmsdbsprod.cern.ch/cms_dbs_prod_global/servlet/DBSServlet" |
95 |
> |
|
96 |
> |
common.logger.debug(3,"Accessing DBS at: "+dbs_url) |
97 |
> |
|
98 |
> |
## check if runs are selected |
99 |
> |
try: |
100 |
> |
runselection = parseRange2(self.cfg_params['CMSSW.runselection']) |
101 |
> |
except: |
102 |
> |
runselection = [] |
103 |
|
|
104 |
|
## service API |
105 |
|
args = {} |
106 |
< |
args['url']=dbs_url |
107 |
< |
|
99 |
< |
common.logger.debug(3,"Accessing DBS at: "+dbs_url) |
106 |
> |
args['url'] = dbs_url |
107 |
> |
args['level'] = 'CRITICAL' |
108 |
|
|
109 |
< |
api = DBS2API.dbsApi.DbsApi(args) |
109 |
> |
api = DBSAPI.dbsApi.DbsApi(args) |
110 |
|
try: |
111 |
< |
files = api.listFiles(self.datasetPath) |
111 |
> |
if len(runselection) <= 0 : |
112 |
> |
files = api.listDatasetFiles(self.datasetPath) |
113 |
> |
else : |
114 |
> |
files = api.listFiles(path=self.datasetPath, details=True) |
115 |
|
except DbsBadRequest, msg: |
116 |
< |
raise DataDiscoveryError(msg) |
116 |
> |
raise DataDiscoveryError_DBS2(msg) |
117 |
|
except DBSError_DBS2, msg: |
118 |
< |
raise DataDiscoveryError(msg) |
119 |
< |
|
118 |
> |
raise DataDiscoveryError_DBS2(msg) |
119 |
> |
|
120 |
|
# parse files and fill arrays |
121 |
|
for file in files : |
122 |
|
filename = file['LogicalFileName'] |
123 |
< |
events = file['NumberOfEvents'] |
124 |
< |
fileblock = file['Block']['Name'] |
125 |
< |
|
126 |
< |
# number of events per block |
127 |
< |
if fileblock in self.eventsPerBlock.keys() : |
128 |
< |
self.eventsPerBlock[fileblock] += events |
129 |
< |
else : |
130 |
< |
self.eventsPerBlock[fileblock] = events |
131 |
< |
|
132 |
< |
# number of events per file |
133 |
< |
self.eventsPerFile[filename] = events |
123 |
> |
if filename.find('.dat') < 0 : |
124 |
> |
fileblock = file['Block']['Name'] |
125 |
> |
events = file['NumberOfEvents'] |
126 |
> |
continue_flag = 0 |
127 |
> |
if len(runselection) > 0 : |
128 |
> |
runslist = file['RunsList'] |
129 |
> |
for run in runslist : |
130 |
> |
runnumber = run['RunNumber'] |
131 |
> |
for selected_run in runselection : |
132 |
> |
if runnumber == selected_run : |
133 |
> |
continue_flag = 1 |
134 |
> |
else : |
135 |
> |
continue_flag = 1 |
136 |
> |
|
137 |
> |
if continue_flag == 1 : |
138 |
> |
# number of events per block |
139 |
> |
if fileblock in self.eventsPerBlock.keys() : |
140 |
> |
self.eventsPerBlock[fileblock] += events |
141 |
> |
else : |
142 |
> |
self.eventsPerBlock[fileblock] = events |
143 |
> |
|
144 |
> |
# number of events per file |
145 |
> |
self.eventsPerFile[filename] = events |
146 |
> |
|
147 |
> |
# number of events per block |
148 |
> |
if fileblock in self.blocksinfo.keys() : |
149 |
> |
self.blocksinfo[fileblock].append(filename) |
150 |
> |
else : |
151 |
> |
self.blocksinfo[fileblock] = [filename] |
152 |
|
|
153 |
< |
# number of events per block |
154 |
< |
if fileblock in self.blocksinfo.keys() : |
126 |
< |
self.blocksinfo[fileblock].append(filename) |
127 |
< |
else : |
128 |
< |
self.blocksinfo[fileblock] = [filename] |
153 |
> |
# total number of events |
154 |
> |
self.maxEvents += events |
155 |
|
|
156 |
< |
# total number of events |
157 |
< |
self.maxEvents += events |
156 |
> |
for block in self.eventsPerBlock.keys() : |
157 |
> |
common.logger.debug(6,"DBSInfo: total nevts %i in block %s "%(self.eventsPerBlock[block],block)) |
158 |
|
|
159 |
|
if len(self.eventsPerBlock) <= 0: |
160 |
< |
raise NotExistingDatasetError (("\nNo data for %s in DBS\nPlease check" |
160 |
> |
raise NotExistingDatasetError_DBS2 (("\nNo data for %s in DBS\nPlease check" |
161 |
|
+ " dataset path variables in crab.cfg") |
162 |
|
% self.datasetPath) |
163 |
|
|