X-Git-Url: http://git.onelab.eu/?p=sface.git;a=blobdiff_plain;f=sface%2Fsficonfig.py;fp=sface%2Fsficonfig.py;h=595e892cc11012f4f7ecd8ed745a42e771eea60d;hp=0000000000000000000000000000000000000000;hb=e095c7423002644d129cef273f3a63646903b788;hpb=e8b04dd7ddc2ffb22d72098400cdbf676453a094 diff --git a/sface/sficonfig.py b/sface/sficonfig.py new file mode 100644 index 0000000..595e892 --- /dev/null +++ b/sface/sficonfig.py @@ -0,0 +1,79 @@ + +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()