ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/JobDB.py
Revision: 1.2
Committed: Wed Jun 22 15:14:57 2005 UTC (19 years, 10 months ago) by nsmirnov
Content type: text/x-python
Branch: MAIN
Changes since 1.1: +8 -8 lines
Log Message:
The '-continue' option implemented

File Contents

# User Rev Content
1 nsmirnov 1.1 from WorkSpace import WorkSpace
2     from crab_exceptions import *
3     import common
4    
5 nsmirnov 1.2 import os, string
6 nsmirnov 1.1
7     class dbEntry:
8     def __init__(self):
9     self.status = 'X' # job status
10     self.jid = '' # scheduler job id
11     return
12    
13 nsmirnov 1.2 def __str__(self):
14     txt = 'Status <' + self.status + '>; '
15     txt += 'Job Id <' + self.jid + '>\n'
16 nsmirnov 1.1 return txt
17    
18     class JobDB:
19     def __init__(self):
20     self._dir = common.work_space.shareDir() + 'db/'
21     self._db_fname = 'jobs'
22     self._jobs = [] # list of dbEntry's
23     return
24    
25 nsmirnov 1.2 def __str__(self):
26 nsmirnov 1.1 njobs = self.nJobs()
27     if njobs == 1: plural = ''
28     else: plural = 's'
29     txt = 'Total of %d job%s:\n' % (njobs, plural)
30     for i in range(njobs):
31 nsmirnov 1.2 txt += ('Job %03d' % i) + ': '
32 nsmirnov 1.1 txt += str(self._jobs[i])
33     pass
34     return txt
35    
36     def nJobs(self):
37     return len(self._jobs)
38    
39     def create(self, njobs):
40    
41     if os.path.exists(self._dir):
42     msg = 'Cannot create Job DB: already exists.'
43     raise CrabException(msg)
44    
45     os.mkdir(self._dir)
46    
47     for i in range(njobs):
48     self._jobs.append(dbEntry())
49     pass
50    
51     self.save()
52     return
53    
54     def save(self):
55     db_file = open(self._dir+self._db_fname, 'w')
56     for i in range(len(self._jobs)):
57     db_file.write(`(i+1)`+';')
58     db_file.write(self._jobs[i].status+';')
59     db_file.write(self._jobs[i].jid+';')
60     db_file.write('\n')
61     pass
62     db_file.close()
63     return
64    
65     def load(self):
66     self._jobs = []
67     db_file = open(self._dir+self._db_fname, 'r')
68     for line in db_file:
69 nsmirnov 1.2 db_entry = dbEntry()
70     (n, db_entry.status, db_entry.jid, rest) = string.split(line, ';')
71 nsmirnov 1.1 self._jobs.append(db_entry)
72     pass
73     db_file.close()
74     return
75    
76     def setStatus(self, nj, status):
77     self._jobs[nj].status = status
78     return
79    
80     def status(self, nj):
81     return self._jobs[nj].status
82    
83     def setJobId(self, nj, jid):
84     self._jobs[nj].jid = jid
85     return
86    
87     def jobId(self, nj):
88     return self._jobs[nj].jid
89