ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/CRAB/python/WorkSpace.py
Revision: 1.1
Committed: Thu Mar 10 16:20:30 2005 UTC (20 years, 1 month ago) by nsmirnov
Content type: text/x-python
Branch: MAIN
Log Message:
initial set of files

File Contents

# User Rev Content
1 nsmirnov 1.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     save_file.write(k+'='+opts[k]+'\n')
75     pass
76    
77     save_file.close()
78    
79     # Save cfg-file
80    
81     shutil.copyfile(cfg_fname, self.cfgFileName())
82    
83     return
84    
85     def loadSavedOptions(self):
86    
87     # Open save-file
88    
89     try:
90     save_file = open(self.saveFileName(), 'r')
91     except IOError, e:
92     msg = 'Misconfigured continuation directory:\n'
93     msg += str(e)
94     raise CrabException(msg)
95    
96     # Read saved options
97    
98     save_opts = {}
99     for line in save_file:
100     line = line[:-1] # drop '\n'
101     (k, v) = string.split(line, '=')
102     save_opts[k] = v
103     pass
104    
105     save_file.close()
106     return save_opts
107