From e85d845b1aa5a18537907ba561a2718db2ccbed8 Mon Sep 17 00:00:00 2001 From: Takashi Natsume Date: Mon, 4 Jan 2021 13:39:38 +0900 Subject: [PATCH] Fix undesirable raw Python error Using the novaclient without a subcommand while passing an optional argument triggers the raw Python error `ERROR: 'Namespace' object has no attribute 'func'`. This bug can be reproduced by issuing the command `nova --os-compute-api-version 2.87`. Added a default value to `func` and an empty value to `command` as placeholders so that a help message is shown instead of the Python error. Change-Id: Ic3e87b67f6d27d40b03d7d8e520fa0f79a4d09e5 Closes-Bug: #1903727 Signed-off-by: Takashi Natsume --- novaclient/shell.py | 3 +++ novaclient/tests/unit/test_shell.py | 3 +++ .../notes/fix-raw-python-error-debd3edb17c2f675.yaml | 7 +++++++ 3 files changed, 13 insertions(+) create mode 100644 releasenotes/notes/fix-raw-python-error-debd3edb17c2f675.yaml diff --git a/novaclient/shell.py b/novaclient/shell.py index a81db89a8..7762be9b3 100644 --- a/novaclient/shell.py +++ b/novaclient/shell.py @@ -365,6 +365,9 @@ class OpenStackComputeShell(object): help=_("Use this API endpoint instead of the Service Catalog. " "Defaults to env[OS_ENDPOINT_OVERRIDE].")) + parser.set_defaults(func=self.do_help) + parser.set_defaults(command='') + if osprofiler_profiler: parser.add_argument('--profile', metavar='HMAC_KEY', diff --git a/novaclient/tests/unit/test_shell.py b/novaclient/tests/unit/test_shell.py index 889916ea7..641952910 100644 --- a/novaclient/tests/unit/test_shell.py +++ b/novaclient/tests/unit/test_shell.py @@ -451,6 +451,9 @@ class ShellTest(utils.TestCase): def test_help_no_options(self): self._test_help('') + def test_help_no_subcommand(self): + self._test_help('--os-compute-api-version 2.87') + def test_help_on_subcommand(self): required = [ '.*?^usage: nova set-password', diff --git a/releasenotes/notes/fix-raw-python-error-debd3edb17c2f675.yaml b/releasenotes/notes/fix-raw-python-error-debd3edb17c2f675.yaml new file mode 100644 index 000000000..7686ecbeb --- /dev/null +++ b/releasenotes/notes/fix-raw-python-error-debd3edb17c2f675.yaml @@ -0,0 +1,7 @@ +--- +fixes: + - | + `Bug #1903727 `_: + Fixed raw Python error message when using ``nova`` without + a subcommand while passing an optional argument, such as + ``--os-compute-api-version 2.87``.