[Kimchi-devel] [PATCH v3 1/4] Move configuration parsing to config.py

Mark Wu wudxw at linux.vnet.ibm.com
Wed Jan 8 09:29:52 UTC 2014


On 01/08/2014 10:55 AM, Royce Lv wrote:
> On 2014年01月07日 16:56, Mark Wu wrote:
>> The configuration is also needed for other code except starting kimchi
>> server. So it should be moved to a separate module, config.py. Then the
>> configuration can be accessed directly by importing config module.
>>
>> Signed-off-by: Mark Wu <wudxw at linux.vnet.ibm.com>
>> ---
>>   src/kimchi/config.py.in | 24 ++++++++++++++++++++++++
>>   src/kimchid.in          | 20 +-------------------
>>   2 files changed, 25 insertions(+), 19 deletions(-)
>>
>> diff --git a/src/kimchi/config.py.in b/src/kimchi/config.py.in
>> index f3c408a..72308ff 100644
>> --- a/src/kimchi/config.py.in
>> +++ b/src/kimchi/config.py.in
>> @@ -27,6 +27,7 @@ import os
>>   import platform
>>
>>
>> +from ConfigParser import SafeConfigParser
>>   from glob import iglob
>>
>>
>> @@ -166,5 +167,28 @@ def get_plugin_tab_xml(name):
>>       return os.path.join(_get_plugin_ui_dir(name), 
>> 'config/tab-ext.xml')
>>
>>
>> +def _get_config():
>> +    config = SafeConfigParser()
>> +    config.add_section("server")
>> +    config.set("server", "host", "0.0.0.0")
>> +    config.set("server", "port", "8000")
>> +    config.set("server", "ssl_port", "8001")
>> +    config.set("server", "ssl_cert", "")
>> +    config.set("server", "ssl_key", "")
>> +    config.set("server", "environment", "development")
>> +    config.add_section("logging")
>> +    config.set("logging", "log_dir", get_default_log_dir())
>> +    config.set("logging", "log_level", DEFAULT_LOG_LEVEL)
>> +
>> +    if os.path.exists(CONFIG_FILE):
>> +        config.read(CONFIG_FILE)
>> +    return config
>> +
>> +
>> +CONFIG_FILE = "%s/kimchi.conf" % get_config_dir()
>> +DEFAULT_LOG_LEVEL = "debug"
>> +config = _get_config()
>> +
>> +
>>   if __name__ == '__main__':
>>       print get_prefix()
>> diff --git a/src/kimchid.in b/src/kimchid.in
>> index 7865713..548fa52 100644
>> --- a/src/kimchid.in
>> +++ b/src/kimchid.in
>> @@ -33,31 +33,13 @@ import kimchi.config
>>   if kimchi.config.without_installation():
>>       sys.path.append(kimchi.config.get_prefix())
>>
>> -from ConfigParser import SafeConfigParser
>> +from kimchi.config import config
>>   from optparse import OptionParser
>>
>>   ACCESS_LOG = "kimchi-access.log"
>>   ERROR_LOG = "kimchi-error.log"
>> -CONFIG_FILE = "%s/kimchi.conf" % kimchi.config.get_config_dir()
>> -DEFAULT_LOG_DIR = kimchi.config.get_default_log_dir()
>> -DEFAULT_LOG_LEVEL = "debug"
>>
>>   def main(options):
>> -    config = SafeConfigParser()
>> -    config.add_section("server")
>> -    config.set("server", "host", "0.0.0.0")
>> -    config.set("server", "port", "8000")
>> -    config.set("server", "ssl_port", "8001")
>> -    config.set("server", "ssl_cert", "")
>> -    config.set("server", "ssl_key", "")
>> -    config.set("server", "environment", "development")
>> -    config.add_section("logging")
>> -    config.set("logging", "log_dir", DEFAULT_LOG_DIR)
>> -    config.set("logging", "log_level", DEFAULT_LOG_LEVEL)
>> -
>> -    if os.path.exists(CONFIG_FILE):
>> -        config.read(CONFIG_FILE)
>> -
> Starting here:
>>       host = config.get("server", "host")
>>       port = config.get("server", "port")
>>       ssl_port = config.get("server", "ssl_port")
> This may be a further refactor , but seems we can use set_defaults of 
> optionparser to set config dict as default value of option parser, so 
> that the annoying dirty lines of reading every item of config can be 
> removed.
> REF: 
> http://docs.python.org/3.3/library/optparse.html#optparse.OptionParser.set_defaults
Your idea sounds good.  But it's not feasible.  We still need get the 
value from config and then construct the dict for set_defaults.





More information about the Kimchi-devel mailing list