diff options
author | Takashi Natsume <takanattie@gmail.com> | 2021-01-04 13:39:38 +0900 |
---|---|---|
committer | Takashi Natsume <takanattie@gmail.com> | 2021-01-04 13:49:20 +0900 |
commit | e85d845b1aa5a18537907ba561a2718db2ccbed8 (patch) | |
tree | 901b3a08a0429d53c33154f2015ed63ae3b28b65 | |
parent | 1b5f29a3a4cead30c6455d9ecc47850f5e4994e1 (diff) | |
download | python-novaclient-e85d845b1aa5a18537907ba561a2718db2ccbed8.tar.gz |
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 <takanattie@gmail.com>
-rw-r--r-- | novaclient/shell.py | 3 | ||||
-rw-r--r-- | novaclient/tests/unit/test_shell.py | 3 | ||||
-rw-r--r-- | releasenotes/notes/fix-raw-python-error-debd3edb17c2f675.yaml | 7 |
3 files changed, 13 insertions, 0 deletions
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', 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 00000000..7686ecbe --- /dev/null +++ b/releasenotes/notes/fix-raw-python-error-debd3edb17c2f675.yaml @@ -0,0 +1,7 @@ +--- +fixes: + - | + `Bug #1903727 <https://bugs.launchpad.net/python-novaclient/+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``. |