Print help if nova-manage subcommand is not specified

If a nova-manage command is executed without the -h option
or a subcommand the user gets an ugly traceback. This is
easily recreated:

  $ tox -e venv -- nova-manage db

Make the action argument required, so we get a helpful error message
instead.

  $ nova-manage db
  usage: nova-manage db [-h]
                      {archive_deleted_rows,ironic_flavor_migration,
                       null_instance_uuid_scan,online_data_migrations,
                       purge,sync,version}
                      ...
  nova-manage db: error: the following arguments are required: action

Note that unit tests appear to be impossible for this, since doing so
attempts to initialize an oslo.config 'CONF' singleton and this is
something we've already done in 'nova.test' and can't do again.

Change-Id: I24d03eed3aa3b882c49916938f4c25d76fd4e831
Closes-Bug: #1837199
Co-Authored-By: Stephen Finucane <stephenfin@redhat.com>
(cherry picked from commit 51b0d4ca58)
This commit is contained in:
Matt Riedemann 2019-11-18 11:36:20 -05:00 committed by Stephen Finucane
parent 27bfd0bc62
commit 48f9b1c2ce
2 changed files with 2 additions and 1 deletions

View File

@ -35,7 +35,7 @@ Run without arguments to see a list of available command categories::
nova-manage
You can also run with a category argument such as user to see a list of all
You can also run with a category argument such as ``db`` to see a list of all
commands in that category::
nova-manage db

View File

@ -124,6 +124,7 @@ def add_command_parsers(subparsers, categories):
parser.set_defaults(command_object=command_object)
category_subparsers = parser.add_subparsers(dest='action')
category_subparsers.required = True
for (action, action_fn) in methods_of(command_object):
parser = category_subparsers.add_parser(