manage signals between screens through sfascreen
[sface.git] / sface / config.py
index cb29cbb..d74d239 100644 (file)
@@ -23,7 +23,7 @@ class Config:
         ('registry',   'SFI_REGISTRY', d_registry,     '-r','--registry',      "registry's URL"),
         ('slicemgr',   'SFI_SM' ,      d_slicemgr,     '-m','--slicemgr',      "slice manager's URL"),
         ('aggmgr',     'SFI_AM',       d_aggmgr,       '-a','--aggregate',     "aggregate manager's URL"),
-        ('verbose',    'SFACE_VERBOSE',False,          '-v','--verbose',       "UI verbosity"),
+        ('verbose',    'SFACE_VERBOSE',True,          '-v','--verbose',       "UI verbosity"),
         ('debug',      'SFACE_DEBUG',  False,          '-d','--debug',         "UI debug flag"),
         ]
 
@@ -38,6 +38,11 @@ class Config:
             if tuple[1]==sfi: return tuple[0]
         return None
 
+    def sfi_name(self, field):
+        for tuple in Config.supported:
+            if tuple[0] == field: return tuple[1]
+        return None
+
     def field_default (self, field):
         for tuple in Config.supported:
             if tuple[0]==field: return tuple[2]
@@ -84,33 +89,45 @@ class Config:
         if self.debug:
             print msg
             for k in self.fields():
-                print "%-20s: %r"%(k,getattr(self,k))
+                print "%-20s: %r"%(k, self.get(k))
 
     def save_config(self):
         configfile = self.filename()
         tmpfile = configfile + ".tmp"
 
         out = open(tmpfile, "w")
-        lineno=0
-        fields=self.fields()
+        lineno = 0
+        written_fields = []
+        fields = self.fields()
         for line in open(configfile):
             lineno += 1
             try:
                 sfi, val = line.split('=')
                 sfi = sfi.strip()
                 val = val.strip()
-                field=self.sfi_field(sfi)
+                field = self.sfi_field(sfi)
                 if field:
-                    newval=getattr(self,field)
-                    if not self.is_bool_field(field): newval="'%s'"%newval
+                    written_fields.append(field)
+                    newval = self.get(field)
+                    if not self.is_bool_field(field):
+                        newval="'%s'"%newval
                     line = "%s = %s\n" % (sfi, newval)
             except:
                 if self.debug:
                     import traceback
                     print 'line',lineno,'ignored',line
             out.write(line)
-        out.close()
 
+        # append other field in the end
+        new_fields = [f for f in fields if f not in written_fields]
+        for field in new_fields:
+            sfi = self.sfi_name(field)
+            val = self.get(field)
+            if not self.is_bool_field(field):
+                val="'%s'" % val
+            out.write("%s = %s\n" % (sfi, val))
+
+        out.close()
         os.unlink(configfile)
         os.rename(tmpfile, configfile)