From e85d845b1aa5a18537907ba561a2718db2ccbed8 Mon Sep 17 00:00:00 2001 From: Takashi Natsume Date: Mon, 4 Jan 2021 13:39:38 +0900 Subject: 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 +++ 2 files changed, 6 insertions(+) (limited to 'novaclient') diff --git a/novaclient/shell.py b/novaclient/shell.py index a81db89a..7762be9b 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 889916ea..64195291 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', -- cgit v1.2.1