ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/PRODREQUEST/Applications/ProdRequestUtils.py
Revision: 1.4
Committed: Fri May 25 07:07:27 2007 UTC (17 years, 11 months ago) by eulisse
Content type: text/x-python
Branch: MAIN
CVS Tags: V00-08-00, V00-07-09, V00-07-08, V00-07-07, V00-07-06, V00-07-05, V00-07-04, V00-07-03, V00-07-02, V00-07-01, V00-07-00, gePreProdManagerSupport, V00-06-07, V00-06-06, V00-06-05, V00-06-04, HEAD
Changes since 1.3: +0 -18 lines
Log Message:
* New way of creating workflows. Now prodcommon is actually decoupled from
  prodrequest and the workflow creation happens in a separate script.
  Different scripts are now registered using the plugin mechanism.
* WorkflowEntry now has a column for cmssw_version and prodcommon_version.

File Contents

# Content
1 import os
2 import sys
3 import getopt
4 import popen2
5 import time
6
7
8 # Fixme: do the same for createProdWorkflow
9 def createPreProdWorkflow (PyCfg = None,
10 PSetHash = None,
11 prodName = None,
12 cmsswVersion = None,
13 category = "PreProd",
14 timestamp = int(time.time()),
15 FakeHash = False,
16 pileupDS = None,
17 pileupFilesPerJob = 1,
18 dbsAddress = None,
19 dbsUrl = None,
20 dlsAddress = None,
21 dlsType = None,
22 pileupSkipLocation = False):
23 spec = WorkflowSpec()
24 spec.setWorkflowName(prodName)
25 spec.setRequestCategory(category)
26 spec.setRequestTimestamp(timestamp)
27
28 # //
29 # // This value was created by running the EdmConfigHash tool
30 # // on the original cfg file.
31
32
33 cmsRun = spec.payload
34 cmsRun.name = "cmsRun1" # every node in the workflow needs a unique name
35 cmsRun.type = "CMSSW" # Nodes that are CMSSW based should set the name
36 cmsRun.application["Project"] = "CMSSW" # project
37 cmsRun.application["Version"] = cmsswVersion # version
38 cmsRun.application["Architecture"] = "slc3_ia32_gcc323" # arch (not needed)
39 cmsRun.application["Executable"] = "cmsRun" # binary name
40 cmsRun.configuration = PyCfg # Python PSet file
41
42
43 # //
44 # // Pileup sample?
45 # //
46 if pileupDS != None:
47 puPrimary = pileupDS.split("/")[1]
48 puTier = pileupDS.split("/")[2]
49 puProc = pileupDS.split("/")[3]
50 puDataset = cmsRun.addPileupDataset(puPrimary, puTier, puProc)
51 puDataset['FilesPerJob'] = pileupFilesPerJob
52 if customDBSDLS:
53 puDataset['DBSAddress'] = dbsAddress
54 puDataset['DBSURL'] = dbsUrl
55 puDataset['DLSType'] = dlsType
56 puDataset['DLSAddress'] = dlsAddress
57 if pileupSkipLocation:
58 puDataset['SkipLocation'] = pileupSkipLocation
59
60 # //
61 # // Pull all the output modules from the configuration file,
62 #// treat the output module name as DataTier and AppFamily,
63 # //since there isnt a standard way to derive these things yet.
64 # //
65 #// For each module a dataset declaration is created in the spec
66 cfgInt = CfgInterface(cmsRun.configuration, True)
67 datasetList = []
68 for outModName, val in cfgInt.outputModules.items():
69 # //
70 # // Check for Multi Tiers.
71 #// If Output module contains - characters, we split based on it
72 # //And create a different tier for each basic tier
73 # //
74 #//
75
76 tierList = splitMultiTier(outModName)
77 for dataTier in tierList:
78 processedDS = "%s-%s-%s-unmerged" % (
79 cmsRun.application['Version'], outModName, timestamp)
80 outDS = cmsRun.addOutputDataset(prodName,
81 processedDS,
82 outModName)
83
84 outDS['DataTier'] = dataTier
85 outDS["ApplicationName"] = cmsRun.application["Executable"]
86 outDS["ApplicationProject"] = cmsRun.application["Project"]
87 outDS["ApplicationVersion"] = cmsRun.application["Version"]
88 outDS["ApplicationFamily"] = outModName
89 if FakeHash:
90 guid = MCPayloadsUUID.uuidgen()
91 if guid == None:
92 guid = MCPayloadsUUID.uuid()
93 hashValue = "hash=%s;guid=%s" % (PSetHash, guid)
94 outDS['PSetHash'] = hashValue
95 else:
96 outDS['PSetHash'] = PSetHash
97 datasetList.append(outDS.name())
98
99 stageOut = cmsRun.newNode("stageOut1")
100 stageOut.type = "StageOut"
101 stageOut.application["Project"] = ""
102 stageOut.application["Version"] = ""
103 stageOut.application["Architecture"] = ""
104 stageOut.application["Executable"] = "RuntimeStageOut.py" # binary name
105 stageOut.configuration = ""
106
107 mergedLFNBase(spec)
108 unmergedLFNBase(spec)
109
110 return spec