--- /dev/null
+
+import os
+
+class SfiConfig:
+ defaults = { 'SFI_AUTH' : None,
+ 'SFI_USER' : None,
+ 'SFI_SLICE' : None,
+ 'SFI_REGISTRY' : "http://www.planet-lab.org:12345",
+ 'SFI_AM' : "http://www.planet-lab.org:12346",
+ 'SFI_SM' : "http://www.planet-lab.org:12347",
+ 'SFACE_VERBOSE' : False,
+ 'SFACE_DEBUG' : False,
+ }
+
+ def __init__(self):
+ self.read_config()
+
+ def read_config(self):
+ filename = os.path.expanduser("~/.sfi/sfi_config")
+ execfile(filename, SfiConfig.__dict__)
+ for (k,v) in SfiConfig.defaults.items():
+ if not hasattr(SfiConfig,k): setattr(SfiConfig,k,v)
+ if SfiConfig.SFACE_VERBOSE:
+ print "After reading config from %s"%filename
+ for (k,v) in SfiConfig.defaults.items():
+ print "%-20s: %r"%(k,getattr(SfiConfig,k))
+
+ def save_config(self):
+ config_keys = SfiConfig.defaults.keys()
+ configfile = os.path.expanduser("~/.sfi/sfi_config")
+ tmpfile = configfile + ".tmp"
+
+ out = open(tmpfile, "w")
+ for line in open(os.path.expanduser("~/.sfi/sfi_config")):
+ try:
+ key, val = line.split('=')
+ key = key.strip()
+ val = val.strip()
+ if key in config_keys:
+ line = "%s = '%s'\n" % (key, getattr(self, key))
+ except:
+ pass
+ out.write(line)
+ out.close()
+
+ os.unlink(configfile)
+ os.rename(tmpfile, configfile)
+
+
+ def getAuthority(self):
+ return SfiConfig.SFI_AUTH
+
+ def getUser(self):
+ return SfiConfig.SFI_USER
+
+ def setUser(self, user):
+ SfiConfig.SFI_USER = user
+
+ # Should probably get authority from user record instead...
+ a = user.split('.')
+ SfiConfig.SFI_AUTH = '.'.join(a[:len(a)-1])
+
+ def getSlice(self):
+ return SfiConfig.SFI_SLICE
+
+ def setSlice(self, slice):
+ SfiConfig.SFI_SLICE = slice
+
+ def registry(self):
+ return SfiConfig.SFI_REGISTRY
+
+ def slicemgr(self):
+ return SfiConfig.SFI_SM
+
+ def aggmgr(self):
+ return SfiConfig.SFI_AM
+
+# configuration singleton
+config = SfiConfig()