Add cliff based common cli entrypoint
This commit adds the basic framework to tempest for a unified modular
CLI endpoint using cliff. As of right now this entry-point doesn't
really do anything but exist. It will be expanded in the future first
all the existing commands will be refactored to be used through this.
Secondly a new interface and workflow for running tempest will be
created on top of this.
Co-Authored-By: Matthew Treinish <mtreinish@kortar.org>
Change-Id: I1ff8d22c120dbc81d812f1f107db7c2d9b15a505
Implements: blueprint tempest-cli-improvements
diff --git a/requirements.txt b/requirements.txt
index 60dee97..be825f0 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,6 +2,7 @@
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
pbr<2.0,>=0.11
+cliff>=1.13.0 # Apache-2.0
anyjson>=0.3.3
httplib2>=0.7.5
jsonschema!=2.5.0,<3.0.0,>=2.0.0
diff --git a/setup.cfg b/setup.cfg
index 3a14bba..5c78632 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -25,6 +25,7 @@
run-tempest-stress = tempest.cmd.run_stress:main
tempest-cleanup = tempest.cmd.cleanup:main
tempest-account-generator = tempest.cmd.account_generator:main
+ tempest = tempest.cmd.main:main
oslo.config.opts =
tempest.config = tempest.config:list_opts
diff --git a/tempest/cmd/main.py b/tempest/cmd/main.py
new file mode 100644
index 0000000..762e982
--- /dev/null
+++ b/tempest/cmd/main.py
@@ -0,0 +1,52 @@
+# Copyright 2015 Dell Inc.
+# 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 logging
+import sys
+
+from cliff import app
+from cliff import commandmanager
+
+TEMPEST_CLI_VERSION = '0.1'
+
+
+class Main(app.App):
+
+ log = logging.getLogger(__name__)
+
+ def __init__(self):
+ super(Main, self).__init__(
+ description='Tempest cli application',
+ version=TEMPEST_CLI_VERSION,
+ command_manager=commandmanager.CommandManager('tempest.cm'),
+ )
+
+ def initialize_app(self, argv):
+ self.log.debug('tempest initialize_app')
+
+ def prepare_to_run_command(self, cmd):
+ self.log.debug('prepare_to_run_command %s', cmd.__class__.__name__)
+
+ def clean_up(self, cmd, result, err):
+ self.log.debug('tempest clean_up %s', cmd.__class__.__name__)
+ if err:
+ self.log.debug('tempest got an error: %s', err)
+
+
+def main(argv=sys.argv[1:]):
+ the_app = Main()
+ return the_app.run(argv)
+
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv[1:]))