From a9a664cde92570b4b01dbc1e7f02f99aee89b6a1 Mon Sep 17 00:00:00 2001 From: step6829 Date: Mon, 30 Nov 2015 18:12:25 +0000 Subject: [PATCH] Add tempest-list-plugins Add the tempest-list-plugins cmd. bp list-plugins Change-Id: If28311bc2e8d29a97ee46d7d73edba2a93aed7ce --- requirements.txt | 1 + setup.cfg | 1 + tempest/cmd/list_plugins.py | 46 ++++++++++++++++++++++++++ tempest/tests/cmd/test_list_plugins.py | 24 ++++++++++++++ 4 files changed, 72 insertions(+) create mode 100644 tempest/cmd/list_plugins.py create mode 100644 tempest/tests/cmd/test_list_plugins.py diff --git a/requirements.txt b/requirements.txt index 469b294c41..e5990babc7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -24,3 +24,4 @@ testscenarios>=0.4 tempest-lib>=0.12.0 PyYAML>=3.1.0 stevedore>=1.5.0 # Apache-2.0 +PrettyTable<0.8,>=0.7 diff --git a/setup.cfg b/setup.cfg index 4415063a77..b94a4f4f2b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -36,6 +36,7 @@ tempest.cm = init = tempest.cmd.init:TempestInit cleanup = tempest.cmd.cleanup:TempestCleanup run-stress = tempest.cmd.run_stress:TempestRunStress + list-plugins = tempest.cmd.list_plugins:TempestListPlugins oslo.config.opts = tempest.config = tempest.config:list_opts diff --git a/tempest/cmd/list_plugins.py b/tempest/cmd/list_plugins.py new file mode 100644 index 0000000000..1f1ff1ab80 --- /dev/null +++ b/tempest/cmd/list_plugins.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python + +# 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. + +""" +Utility for listing all currently installed Tempest plugins. + +**Usage:** ``tempest list-plugins``. +""" + +from cliff import command +from oslo_log import log as logging +import prettytable + +from tempest.test_discover.plugins import TempestTestPluginManager + +LOG = logging.getLogger(__name__) + + +class TempestListPlugins(command.Command): + def take_action(self, parsed_args): + self._list_plugins() + return 0 + + def get_description(self): + return 'List all tempest plugins' + + def _list_plugins(self): + plugins = TempestTestPluginManager() + + output = prettytable.PrettyTable(["Name", "EntryPoint"]) + for plugin in plugins.ext_plugins.extensions: + output.add_row([ + plugin.name, plugin.entry_point_target]) + + print(output) diff --git a/tempest/tests/cmd/test_list_plugins.py b/tempest/tests/cmd/test_list_plugins.py new file mode 100644 index 0000000000..17ddb18287 --- /dev/null +++ b/tempest/tests/cmd/test_list_plugins.py @@ -0,0 +1,24 @@ +# Copyright 2015 Hewlett-Packard Development Company, L.P. +# +# 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 subprocess + +from tempest.tests import base + + +class TestTempestListPlugins(base.TestCase): + def test_run_list_plugins(self): + return_code = subprocess.call( + ['tempest', 'list-plugins'], stdout=subprocess.PIPE) + self.assertEqual(return_code, 0)