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

Royce Lv lvroyce at linux.vnet.ibm.com
Wed Dec 18 10:31:08 UTC 2013


On 2013年12月18日 16:51, Mark Wu wrote:
> The configruation 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 | 23 ++++++++++++++++++++---
>   src/kimchid.in          | 20 +-------------------
>   2 files changed, 21 insertions(+), 22 deletions(-)
>
> diff --git a/src/kimchi/config.py.in b/src/kimchi/config.py.in
> index f3c408a..49d42db 100644
> --- a/src/kimchi/config.py.in
> +++ b/src/kimchi/config.py.in
> @@ -25,11 +25,9 @@
>   import libvirt
>   import os
>   import platform
> -
> -
> +from ConfigParser import SafeConfigParser
>   from glob import iglob
>
> -
>   from kimchi.xmlutils import xpath_get_text
>
>
> @@ -166,5 +164,24 @@ def get_plugin_tab_xml(name):
>       return os.path.join(_get_plugin_ui_dir(name), 'config/tab-ext.xml')
>
>
> +CONFIG_FILE = "%s/kimchi.conf" % get_config_dir()
> +DEFAULT_LOG_LEVEL = "debug"
> +
> +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)
> +
> +
I like explicit load rather than put these in top level and generate a 
global variable.
Think about two processes(let's say in websockify.py) both use this 
module, top level code executed for a second time, the later process may 
get a different config from the first.
But developer may fail to notice.
This will cause some trouble which is difficult to diagnose.
>   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)
> -
>       host = config.get("server", "host")
>       port = config.get("server", "port")
>       ssl_port = config.get("server", "ssl_port")

-- 
project-kimchi mailing list <project-kimchi at googlegroups.com>
https://groups.google.com/forum/#!forum/project-kimchi
--- 
You received this message because you are subscribed to the Google Groups "project-kimchi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to project-kimchi+unsubscribe at googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.



More information about the Kimchi-devel mailing list