ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/WorkSpace.py
Revision: 1.2
Committed: Thu Jun 23 16:53:25 2005 UTC (19 years, 10 months ago) by nsmirnov
Content type: text/x-python
Branch: MAIN
Changes since 1.1: +2 -1 lines
Log Message:
Commands '-list', '-status', '-kill', '-retrieve' implemented

File Contents

# Content
1 from crab_exceptions import *
2 from threading import RLock
3 import common
4
5 import os, shutil, string
6
7 class WorkSpace:
8
9 #_instance = None
10
11 #def getInstance():
12 # if not WorkSpace._instance :
13 # raise CrabException('There is no instance of WorkSpace.')
14 # return WorkSpace._instance
15
16 #getInstance = staticmethod(getInstance)
17
18 def __init__(self, top_dir):
19 #if WorkSpace._instance:
20 # raise CrabException('WorkSpace already exists.')
21
22 self.lock = RLock()
23 self._top_dir = top_dir # top working directory
24 self._log_dir = self._top_dir + '/log' # log-directory
25 self._job_dir = self._top_dir + '/job' # job pars, scripts, jdl's
26 self._res_dir = self._top_dir + '/res' # dir to store job results
27 self._share_dir = self._top_dir + '/share' # directory for common stuff
28
29 #WorkSpace._instance = self
30 return
31
32 def create(self):
33 if not os.path.exists(self._top_dir):
34 os.mkdir(self._top_dir)
35 os.mkdir(self._log_dir)
36 os.mkdir(self._job_dir)
37 os.mkdir(self._res_dir)
38 os.mkdir(self._share_dir)
39 pass
40 return
41
42 def topDir(self):
43 return self._top_dir + '/'
44
45 def logDir(self):
46 return self._log_dir + '/'
47
48 def jobDir(self):
49 return self._job_dir + '/'
50
51 def resDir(self):
52 return self._res_dir + '/'
53
54 def shareDir(self):
55 return self._share_dir + '/'
56
57 def setResDir(self, dir):
58 self._res_dir = dir
59 return
60
61 def saveFileName(self):
62 return self.shareDir() + common.prog_name + '.sav'
63
64 def cfgFileName(self):
65 return self.shareDir() + common.prog_name + '.cfg'
66
67 def saveConfiguration(self, opts, cfg_fname):
68
69 # Save options
70
71 save_file = open(self.saveFileName(), 'w')
72
73 for k in opts.keys():
74 if opts[k] : save_file.write(k+'='+opts[k]+'\n')
75 else : save_file.write(k+'\n')
76 pass
77
78 save_file.close()
79
80 # Save cfg-file
81
82 shutil.copyfile(cfg_fname, self.cfgFileName())
83
84 return
85
86 def loadSavedOptions(self):
87
88 # Open save-file
89
90 try:
91 save_file = open(self.saveFileName(), 'r')
92 except IOError, e:
93 msg = 'Misconfigured continuation directory:\n'
94 msg += str(e)
95 raise CrabException(msg)
96
97 # Read saved options
98
99 save_opts = {}
100 for line in save_file:
101 line = line[:-1] # drop '\n'
102 (k, v) = string.split(line, '=')
103 save_opts[k] = v
104 pass
105
106 save_file.close()
107 return save_opts
108