[Kimchi-devel] [PATCH 1/5] Update kimchi.config values according to command line input

Aline Manera alinefm at linux.vnet.ibm.com
Wed Aug 20 21:15:13 UTC 2014


Kimchi allows users to change some configuration values by command line.
Those values override the kimchi.conf values.
That way we need to properly update kimchi.config.config to provide the
accurate data for whole application.

Signed-off-by: Aline Manera <alinefm at linux.vnet.ibm.com>
---
 src/kimchid.in | 32 +++++++++++++++++++-------------
 1 file changed, 19 insertions(+), 13 deletions(-)

diff --git a/src/kimchid.in b/src/kimchid.in
index d3d398f..fc889a3 100644
--- a/src/kimchid.in
+++ b/src/kimchid.in
@@ -26,12 +26,11 @@ sys.path.insert(1, '@pythondir@')
 from optparse import OptionParser
 
 import kimchi.server
-import kimchi.config
+import kimchi.config as config
 
-from kimchi.config import config, paths
 
-if not paths.installed:
-    sys.path.append(paths.prefix)
+if not config.paths.installed:
+    sys.path.append(config.paths.prefix)
 
 ACCESS_LOG = "kimchi-access.log"
 ERROR_LOG = "kimchi-error.log"
@@ -42,13 +41,13 @@ def main(options):
     if not os.geteuid() == 0:
         sys.exit("\nMust be root to run this script. Exiting ...\n")
 
-    host = config.get("server", "host")
-    port = config.get("server", "port")
-    ssl_port = config.get("server", "ssl_port")
-    cherrypy_port = config.get("server", "cherrypy_port")
-    runningEnv = config.get('server', 'environment')
-    logDir = config.get("logging", "log_dir")
-    logLevel = config.get("logging", "log_level")
+    host = config.config.get("server", "host")
+    port = config.config.get("server", "port")
+    ssl_port = config.config.get("server", "ssl_port")
+    cherrypy_port = config.config.get("server", "cherrypy_port")
+    runningEnv = config.config.get("server", "environment")
+    logDir = config.config.get("logging", "log_dir")
+    logLevel = config.config.get("logging", "log_level")
 
     parser = OptionParser()
     parser.add_option('--host', type="string", default=host,
@@ -73,9 +72,16 @@ def main(options):
                       help="Run server in mock model")
     (options, args) = parser.parse_args()
 
+    # Update config.config with the command line values
+    # So the whole application will have access to accurate values
+    for sec in config.config.sections():
+        for item in config.config.options(sec):
+            if hasattr(options, item):
+                config.config.set(sec, item, str(getattr(options, item)))
+
     # Add non-option arguments
-    setattr(options, 'ssl_cert', config.get('server', 'ssl_cert'))
-    setattr(options, 'ssl_key', config.get('server', 'ssl_key'))
+    setattr(options, 'ssl_cert', config.config.get('server', 'ssl_cert'))
+    setattr(options, 'ssl_key', config.config.get('server', 'ssl_key'))
 
     kimchi.server.main(options)
 
-- 
1.9.3




More information about the Kimchi-devel mailing list