ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/DataDiscovery.py
Revision: 1.14
Committed: Wed Jan 17 18:17:58 2007 UTC (18 years, 3 months ago) by slacapra
Content type: text/x-python
Branch: MAIN
CVS Tags: CRAB_1_5_0_pre6, CRAB_1_5_0_pre5, CRAB_1_5_0_pre4
Changes since 1.13: +6 -7 lines
Log Message:
many minor fixes reported by pychecker, mostly unsude import and unused variables

File Contents

# User Rev Content
1 gutsche 1.6 #!/usr/bin/env python
2 afanfani 1.1 from DBSInfo import *
3    
4 afanfani 1.3
5 afanfani 1.1 # ####################################
6 afanfani 1.3 class DataDiscoveryError(exceptions.Exception):
7 slacapra 1.7 def __init__(self, errorMessage):
8 slacapra 1.14 exceptions.Exception.__init__(self, self.args)
9     self.args=errorMessage
10 slacapra 1.7 pass
11    
12     def getErrorMessage(self):
13     """ Return exception error """
14     return "%s" % (self.args)
15 afanfani 1.3
16 afanfani 1.1 # ####################################
17 afanfani 1.3 class NotExistingDatasetError(exceptions.Exception):
18 slacapra 1.7 def __init__(self, errorMessage):
19 slacapra 1.14 exceptions.Exception.__init__(self, self.args)
20     self.args=errorMessage
21 slacapra 1.7 pass
22    
23     def getErrorMessage(self):
24     """ Return exception error """
25     return "%s" % (self.args)
26 afanfani 1.1
27     # ####################################
28 afanfani 1.3 class NoDataTierinProvenanceError(exceptions.Exception):
29 slacapra 1.7 def __init__(self, errorMessage):
30 slacapra 1.14 exceptions.Exception.__init__(self, self.args)
31     self.args=errorMessage
32 slacapra 1.7 pass
33    
34     def getErrorMessage(self):
35     """ Return exception error """
36     return "%s" % (self.args)
37 afanfani 1.1
38     # ####################################
39     # class to find and extact info from published data
40     class DataDiscovery:
41 slacapra 1.11 def __init__(self, datasetPath, dataTiers, cfg_params):
42 afanfani 1.1
43     # Attributes
44 slacapra 1.11 self.datasetPath = datasetPath
45 afanfani 1.1 self.dataTiers = dataTiers
46     self.cfg_params = cfg_params
47    
48 slacapra 1.11 self.eventsPerBlock = {} # DBS output: map fileblocks-events for collection
49     self.eventsPerFile = {} # DBS output: map files-events
50     self.blocksinfo = {} # DBS output: map fileblocks-files
51 afanfani 1.1 #DBS output: max events computed by method getMaxEvents
52    
53     # ####################################
54     def fetchDBSInfo(self):
55     """
56     Contact DBS
57     """
58    
59 slacapra 1.11 ## get DBS URL
60     try:
61     dbs_url=self.cfg_params['CMSSW.dbs_url']
62     except KeyError:
63     dbs_url="http://cmsdoc.cern.ch/cms/test/aprom/DBS/CGIServer/prodquery"
64 afanfani 1.3
65 slacapra 1.11 ## get info about the requested dataset
66     try:
67     dbs_instance=self.cfg_params['CMSSW.dbs_instance']
68     except KeyError:
69 gutsche 1.12 dbs_instance="MCGlobal/Writer"
70 slacapra 1.11
71     dbs = DBSInfo(dbs_url, dbs_instance)
72 afanfani 1.5 try:
73 slacapra 1.11 self.datasets = dbs.getMatchingDatasets(self.datasetPath)
74     except dbsCgiApi.DbsCgiExecutionError, msg:
75     raise DataDiscoveryError(msg)
76 slacapra 1.13 except DBSError, msg:
77     raise DataDiscoveryError(msg)
78 slacapra 1.11
79 afanfani 1.4 if len(self.datasets) == 0:
80 slacapra 1.11 raise DataDiscoveryError("DatasetPath=%s unknown to DBS" %self.datasetPath)
81 afanfani 1.4 if len(self.datasets) > 1:
82 slacapra 1.11 raise DataDiscoveryError("DatasetPath=%s is ambiguous" %self.datasetPath)
83    
84 afanfani 1.1 try:
85 slacapra 1.7 self.dbsdataset = self.datasets[0].get('datasetPathName')
86 slacapra 1.11
87     self.eventsPerBlock = dbs.getEventsPerBlock(self.dbsdataset)
88     self.blocksinfo = dbs.getDatasetFileBlocks(self.dbsdataset)
89     self.eventsPerFile = dbs.getEventsPerFile(self.dbsdataset)
90 afanfani 1.3 except DBSError, ex:
91 slacapra 1.7 raise DataDiscoveryError(ex.getErrorMessage())
92 afanfani 1.3
93 slacapra 1.11 if len(self.eventsPerBlock) <= 0:
94     raise NotExistingDatasetError (("\nNo data for %s in DBS\nPlease check"
95     + " dataset path variables in crab.cfg")
96     % self.dbsdataset)
97 afanfani 1.1
98    
99     # #################################################
100     def getMaxEvents(self):
101     """
102 slacapra 1.11 max events
103 afanfani 1.1 """
104 slacapra 1.11 ## loop over the event collections
105 afanfani 1.1 nevts=0
106 slacapra 1.11 for evc_evts in self.eventsPerBlock.values():
107     nevts=nevts+evc_evts
108 afanfani 1.1
109     return nevts
110    
111     # #################################################
112 slacapra 1.11 def getEventsPerBlock(self):
113 afanfani 1.1 """
114 slacapra 1.11 list the event collections structure by fileblock
115 afanfani 1.1 """
116 slacapra 1.11 return self.eventsPerBlock
117 afanfani 1.1
118     # #################################################
119 slacapra 1.11 def getEventsPerFile(self):
120 afanfani 1.1 """
121 slacapra 1.11 list the event collections structure by file
122 afanfani 1.1 """
123 slacapra 1.11 return self.eventsPerFile
124 afanfani 1.1
125     # #################################################
126 slacapra 1.11 def getFiles(self):
127 afanfani 1.1 """
128 slacapra 1.11 return files grouped by fileblock
129 afanfani 1.1 """
130 slacapra 1.11 return self.blocksinfo
131 afanfani 1.1
132     ########################################################################