ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/WorkSpace.py
Revision: 1.13
Committed: Wed Sep 20 17:29:52 2006 UTC (18 years, 7 months ago) by slacapra
Content type: text/x-python
Branch: MAIN
CVS Tags: CRAB_1_4_2, CRAB_1_5_0_pre1, CRAB_1_4_1, CRAB_1_4_1_pre2, CRAB_1_4_1_pre1, CRAB_1_4_0, CRAB_1_4_0_pre4, CRAB_1_4_0_pre3, CRAB_1_4_0_pre2, CRAB_1_4_0_pre1, CRAB_1_3_0, CRAB_1_3_0_pre6, CRAB_1_3_0_pre5, CRAB_1_3_0_pre4, CRAB_1_3_0_pre3
Branch point for: branch_1_4_1
Changes since 1.12: +1 -3 lines
Log Message:
BOSS4 + sub-file splitting + taskDB

File Contents

# Content
1 from crab_exceptions import *
2 #from threading import RLock
3 import common
4
5 import os, shutil, string, time
6
7 class WorkSpace:
8 def __init__(self, top_dir, cfg_params):
9 self._cwd_dir = os.getcwd()+'/'
10 self._top_dir = top_dir # top working directory
11 self._log_dir = self._top_dir + '/log' # log-directory
12 self._job_dir = self._top_dir + '/job' # job pars, scripts, jdl's
13 self._res_dir = self._top_dir + '/res' # dir to store job results
14 self._share_dir = self._top_dir + '/share' # directory for common stuff
15
16 try:
17 self.outDir = cfg_params["USER.outputdir"]
18 except:
19 self.outDir = self._res_dir
20 try:
21 self.log_outDir = cfg_params["USER.logdir"]
22 except:
23 self.log_outDir = self._res_dir
24 return
25
26 def create(self):
27 if not os.path.exists(self._top_dir):
28 os.mkdir(self._top_dir)
29 pass
30 if not os.listdir(self._top_dir):
31 os.mkdir(self._log_dir)
32 os.mkdir(self._job_dir)
33 os.mkdir(self._res_dir)
34 os.mkdir(self._share_dir)
35
36 common.taskDB.setDict("CODE",(str(time.time())))
37 pass
38
39 # fede
40 if not os.path.exists(self.outDir):
41 try:
42 os.mkdir(self.outDir)
43 except:
44 msg = 'Cannot mkdir ' + self.outDir + ' Check permission'
45 raise CrabException(msg)
46 if os.listdir(self.outDir):
47 msg = self.outDir + ' already exists and is not empty. Please remove it before create new task'
48 raise CrabException(msg)
49 if not os.path.exists(self.log_outDir):
50 try:
51 os.mkdir(self.log_outDir)
52 except:
53 msg = 'Cannot mkdir ' + self.log_outDir + ' Check permission'
54 raise CrabException(msg)
55 pass
56 if os.listdir(self.log_outDir):
57 msg = self.log_outDir + ' already exists and is not empty. Please remove it before create new task'
58 raise CrabException(msg)
59 return
60
61 def delete(self):
62 """
63 delete the whole workspace without doing any test!!!
64 """
65 if os.path.exists(self._top_dir):
66 shutil.rmtree(self._top_dir)
67 pass
68 return
69
70 def cwdDir(self):
71 return self._cwd_dir + '/'
72
73 def topDir(self):
74 return self._top_dir + '/'
75
76 def logDir(self):
77 return self._log_dir + '/'
78
79 def jobDir(self):
80 return self._job_dir + '/'
81
82 def resDir(self):
83 return self._res_dir + '/'
84
85 def shareDir(self):
86 return self._share_dir + '/'
87
88 def setResDir(self, dir):
89 self._res_dir = dir
90 return
91
92 def saveFileName(self):
93 return self.shareDir() + common.prog_name + '.sav'
94
95 def cfgFileName(self):
96 return self.shareDir() + common.prog_name + '.cfg'
97
98 def saveConfiguration(self, opts, cfg_fname):
99
100 # Save options
101
102 save_file = open(self.saveFileName(), 'w')
103
104 for k in opts.keys():
105 if opts[k] : save_file.write(k+'='+opts[k]+'\n')
106 else : save_file.write(k+'\n')
107 pass
108
109 save_file.close()
110
111 # Save cfg-file
112
113 shutil.copyfile(cfg_fname, self.cfgFileName())
114
115 return
116
117 def loadSavedOptions(self):
118
119 # Open save-file
120
121 try:
122 save_file = open(self.saveFileName(), 'r')
123 except IOError, e:
124 msg = 'Misconfigured continuation directory:\n'
125 msg += str(e)
126 raise CrabException(msg)
127
128 # Read saved options
129
130 save_opts = {}
131 for line in save_file:
132 line = line[:-1] # drop '\n'
133 try:
134 (k, v) = string.split(line, '=')
135 except:
136 k=line
137 v=''
138 pass
139 save_opts[k] = v
140 pass
141
142 save_file.close()
143 return save_opts
144