Port to argparse based cfg

Import latest cfg from oslo-incubator with these changes:

 Add deprecated --logdir common opt
 Add deprecated --logfile common opt.
 Allow nova and others to override some logging defaults
 Fixing the trim for ListOp when reading from config file
 Fix set_default() with boolean CLI options
 Improve cfg's argparse sub-parsers support
 Hide the GroupAttr conf and group attributes
 Fix regression with cfg CLI arguments
 Fix broken --help with CommonConfigOpts
 Fix ListOpt to trim whitespace
 updating sphinx documentation
 Don't reference argparse._StoreAction
 Fix minor coding style issue
 Remove ConfigCliParser class
 Add support for positional arguments
 Use stock argparse behaviour for optional args
 Use stock argparse --usage behaviour
 Use stock argparse --version behaviour
 Remove add_option() method
 Completely remove cfg's disable_interspersed_args()
 argparse support for cfg

The main cfg API change is that CONF() no longer returns the un-parsed
CLI arguments. To handle these args, you need to use the support for
positional arguments or sub-parsers.

Switching nova-manage to use sub-parser based CLI arguments means the
following changes in behaviour:

 - no more lazy matching of commands - e.g. 'nova-manage proj q' will
   no longer work. If we find out about common abbreviations used in
   peoples' scripts, we can easily add those.

 - the help output displayed if you run nova-manage without any args
   (or just a category) has changed

 - 'nova-manage version list' is no longer equivalent to
   'nova-manage version'

Change-Id: I19ef3a1c00e97af64d199e27cb1cdc5c63b46a82
This commit is contained in:
Mark McLoughlin
2012-11-26 07:21:03 +00:00
parent aa8dc3c69f
commit 3c816b0893
3 changed files with 113 additions and 130 deletions

View File

@@ -48,12 +48,18 @@ from nova.openstack.common import log as logging
from nova.openstack.common import rpc
delete_exchange_opt = cfg.BoolOpt('delete_exchange',
default=False,
help='delete nova exchange too.')
opts = [
cfg.MultiStrOpt('queues',
default=[],
positional=True,
help='Queues to delete'),
cfg.BoolOpt('delete_exchange',
default=False,
help='delete nova exchange too.'),
]
CONF = cfg.CONF
CONF.register_cli_opt(delete_exchange_opt)
CONF.register_cli_opts(opts)
def delete_exchange(exch):
@@ -69,8 +75,8 @@ def delete_queues(queues):
x.queue_delete(q)
if __name__ == '__main__':
args = config.parse_args(sys.argv)
config.parse_args(sys.argv)
logging.setup("nova")
delete_queues(args[1:])
delete_queues(CONF.queues)
if CONF.delete_exchange:
delete_exchange(CONF.control_exchange)