python-openstackclient/openstackclient/tests/functional/common/test_module.py
Rui Chen 0898ebacb8 Support list commands by group name keyword
The output of current "command list" is so long, it's
very difficult for users to find out the commands
they care about.

Add "--group <group-keyword>" option to filter the commands by group
name keyword, like: --group volume, list all openstack.volume.v2
(cinder) commands

That support the scenario that users need to know the current support
commands of some OpenStack services(nova, neutron, cinder and so on) in
OSC.

Change-Id: Id673042729ad36a0cac0b81fb31a3537c24f03fc
Closes-Bug: #1666780
2017-02-23 12:13:06 +08:00

80 lines
2.6 KiB
Python

# Copyright 2017 Huawei, Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
import json
from openstackclient.tests.functional import base
class ModuleTest(base.TestCase):
"""Functional tests for openstackclient module list output."""
CLIENTS = ['openstackclient',
'keystoneclient',
'novaclient',
'openstack']
LIBS = ['osc_lib',
'os_client_config',
'keystoneauth1']
def test_module_list(self):
# Test module list
cmd_output = json.loads(self.openstack('module list -f json'))
for one_module in self.CLIENTS:
self.assertIn(one_module, cmd_output.keys())
for one_module in self.LIBS:
self.assertNotIn(one_module, cmd_output.keys())
# Test module list --all
cmd_output = json.loads(self.openstack('module list --all -f json'))
for one_module in self.CLIENTS + self.LIBS:
self.assertIn(one_module, cmd_output.keys())
class CommandTest(base.TestCase):
"""Functional tests for openstackclient command list."""
GROUPS = [
'openstack.volume.v2',
'openstack.network.v2',
'openstack.image.v2',
'openstack.identity.v3',
'openstack.compute.v2',
'openstack.common',
'openstack.cli',
]
def test_command_list_no_option(self):
cmd_output = json.loads(self.openstack('command list -f json'))
group_names = [each.get('Command Group') for each in cmd_output]
for one_group in self.GROUPS:
self.assertIn(one_group, group_names)
def test_command_list_with_group(self):
input_groups = [
'volume',
'network',
'image',
'identity',
'compute.v2'
]
for each_input in input_groups:
cmd_output = json.loads(self.openstack(
'command list --group %s -f json' % each_input
))
group_names = [each.get('Command Group') for each in cmd_output]
for each_name in group_names:
self.assertIn(each_input, each_name)