Fixed command list

The cliff module expects an array of tuples however
the array that this function was returning was an array
of tuples that was also containing an array of values for
the commands attached to each group and the
cliff module wasn't liking it.

The output now comes out looking like:

| openstack.common | limits show |
|                  | extension list |
| openstack.baremetal.v1 | baremetal set |

Change-Id: Ifa1c149cb5c66ba27dc72bf72d7c8f2f50e42f73
Closes-Bug: 1545609
This commit is contained in:
Brandon Palm 2016-02-17 20:01:23 +00:00
parent 040d0c2e82
commit f0c3b4e69d
3 changed files with 33 additions and 8 deletions

View File

@ -19,6 +19,7 @@ import six
import sys
from openstackclient.common import command
from openstackclient.common import utils
class ListCommand(command.Lister):
@ -29,9 +30,24 @@ class ListCommand(command.Lister):
def take_action(self, parsed_args):
cm = self.app.command_manager
groups = cm.get_command_groups()
groups = sorted(groups)
columns = ('Command Group', 'Commands')
return (columns, ((c, cm.get_command_names(group=c)) for c in groups))
commands = []
for group in groups:
command_names = cm.get_command_names(group)
command_names = sorted(command_names)
if command_names != []:
# TODO(bapalm): Fix this when cliff properly supports
# handling the detection rather than using the hard-code below.
if parsed_args.formatter == 'table':
command_names = utils.format_list(command_names, "\n")
commands.append((group, command_names))
return (columns, commands)
class ListModule(command.ShowOne):

View File

@ -48,10 +48,11 @@ class TestCommandList(utils.TestCommand):
super(TestCommandList, self).setUp()
self.app.command_manager = mock.Mock()
self.app.command_manager.get_command_groups.return_value = ['test']
self.app.command_manager.get_command_groups.return_value = [
'openstack.common'
]
self.app.command_manager.get_command_names.return_value = [
'one',
'cmd two',
'limits show\nextension list'
]
# Get the command object to test
@ -67,12 +68,15 @@ class TestCommandList(utils.TestCommand):
# containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args)
# TODO(bapalm): Adjust this when cliff properly supports
# handling the detection rather than using the hard-code below.
collist = ('Command Group', 'Commands')
self.assertEqual(collist, columns)
datalist = ((
'test',
['one', 'cmd two'],
), )
'openstack.common',
'limits show\nextension list'
),)
self.assertEqual(datalist, tuple(data))

View File

@ -0,0 +1,5 @@
---
fixes:
- |
Fixed ``openstack command list`` to display properly
[Bug `1545609 <https://bugs.launchpad.net/python-openstackclient/+bug/1545609>`_]