comparison commons/core/launcher/JobScriptWithFilesCopyTemplate.py @ 6:769e306b7933

Change the repository level.
author yufei-luo
date Fri, 18 Jan 2013 04:54:14 -0500
parents
children 94ab73e8a190
comparison
equal deleted inserted replaced
5:ea3082881bf8 6:769e306b7933
1 #!/usr/bin/env python
2
3 import os
4 import sys
5 import time
6 import shutil
7 from commons.core.checker.RepetException import RepetException
8 from commons.core.sql.TableJobAdaptator import TableJobAdaptator
9 from commons.core.sql.DbFactory import DbFactory
10 from commons.core.sql.Job import Job
11
12 try:
13 newDir = None
14 print os.uname()
15 beginTime = time.time()
16 print 'beginTime=%f' % beginTime
17 print "work in dir '@@tmpDir@@'"
18 sys.stdout.flush()
19 if not os.path.exists("@@tmpDir@@"):
20 raise IOError("ERROR: temporary directory '@@tmpDir@@' doesn't exist")
21
22 fileSize = 0
23 if not os.path.exists("@@groupId@@"):
24 @@cmdSize@@
25 freeGigaNeededInTmpDir = float(1 + fileSize)
26 freeSpace = os.statvfs("@@tmpDir@@")
27 if ((freeSpace.f_bavail * freeSpace.f_frsize) / 1073741824.0 < freeGigaNeededInTmpDir):
28 raise RepetException("ERROR: less than %.2fG of input file in '@@tmpDir@@'" % freeGigaNeededInTmpDir)
29
30 os.chdir("@@tmpDir@@")
31 if not os.path.exists("@@groupId@@"):
32 try:
33 os.mkdir("@@groupId@@")
34 except OSError, e :
35 if e.args[0] != 17:
36 raise RepetException("ERROR: can't create '@@groupId@@'")
37 os.chdir("@@groupId@@")
38 @@cmdCopy@@
39 else:
40 os.chdir("@@groupId@@")
41
42 newDir = "@@groupId@@_@@jobName@@_@@time@@"
43 if os.path.exists(newDir):
44 shutil.rmtree(newDir)
45 os.mkdir(newDir)
46 os.chdir(newDir)
47
48 iJob = Job(jobname = "@@jobName@@", groupid = "@@groupId@@", launcherFile = "@@launcher@@", node = os.getenv("HOSTNAME"))
49 iDb = DbFactory.createInstance()
50 iTJA = TableJobAdaptator(iDb, "@@jobTableName@@")
51 print "current status: %s" % iTJA.getJobStatus(iJob)
52 iTJA.changeJobStatus(iJob, "running")
53 print "updated status: %s" % iTJA.getJobStatus(iJob)
54 sys.stdout.flush()
55 iDb.close()
56
57 @@cmdStart@@
58 if log != 0:
59 raise RepetException("ERROR: job returned %i" % log)
60 else:
61 print "job finished successfully"
62 sys.stdout.flush()
63 @@cmdFinish@@
64
65 os.chdir("..")
66 shutil.rmtree(newDir)
67
68 iDb = DbFactory.createInstance()
69 iTJA = TableJobAdaptator(iDb, "@@jobTableName@@")
70 print "current status: %s" % iTJA.getJobStatus(iJob)
71 iTJA.changeJobStatus(iJob, "finished")
72 print "updated status: %s" % iTJA.getJobStatus(iJob)
73 sys.stdout.flush()
74 iDb.close()
75
76 endTime = time.time()
77 print 'endTime=%f' % endTime
78 print 'executionTime=%f' % (endTime - beginTime)
79 print os.uname()
80 sys.stdout.flush()
81
82 except IOError, e :
83 print e
84 iJob = Job(jobname = "@@jobName@@", groupid = "@@groupId@@", launcherFile = "@@launcher@@", node = os.getenv("HOSTNAME"))
85 iDb = DbFactory.createInstance()
86 iTJA = TableJobAdaptator(iDb, "@@jobTableName@@")
87 print "current status: %s" % iTJA.getJobStatus(iJob)
88 iTJA.changeJobStatus(iJob, "error")
89 print "updated status: %s" % iTJA.getJobStatus(iJob)
90 sys.stdout.flush()
91 iDb.close()
92 sys.exit(1)
93
94 except Exception, e :
95 print "tmpDir is : @@tmpDir@@"
96 print "cDir is : @@cDir@@"
97 print e
98 if newDir != None and os.path.exists("../%s" % newDir) and not os.path.exists("@@cDir@@/%s" % newDir):
99 os.chdir("..")
100 shutil.move(newDir, "@@cDir@@/%s" % newDir)
101 iJob = Job(jobname = "@@jobName@@", groupid = "@@groupId@@", launcherFile = "@@launcher@@", node = os.getenv("HOSTNAME"))
102 iDb = DbFactory.createInstance()
103 iTJA = TableJobAdaptator(iDb, "@@jobTableName@@")
104 print "current status: %s" % iTJA.getJobStatus(iJob)
105 iTJA.changeJobStatus(iJob, "error")
106 print "updated status: %s" % iTJA.getJobStatus(iJob)
107 sys.stdout.flush()
108 iDb.close()
109 sys.exit(1)