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

# User Rev Content
1 nsmirnov 1.1 from crab_exceptions import *
2 slacapra 1.7 #from threading import RLock
3 nsmirnov 1.1 import common
4    
5 spiga 1.5 import os, shutil, string, time
6 nsmirnov 1.1
7     class WorkSpace:
8 fanzago 1.10 def __init__(self, top_dir, cfg_params):
9 spiga 1.6 self._cwd_dir = os.getcwd()+'/'
10 nsmirnov 1.1 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 fanzago 1.10 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 nsmirnov 1.1 return
25    
26     def create(self):
27     if not os.path.exists(self._top_dir):
28     os.mkdir(self._top_dir)
29 fanzago 1.9 pass
30     if not os.listdir(self._top_dir):
31 nsmirnov 1.1 os.mkdir(self._log_dir)
32     os.mkdir(self._job_dir)
33     os.mkdir(self._res_dir)
34     os.mkdir(self._share_dir)
35 spiga 1.5
36 slacapra 1.13 common.taskDB.setDict("CODE",(str(time.time())))
37 nsmirnov 1.1 pass
38 fanzago 1.10
39     # fede
40     if not os.path.exists(self.outDir):
41 fanzago 1.11 try:
42     os.mkdir(self.outDir)
43     except:
44     msg = 'Cannot mkdir ' + self.outDir + ' Check permission'
45     raise CrabException(msg)
46 fanzago 1.10 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 fanzago 1.11 try:
51     os.mkdir(self.log_outDir)
52     except:
53     msg = 'Cannot mkdir ' + self.log_outDir + ' Check permission'
54     raise CrabException(msg)
55 fanzago 1.10 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 nsmirnov 1.1 return
60    
61 slacapra 1.4 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 spiga 1.6 def cwdDir(self):
71     return self._cwd_dir + '/'
72    
73 nsmirnov 1.1 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 nsmirnov 1.2 if opts[k] : save_file.write(k+'='+opts[k]+'\n')
106     else : save_file.write(k+'\n')
107 nsmirnov 1.1 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 slacapra 1.3 try:
134     (k, v) = string.split(line, '=')
135     except:
136     k=line
137     v=''
138     pass
139 nsmirnov 1.1 save_opts[k] = v
140     pass
141    
142     save_file.close()
143     return save_opts
144