Reviewed-by: Royce Lv<lvroyce(a)linux.vnet.ibm.com>
On 2014年08月21日 05:15, Aline Manera wrote:
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(a)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)