ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/PsetManipulator.py
(Generate patch)

Comparing COMP/CRAB/python/PsetManipulator.py (file contents):
Revision 1.16 by ewv, Wed Apr 30 17:03:57 2008 UTC vs.
Revision 1.26 by ewv, Tue Feb 24 16:19:25 2009 UTC

# Line 26 | Line 26 | class PsetManipulator:
26          #convert Pset
27          from FWCore.ParameterSet.Config import include
28          common.logger.debug(3,"PsetManipulator::__init__: PSet file = "+self.pset)
29 +        # FUTURE: Can drop cfg mode for CMSSW < 2_1_x
30          if self.pset.endswith('py'):
31              handle = open(self.pset, 'r')
32              try:   # Nested form for Python < 2.5
33                  try:
34                      self.cfo = imp.load_source("pycfg", self.pset, handle)
35 +                    self.cmsProcess = self.cfo.process
36                  except Exception, ex:
37                      msg = "Your config file is not valid python: %s" % str(ex)
38                      raise CrabException(msg)
39              finally:
40                  handle.close()
39            self.cfg = CfgInterface(self.cfo.process)
41          else:
42              try:
43                  self.cfo = include(self.pset)
44 <                self.cfg = CfgInterface(self.cfo)
44 >                self.cmsProcess = self.cfo
45              except Exception, ex:
46                  msg =  "Your cfg file is not valid, %s\n" % str(ex)
47 <                msg += "  https://twiki.cern.ch/twiki/bin/view/CMS/CrabFaq#Problem_with_ParameterSet_parsin\n"
47 >                msg += "  https://twiki.cern.ch/twiki/bin/view/CMS/SWGuideCrabFaq#Problem_with_ParameterSet_parsin\n"
48                  msg += "  may help you understand the problem."
49                  raise CrabException(msg)
50 +        self.cfg = CfgInterface(self.cmsProcess)
51  
52      def maxEvent(self, maxEv):
53          """
# Line 54 | Line 56 | class PsetManipulator:
56          self.cfg.maxEvents.setMaxEventsInput(maxEv)
57          return
58  
59 +    def skipEvent(self, skipEv):
60 +        """
61 +        Set max event in the standalone untracked module
62 +        """
63 +        self.cfg.inputSource.setSkipEvents(skipEv)
64 +        return
65 +
66      def psetWriter(self, name):
67          """
68          Write out modified CMSSW.cfg
# Line 62 | Line 71 | class PsetManipulator:
71          # FUTURE: Can drop cfg mode for CMSSW < 2_1_x
72          outFile = open(common.work_space.jobDir()+name,"w")
73          if name.endswith('py'):
74 <          outFile.write("import FWCore.ParameterSet.Config as cms\n")
75 <          outFile.write(self.cfo.dumpPython())
74 >            outFile.write("import FWCore.ParameterSet.Config as cms\n")
75 >            try:
76 >                outFile.write(self.cmsProcess.dumpPython())
77 >            except Exception, ex:
78 >                msg =  "Your cfg file is not valid, %s\n" % str(ex)
79 >                msg += "  https://twiki.cern.ch/twiki/bin/view/CMS/SWGuideCrabFaq#Problem_with_ParameterSet_parsin\n"
80 >                msg += "  may help you understand the problem."
81 >                raise CrabException(msg)
82 >
83          else:
84 <          outFile.write(str(self.cfg))
84 >            outFile.write(self.cfg.data.dumpConfig())
85          outFile.close()
86  
87          return
88  
89 <    def addCrabFJR(self,name):
90 <        """
91 <        _addCrabFJR_
92 <        add CRAB specific FrameworkJobReport (FJR)
93 <        if a FJR already exists in input CMSSW parameter-set, add a second one.
94 <        This code is not needed for CMSSW >= 1.5.x and is non-functional in CMSSW >= 1.7.x.
95 <        It should be removed at some point in the future.
96 <        """
97 <
98 <        # Check if MessageLogger service already exists in configuration. If not, add it
99 <        svcs = self.cfg.data.services
100 <        if not svcs.has_key('MessageLogger'):
101 <            self.cfg.data.add_(CfgModules.Service("MessageLogger"))
89 >    def getTFileService(self):
90 >        """ Get Output filename from TFileService and return it. If not existing, return None """
91 >        if not self.cfg.data.services.has_key('TFileService'):
92 >            return None
93 >        tFileService = self.cfg.data.services['TFileService']
94 >        if "fileName" in tFileService.parameterNames_():
95 >            fileName = getattr(tFileService,'fileName',None).value()
96 >            return fileName
97 >        return None
98 >
99 >    def getPoolOutputModule(self):
100 >        """ Get Output filename from PoolOutputModule and return it. If not existing, return None """
101 >        if not self.cfg.data.outputModules:
102 >            return None
103 >        poolOutputModule = self.cfg.data.outputModules
104 >        for out in poolOutputModule:
105 >            return poolOutputModule[out].fileName.value()
106  
87        messageLogger = self.cfg.data.services['MessageLogger']
88
89        # Add fwkJobReports to Message logger if it doesn't exist
90        if "fwkJobReports" not in messageLogger.parameterNames_():
91            messageLogger.fwkJobReports = CfgTypes.untracked(CfgTypes.vstring())
92
93        # should figure out how to remove "name" if it is there.
94
95        if name not in messageLogger.fwkJobReports:
96            messageLogger.fwkJobReports.append(name)
97
98        return

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines