Author: tmckay
Date: 2011-01-17 16:30:18 +0000 (Mon, 17 Jan 2011)
New Revision: 4470
Modified:
branches/multiples/cumin/bin/cumin-admin
branches/multiples/cumin/bin/cumin-bench
branches/multiples/cumin/bin/cumin-data
branches/multiples/cumin/bin/cumin-smoke-test
branches/multiples/cumin/bin/cumin-web
branches/multiples/cumin/python/cumin/config.py
Log:
Add error checking to new config routines, fix up additional binaries
Modified: branches/multiples/cumin/bin/cumin-admin
===================================================================
--- branches/multiples/cumin/bin/cumin-admin 2011-01-17 14:55:41 UTC (rev 4469)
+++ branches/multiples/cumin/bin/cumin-admin 2011-01-17 16:30:18 UTC (rev 4470)
@@ -24,14 +24,10 @@
if uid == 0:
os.setuid(file_uid)
- config = CuminConfig()
- values = config.parse()
-
- parser = CuminOptionParser(values.data)
+ parser = CuminDataOptionParser()
parser.set_usage(generate_usage())
+ config, values, opts, args = get_configuration(parser, CuminDataConfig)
- opts, args = parser.parse_args()
-
try:
name = args[0]
except IndexError:
@@ -50,7 +46,7 @@
broker_uris = [x.strip() for x in opts.brokers.split(",")]
- app = Cumin(config.home, broker_uris, opts.database)
+ app = Cumin(config.get_home(), broker_uris, opts.database)
app.check()
app.init()
Modified: branches/multiples/cumin/bin/cumin-bench
===================================================================
--- branches/multiples/cumin/bin/cumin-bench 2011-01-17 14:55:41 UTC (rev 4469)
+++ branches/multiples/cumin/bin/cumin-bench 2011-01-17 16:30:18 UTC (rev 4470)
@@ -8,22 +8,17 @@
from cumin.config import *
def do_main():
- config = CuminConfig()
- values = config.parse()
+ config, values, opts, args = get_configuration(CuminWebOptionParser(),
CuminWebConfig)
- parser = CuminOptionParser(values.web)
-
- opts, args = parser.parse_args()
-
setup_logging(opts)
broker_uris = [x.strip() for x in opts.brokers.split(",")]
- cumin = Cumin(config.home, broker_uris, opts.database)
+ cumin = Cumin(config.get_home(), broker_uris, opts.database)
cumin.debug = True
- cumin.user = values.web.user
- cumin.update_interval = values.web.update_interval
+ cumin.user = values.user
+ cumin.update_interval = values.update_interval
cumin.check()
cumin.init()
Modified: branches/multiples/cumin/bin/cumin-data
===================================================================
--- branches/multiples/cumin/bin/cumin-data 2011-01-17 14:55:41 UTC (rev 4469)
+++ branches/multiples/cumin/bin/cumin-data 2011-01-17 16:30:18 UTC (rev 4470)
@@ -11,7 +11,7 @@
from mint import *
def main():
- config, values, opts = get_configuration(CuminDataOptionParser(), CuminDataConfig)
+ config, values, opts, args = get_configuration(CuminDataOptionParser(),
CuminDataConfig)
setup_logging(opts)
Modified: branches/multiples/cumin/bin/cumin-smoke-test
===================================================================
--- branches/multiples/cumin/bin/cumin-smoke-test 2011-01-17 14:55:41 UTC (rev 4469)
+++ branches/multiples/cumin/bin/cumin-smoke-test 2011-01-17 16:30:18 UTC (rev 4470)
@@ -13,22 +13,16 @@
from cumin.util import *
def main():
- config = CuminConfig()
- values = config.parse()
+ config, values, opts, args = get_configuration(CuminWebOptionParser(),
CuminWebConfig)
- parser = CuminOptionParser(values.web)
-
- parser.add_option("--host", default=values.web.host)
- parser.add_option("--port", default=values.web.port)
-
- opts, args = parser.parse_args()
-
setup_logging(opts)
- cumin = Cumin(config.home, opts.brokers, opts.database,
+ broker_uris = [x.strip() for x in opts.brokers.split(",")]
+
+ cumin = Cumin(config.get_home(), broker_uris, opts.database,
opts.host, opts.port)
- cumin.user = values.web.user
+ cumin.user = values.user
cumin.check()
cumin.init()
Modified: branches/multiples/cumin/bin/cumin-web
===================================================================
--- branches/multiples/cumin/bin/cumin-web 2011-01-17 14:55:41 UTC (rev 4469)
+++ branches/multiples/cumin/bin/cumin-web 2011-01-17 16:30:18 UTC (rev 4470)
@@ -11,7 +11,7 @@
from cumin.util import *
def main():
- config, values, opts = get_configuration(CuminWebOptionParser(), CuminWebConfig)
+ config, values, opts, args = get_configuration(CuminWebOptionParser(),
CuminWebConfig)
setup_logging(opts)
Modified: branches/multiples/cumin/python/cumin/config.py
===================================================================
--- branches/multiples/cumin/python/cumin/config.py 2011-01-17 14:55:41 UTC (rev 4469)
+++ branches/multiples/cumin/python/cumin/config.py 2011-01-17 16:30:18 UTC (rev 4470)
@@ -125,13 +125,21 @@
self.add_option("--debug", action="store_true")
self.add_option("--init-only", action="store_true")
+ def _apply_default(self, section, name):
+ try:
+ val = getattr(section, name)
+ self.set_default(name, val)
+ except:
+ pass
+
def set_defaults_from_section(self, section):
- # Careful, parser replaces '-' with '_' in dest fields
- self.set_default("database", section.database)
- self.set_default("brokers", section.brokers)
- self.set_default("log_file", section.log_file)
- self.set_default("log_level", section.log_level)
- self.set_default("debug", section.debug)
+ # It is possible that a section does not contain an updated
+ # default value for a particular option. Skip exception.
+ self._apply_default(section, "database")
+ self._apply_default(section, "brokers")
+ self._apply_default(section, "log_file")
+ self._apply_default(section, "log_level")
+ self._apply_default(section, "debug")
class CuminWebOptionParser(CuminMultiOptionParser):
def __init__(self, default_section="web"):
@@ -145,8 +153,8 @@
super(CuminWebOptionParser, self).set_defaults_from_section(section)
# For web, these options also have defaults in config files
- self.set_default("host", section.host)
- self.set_default("port", section.port)
+ self._apply_default(section, "host")
+ self._apply_default(section, "port")
class CuminDataOptionParser(CuminMultiOptionParser):
def __init__(self, default_section="data"):
@@ -170,7 +178,7 @@
# First parse should return a "section" value
opts, args = parser.parse_args()
if hasattr(opts, "section"):
- # Create section and parse config files
+ # Create config object with the given section and parse config files
config = ConfigType(opts.section)
values = config.parse()
if hasattr(values, opts.section):
@@ -178,4 +186,8 @@
values = getattr(values, opts.section)
parser.set_defaults_from_section(values)
opts, args = parser.parse_args()
- return config, values, opts
+ else:
+ raise Exception("Section ["+opts.section+"] not present in
configuration files.")
+ else:
+ raise Exception("No '--section' value available as option or
default")
+ return config, values, opts, args