X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Futil%2Fconfig.py;h=e5435a7b5fe73d8496a2c2f6038538268a05e82a;hb=3227bb286e16c149e1cda6ea82ad531025e5bdd7;hp=3a3d36a8af54585508ec38373d4aa15221057fd9;hpb=177b96762d2b0d94af773c14e5a7cee161be3129;p=sfa.git diff --git a/sfa/util/config.py b/sfa/util/config.py index 3a3d36a8..e5435a7b 100644 --- a/sfa/util/config.py +++ b/sfa/util/config.py @@ -2,16 +2,22 @@ import sys import os import time -import ConfigParser import tempfile import codecs -from StringIO import StringIO from sfa.util.xml import XML +from sfa.util.py23 import StringIO +from sfa.util.py23 import ConfigParser default_config = \ """ """ +def isbool(v): + return v.lower() in ("true", "false") + +def str2bool(v): + return v.lower() in ("true", "1") + class Config: def __init__(self, config_file='/etc/sfa/sfa_config'): @@ -107,9 +113,62 @@ DO NOT EDIT. This file was automatically generated at for item in self.config.items(section): name = "%s_%s" % (section, item[0]) value = item[1] + if isbool(value): + value = str2bool(value) + elif value.isdigit(): + value = int(value) setattr(self, name, value) setattr(self, name.upper(), value) - + + def variables(self): + """ + Return all variables. + + Returns: + + variables = { 'category_id': (category, variablelist) } + + category = { 'id': "category_identifier", + 'name': "Category name", + 'description': "Category description" } + + variablelist = { 'variable_id': variable } + + variable = { 'id': "variable_identifier", + 'type': "variable_type", + 'value': "variable_value", + 'name': "Variable name", + 'description': "Variable description" } + """ + + variables = {} + for section in self.config.sections(): + category = { + 'id': section, + 'name': section, + 'description': section, + } + variable_list = {} + for item in self.config.items(section): + var_name = item[0] + name = "%s_%s" % (section, var_name) + value = item[1] + if isbool(value): + value_type = bool + elif value.isdigit(): + value_type = int + else: + value_type = str + variable = { + 'id': var_name, + 'type': value_type, + 'value': value, + 'name': name, + 'description': name, + } + variable_list[name] = variable + variables[section] = (category, variable_list) + return variables def verify(self, config1, config2, validate_method): return True @@ -135,7 +194,8 @@ DO NOT EDIT. This file was automatically generated at return False - def dump(self, sections = []): + def dump(self, sections=None): + if sections is None: sections=[] sys.stdout.write(output_python()) def output_python(self, encoding = "utf-8"): @@ -162,8 +222,10 @@ DO NOT EDIT. This file was automatically generated at # bash does not have the concept of NULL if value: option = "%s_%s" % (section.upper(), name.upper()) - if bool(value) and not value.isdigit(): - value = str(bool(value)) + if isbool(value): + value = str(str2bool(value)) + elif not value.isdigit(): + value = '"%s"' % value buf.write(option + "=" + value + os.linesep) return buf.getvalue()