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

# 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 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