Skip to content

Commit

Permalink
Include CommonConfigOpts options in sample config
Browse files Browse the repository at this point in the history
Options defined by CommonConfigOpts are declared within the class rather
than at module level, so they weren't being included in the sample conf.

Also, in essex (and up until commit 991614a), the sample conf file
didn't contain these options but they included the hyphen in the name.
The hyphen is only used on the command line, it is converted to an
underscore automatically in the config file. Use opt.dest rather than
opt.name as the config file key. Fixes bug #1034970.

DocImpact: update nova.conf docs
Change-Id: Ia7f3dded9148deedeb198c19a8d343db6dd93f99
  • Loading branch information
markmc committed Aug 23, 2012
1 parent 7968a5f commit 63cc191
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 8 deletions.
40 changes: 39 additions & 1 deletion etc/nova/nova.conf.sample
Expand Up @@ -4,6 +4,44 @@

[DEFAULT]

######## defined in nova.openstack.common.cfg:CommonConfigOpts ########

# debug=false
#### (BoolOpt) Print debugging output

# verbose=false
#### (BoolOpt) Print more verbose output

# log_config=<None>
#### (StrOpt) If this option is specified, the logging configuration file
#### specified is used and overrides any other logging options
#### specified. Please see the Python logging module
#### documentation for details on logging configuration files.

# log_format=%(asctime)s %(levelname)8s [%(name)s] %(message)s
#### (StrOpt) A logging.Formatter log message format string which may use
#### any of the available logging.LogRecord attributes. Default:
#### %default

# log_date_format=%Y-%m-%d %H:%M:%S
#### (StrOpt) Format string for %(asctime)s in log records. Default:
#### %default

# log_file=<None>
#### (StrOpt) (Optional) Name of log file to output to. If not set,
#### logging will go to stdout.

# log_dir=<None>
#### (StrOpt) (Optional) The directory to keep log files in (will be
#### prepended to --logfile)

# use_syslog=false
#### (BoolOpt) Use syslog for logging.

# syslog_log_facility=LOG_USER
#### (StrOpt) syslog facility to receive log lines


######## defined in nova.crypto ########

# ca_file=cacert.pem
Expand Down Expand Up @@ -1908,4 +1946,4 @@
#### beprepared. Maximum value is 600 seconds (10 minutes).


# Total option count: 500
# Total option count: 509
19 changes: 12 additions & 7 deletions tools/conf/extract_opts.py
Expand Up @@ -48,6 +48,8 @@
def main(srcfiles):
print '\n'.join(['#' * 20, '# nova.conf sample #', '#' * 20,
'', '[DEFAULT]', ''])
_list_opts(cfg.CommonConfigOpts,
cfg.__name__ + ':' + cfg.CommonConfigOpts.__name__)
mods_by_pkg = dict()
for filepath in srcfiles:
pkg_name = filepath.split(os.sep)[3]
Expand All @@ -69,8 +71,6 @@ def main(srcfiles):


def _print_module(mod_str):
global OPTION_COUNT
opts = list()
mod_obj = None
if mod_str.endswith('.__init__'):
mod_str = mod_str[:mod_str.rfind(".")]
Expand All @@ -83,18 +83,23 @@ def _print_module(mod_str):
return
except Exception, e:
return
for attr_str in dir(mod_obj):
attr_obj = getattr(mod_obj, attr_str)
_list_opts(mod_obj, mod_str)


def _list_opts(obj, name):
opts = list()
for attr_str in dir(obj):
attr_obj = getattr(obj, attr_str)
if isinstance(attr_obj, cfg.Opt):
opts.append(attr_obj)
elif (isinstance(attr_obj, list) and
all(map(lambda x: isinstance(x, cfg.Opt), attr_obj))):
opts.extend(attr_obj)
# NOTE(lzyeval): return if module has no options
if not opts:
return
global OPTION_COUNT
OPTION_COUNT += len(opts)
print '######## defined in %s ########\n' % mod_str
print '######## defined in %s ########\n' % name
for opt in opts:
_print_opt(opt)
print
Expand All @@ -114,7 +119,7 @@ def _wrap(msg, indent):


def _print_opt(opt):
opt_name, opt_default, opt_help = opt.name, opt.default, opt.help
opt_name, opt_default, opt_help = opt.dest, opt.default, opt.help
if not opt_help:
sys.stderr.write('WARNING: "%s" is missing help string.\n' % opt_name)
opt_type = None
Expand Down

0 comments on commit 63cc191

Please sign in to comment.