Flavour oriented configuration
[sfa.git] / config / sfa-config-tty
index d90a452..fe3aab3 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/env python
+#!/usr/bin/env python
 
 import os
 import sys
@@ -9,6 +9,8 @@ import types
 import readline
 from StringIO import StringIO
 from optparse import OptionParser
+
+from sfa.util.version import version_tag
 from sfa.util.config import Config
 
 def validator(validated_variables):
@@ -27,11 +29,14 @@ usual_variables = [
     "SFA_AGGREGATE_HOST",
     "SFA_SM_HOST",
     "SFA_DB_HOST",
-    "SFA_PLC_URL",
-    "SFA_PLC_USER",
-    "SFA_PLC_PASSWORD",
     ]
 
+flavour_xml_section_hash = { \
+    'pl':'sfa_plc',
+    'openstack':'sfa_nova',
+    'fd':'sfa_federica',
+    'nitos':'sfa_nitos'
+    }
 configuration={ \
     'name':'sfa',
     'service':"sfa",
@@ -44,10 +49,6 @@ configuration={ \
 
 # GLOBAL VARIABLES
 #
-release_id = "$Id$"
-release_rev = "$Revision$"
-release_url = "$URL$"
-
 g_configuration=None
 usual_variables=None
 config_dir=None
@@ -403,11 +404,23 @@ def mainloop (cdef, cread, cwrite, default_config, site_config, consolidated_con
                    (service,service))
         elif command in "uU":
             global usual_variables
+            global flavour_xml_section_hash
             try:
                 for varname in usual_variables:
                     (category,variable) = cdef.locate_varname(varname)
                     if not (category is None and variable is None):
                         prompt_variable(cdef, cread, cwrite, category, variable, False)
+                
+                # set the driver variable according to the already set flavour 
+                generic_flavour = cwrite.items('sfa')[0][1]
+                for section in cdef.sections():
+                     if generic_flavour in flavour_xml_section_hash and flavour_xml_section_hash[generic_flavour] == section:
+                         for item in cdef.items(section):
+                              category = section
+                              variable = item[0]
+                              prompt_variable(cdef, cread, cwrite, category, variable, False)
+                         break
+
             except Exception, inst:
                 if (str(inst) != 'BailOut'):
                     raise
@@ -463,7 +476,7 @@ def check_dir (config_file):
 
 ####################
 def optParserSetup(configuration):
-    parser = OptionParser(usage=usage(), version="%prog " + release_rev + release_url )
+    parser = OptionParser(usage=usage(), version="%prog " + version_tag )
     parser.set_defaults(config_dir=configuration['config_dir'],
                         service=configuration['service'],
                         usual_variables=configuration['usual_variables'])
@@ -516,15 +529,10 @@ def main(command,argv,configuration):
 
     # local settings only, will be modified & saved
     config_filename = "%s/sfa_config" % config.config_dir
-    try:
-        cwrite=Config(config_filename)
-    except ConfigParser.MissingSectionHeaderError:
-        # remove legacy config 
-        os.unlink(config_filename)
-        cwrite=Config(config_filename)
-
+    cwrite=Config(config_filename)
     try:
         cread.load(site_config)
+        cwrite.load(default_config)
         cwrite.load(site_config)
     except:
         cwrite = Config()