6
|
1 import os
|
|
2 import time
|
|
3
|
|
4 class WriteScript(object):
|
|
5
|
|
6 def __init__(self, job = None, jobdb = None, cdir = "", tmpdir = "", chooseTemplateWithCopy = False, chooseTemplateLight = False):
|
|
7 self._iJob = job
|
|
8 self._iJobdb = jobdb
|
|
9 self._cDir = cdir
|
|
10 self._tmpDir = tmpdir
|
|
11 self._chooseTemplateWithCopy = chooseTemplateWithCopy
|
|
12 self._chooseTemplateLight = chooseTemplateLight
|
|
13
|
|
14 def run(self, cmdStart, cmdFinish, pyFileName, cmdSize = "", cmdCopy = ""):
|
|
15 if self._chooseTemplateLight:
|
|
16 d = self.createJobScriptLightDict(cmdStart, cmdFinish, cmdSize, cmdCopy)
|
|
17 else:
|
|
18 d = self.createJobScriptDict(cmdStart, cmdFinish, cmdSize, cmdCopy)
|
|
19 self.fillTemplate(pyFileName, d)
|
|
20
|
|
21 def fillTemplate(self, outputFileName, dict):
|
|
22 if self._chooseTemplateWithCopy:
|
|
23 inputFileName = "%s/commons/core/launcher/JobScriptWithFilesCopyTemplate.py" % os.environ["REPET_PATH"]
|
|
24 else:
|
|
25 inputFileName = "%s/commons/core/launcher/JobScriptTemplate.py" % os.environ["REPET_PATH"]
|
|
26
|
|
27 if self._chooseTemplateLight:
|
|
28 inputFileName = "%s/commons/core/launcher/JobScriptTemplateLight.py" % os.environ["REPET_PATH"]
|
|
29
|
|
30 input = open(inputFileName, "r")
|
|
31 data = input.read()
|
|
32 input.close()
|
|
33 for key, value in dict.items():
|
|
34 data = data.replace("@@%s@@" % key, value)
|
|
35 output = open(outputFileName, "w")
|
|
36 output.write(data)
|
|
37 output.close()
|
|
38
|
|
39 def createJobScriptDict(self, cmdStart, cmdFinish, cmdSize, cmdCopy):
|
|
40 dict = {
|
|
41 "tmpDir" : self._tmpDir,
|
|
42 "jobTableName" : self._iJobdb._table,
|
|
43 "groupId" : self._iJob.groupid,
|
|
44 "jobName" : self._iJob.jobname,
|
|
45 "launcher" : self._iJob.launcher,
|
|
46 "time" : time.strftime("%Y%m%d-%H%M%S"),
|
|
47 "repet_path" : os.environ["REPET_PATH"],
|
|
48 "repet_host" : os.environ["REPET_HOST"],
|
|
49 "repet_user" : os.environ["REPET_USER"],
|
|
50 "repet_pw" : os.environ["REPET_PW"],
|
|
51 "repet_db" : os.environ["REPET_DB"],
|
|
52 "repet_port" : os.environ["REPET_PORT"],
|
|
53 "cmdStart" : cmdStart,
|
|
54 "cmdFinish" : cmdFinish,
|
|
55 "cDir" : self._cDir,
|
|
56 "cmdSize" : cmdSize,
|
|
57 "cmdCopy" : cmdCopy
|
|
58 }
|
|
59 return dict
|
|
60
|
|
61 def createJobScriptLightDict(self, cmdStart, cmdFinish, cmdSize, cmdCopy):
|
|
62 dict = {
|
|
63 "tmpDir" : self._tmpDir,
|
|
64 "jobTableName" : self._iJobdb._table,
|
|
65 "groupId" : self._iJob.groupid,
|
|
66 "jobName" : self._iJob.jobname,
|
|
67 "launcher" : self._iJob.launcher,
|
|
68 "time" : time.strftime("%Y%m%d-%H%M%S"),
|
|
69 "repet_path" : os.environ["REPET_PATH"],
|
|
70 "cmdStart" : cmdStart,
|
|
71 "cmdFinish" : cmdFinish,
|
|
72 "cDir" : self._cDir,
|
|
73 "cmdSize" : cmdSize,
|
|
74 "cmdCopy" : cmdCopy
|
|
75 }
|
|
76 return dict
|