add Submit button as a placeholder
[sface.git] / sface / sficonfig.py
1
2 import os
3
4 class SfiConfig:
5     defaults = { 'SFI_AUTH' : None,
6                  'SFI_USER' : None,
7                  'SFI_SLICE' : None,
8                  'SFI_REGISTRY' : "http://www.planet-lab.org:12345",
9                  'SFI_AM' : "http://www.planet-lab.org:12346",
10                  'SFI_SM' : "http://www.planet-lab.org:12347",
11                  'SFACE_VERBOSE' : False,
12                  'SFACE_DEBUG' : False,
13                  }
14
15     def __init__(self):
16         self.read_config()
17
18     def read_config(self):
19         filename = os.path.expanduser("~/.sfi/sfi_config")
20         execfile(filename, SfiConfig.__dict__)
21         for (k,v) in SfiConfig.defaults.items():
22             if not hasattr(SfiConfig,k): setattr(SfiConfig,k,v)
23         if SfiConfig.SFACE_VERBOSE:
24             print "After reading config from %s"%filename
25             for (k,v) in SfiConfig.defaults.items():
26                 print "%-20s: %r"%(k,getattr(SfiConfig,k))
27
28     def save_config(self):
29         config_keys = SfiConfig.defaults.keys()
30         configfile = os.path.expanduser("~/.sfi/sfi_config")
31         tmpfile = configfile + ".tmp"
32
33         out = open(tmpfile, "w")
34         for line in open(os.path.expanduser("~/.sfi/sfi_config")):
35             try:
36                 key, val = line.split('=')
37                 key = key.strip()
38                 val = val.strip()
39                 if key in config_keys:
40                     line = "%s = '%s'\n" % (key, getattr(self, key))
41             except:
42                 pass
43             out.write(line)
44         out.close()
45
46         os.unlink(configfile)
47         os.rename(tmpfile, configfile)
48                     
49
50     def getAuthority(self):
51         return SfiConfig.SFI_AUTH
52
53     def getUser(self):
54         return SfiConfig.SFI_USER
55
56     def setUser(self, user):
57         SfiConfig.SFI_USER = user
58
59         # Should probably get authority from user record instead...
60         a = user.split('.')
61         SfiConfig.SFI_AUTH = '.'.join(a[:len(a)-1])
62
63     def getSlice(self):
64         return SfiConfig.SFI_SLICE
65
66     def setSlice(self, slice):
67         SfiConfig.SFI_SLICE = slice
68
69     def registry(self):
70         return SfiConfig.SFI_REGISTRY
71
72     def slicemgr(self):
73         return SfiConfig.SFI_SM
74
75     def aggmgr(self):
76         return SfiConfig.SFI_AM
77
78 # configuration singleton
79 config = SfiConfig()