Fixes CLI client called without subcommands
If CLI client is called without any subcommands or arguments it will fail with """'Namespace' object has no attribute 'command'""". This is coming from the getattr which does not have alternate value specified. Closes-Bug: #1494259 Change-Id: I461f0d4a91f3af2224bafc14a88572a8e4a3c051
This commit is contained in:
@@ -717,7 +717,7 @@ class OpenStackImagesShell(object):
|
||||
help='Display help for <subcommand>.')
|
||||
def do_help(self, args, parser):
|
||||
"""Display help about this program or one of its subcommands."""
|
||||
command = getattr(args, 'command') or ''
|
||||
command = getattr(args, 'command', '')
|
||||
|
||||
if command:
|
||||
if args.command in self.subcommands:
|
||||
@@ -725,13 +725,14 @@ class OpenStackImagesShell(object):
|
||||
else:
|
||||
raise exc.CommandError("'%s' is not a valid subcommand" %
|
||||
args.command)
|
||||
command = ' ' + command
|
||||
else:
|
||||
parser.print_help()
|
||||
|
||||
if not args.os_image_api_version or args.os_image_api_version == '2':
|
||||
print()
|
||||
print(("Run `glance --os-image-api-version 1 help%s` "
|
||||
"for v1 help") % (' ' + command))
|
||||
"for v1 help") % command)
|
||||
|
||||
def do_bash_completion(self, _args):
|
||||
"""Prints arguments for bash_completion.
|
||||
|
@@ -158,6 +158,13 @@ class ShellTest(testutils.TestCase):
|
||||
self.assertEqual(0, actual)
|
||||
self.assertFalse(et_mock.called)
|
||||
|
||||
def test_blank_call(self):
|
||||
shell = openstack_shell.OpenStackImagesShell()
|
||||
with mock.patch.object(shell, '_get_endpoint_and_token') as et_mock:
|
||||
actual = shell.main('')
|
||||
self.assertEqual(0, actual)
|
||||
self.assertFalse(et_mock.called)
|
||||
|
||||
def test_help_on_subcommand_error(self):
|
||||
self.assertRaises(exc.CommandError, shell,
|
||||
'--os-image-api-version 2 help bad')
|
||||
|
Reference in New Issue
Block a user