Merge "setup.cfg: Replace dashes with underscores"
diff --git a/.gitignore b/.gitignore
index 7693c17..c3dab8f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,22 @@
 *.pyc
+
+# Packages
+*.egg*
+dist
+build
+
+# Unit test
+.tox/
+.stestr/
+.venv
+
+# pbr generates these
+AUTHORS
+ChangeLog
+
+# Editors
 *.swp
 *~
-.tox
-.testrepository
+
+# Files created by releasenotes build
+releasenotes/build
diff --git a/.stestr.conf b/.stestr.conf
new file mode 100644
index 0000000..f12caa0
--- /dev/null
+++ b/.stestr.conf
@@ -0,0 +1,4 @@
+[DEFAULT]
+test_path=./heat_tempest_plugin/tests/
+top_dir=./
+group_regex=([^\.]*\.)*
diff --git a/.testr.conf b/.testr.conf
deleted file mode 100644
index b1f68d6..0000000
--- a/.testr.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-[DEFAULT]
-test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \
-             OS_STDERR_CAPTURE=${OS_STDERR_CAPTURE:-1} \
-             OS_LOG_CAPTURE=${OS_LOG_CAPTURE:-1} \
-             OS_DEBUG=${OS_DEBUG:-1} \
-             OS_TEST_TIMEOUT=${OS_TEST_TIMEOUT:-500} \
-             OS_TEST_LOCK_PATH=${OS_TEST_LOCK_PATH:-${TMPDIR:-'/tmp'}} \
-             ${PYTHON:-python} -m subunit.run discover -t ${OS_TOP_LEVEL:-./} ${OS_TEST_PATH:-./heat_tempest_plugin} $LISTOPT $IDOPTION
-
-test_id_option=--load-list $IDFILE
-test_list_option=--list
-group_regex=([^\.]*\.)*
diff --git a/.zuul.yaml b/.zuul.yaml
index 74ebce3..45ccd43 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -1,47 +1,12 @@
 - job:
-    name: heat-functional-convg-stein
-    parent: heat-functional-convg-mysql-lbaasv2-py3
-    nodeset: openstack-single-node-bionic
-    override-checkout: stable/stein
-    vars:
-      branch_override: stable/stein
-
-- job:
-    name: heat-functional-orig-stein
-    parent: heat-functional-orig-mysql-lbaasv2
-    nodeset: openstack-single-node-bionic
-    override-checkout: stable/stein
-    vars:
-      branch_override: stable/stein
-      use_python3: 1
-
-- job:
-    name: heat-functional-convg-train
-    parent: heat-functional-convg-mysql-lbaasv2-py3
-    nodeset: openstack-single-node-bionic
-    override-checkout: stable/train
-    vars:
-      branch_override: stable/train
-
-- job:
-    name: heat-functional-orig-train
-    parent: heat-functional-orig-mysql-lbaasv2
-    nodeset: openstack-single-node-bionic
-    override-checkout: stable/train
-    vars:
-      branch_override: stable/train
-      use_python3: 1
-
-- job:
-    name: heat-functional-ussuri
+    name: heat-functional-yoga
     parent: heat-functional
-    nodeset: openstack-single-node-bionic
-    override-checkout: stable/ussuri
+    override-checkout: stable/yoga
 
 - job:
-    name: heat-functional-victoria
+    name: heat-functional-xena
     parent: heat-functional
-    override-checkout: stable/victoria
+    override-checkout: stable/xena
 
 - job:
     name: heat-functional-wallaby
@@ -49,6 +14,7 @@
     override-checkout: stable/wallaby
 
 - project:
+    queue: heat
     templates:
       - check-requirements
       - tempest-plugin-jobs
@@ -56,13 +22,10 @@
       jobs:
         - heat-functional
         - heat-functional-legacy
-        - heat-functional-convg-train
-        - heat-functional-orig-train
-        - heat-functional-ussuri
-        - heat-functional-victoria
+        - heat-functional-yoga
+        - heat-functional-xena
         - heat-functional-wallaby
     gate:
-      queue: heat
       jobs:
         - heat-functional
         - heat-functional-legacy
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
new file mode 100644
index 0000000..caeb801
--- /dev/null
+++ b/CONTRIBUTING.rst
@@ -0,0 +1,19 @@
+The source repository for this project can be found at:
+
+   https://opendev.org/openstack/heat-tempest-plugin
+
+Pull requests submitted through GitHub are not monitored.
+
+To start contributing to OpenStack, follow the steps in the contribution guide
+to set up and use Gerrit:
+
+   https://docs.openstack.org/contributors/code-and-documentation/quick-start.html
+
+Bugs should be filed on Storyboard:
+
+   https://storyboard.openstack.org/#!/project/openstack/heat-tempest-plugin
+
+For more specific information about contributing to this repository, see the
+heat-tempest-plugin contributor guide:
+
+   https://opendev.org/openstack/heat-tempest-plugin/src/branch/master/doc/source/contributor/contributing.rst
diff --git a/doc/source/contributor/contributing.rst b/doc/source/contributor/contributing.rst
new file mode 100644
index 0000000..68e2618
--- /dev/null
+++ b/doc/source/contributor/contributing.rst
@@ -0,0 +1,48 @@
+============================
+So You Want to Contribute...
+============================
+For general information on contributing to OpenStack, please check out the
+`contributor guide <https://docs.openstack.org/contributors/>`_ to get started.
+It covers all the basics that are common to all OpenStack projects: the accounts
+you need, the basics of interacting with our Gerrit review system, how we
+communicate as a community, etc.
+Below will cover the more project specific information you need to get started
+with heat-tempest-plugin.
+
+Communication
+~~~~~~~~~~~~~
+* IRC channel #heat at OFTC
+* Mailing list (prefix subjects with ``[heat]`` for faster responses)
+  http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-discuss
+
+Contacting the Core Team
+~~~~~~~~~~~~~~~~~~~~~~~~
+Please refer the `heat-tempest-plugin Core Team
+<https://review.opendev.org/admin/groups/b4b16f97f2b8416cb0111c0bec5df885bd779347,members>`_ contacts.
+
+New Feature Planning
+~~~~~~~~~~~~~~~~~~~~
+heat-tempest-plugin features are tracked on `Storyboard <https://storyboard.openstack.org/#!/project/openstack/heat>`_.
+Please specify the reported story with `heat-tempest-plugin`.
+
+Task Tracking
+~~~~~~~~~~~~~
+We track our tasks in `Storyboard <https://storyboard.openstack.org/#!/project/openstack/heat>`_.
+Please specify the reported story with `heat-tempest-plugin`.
+
+Reporting a Bug
+~~~~~~~~~~~~~~~
+You found an issue and want to make sure we are aware of it? You can do so on
+`StoryBoard <https://storyboard.openstack.org/#!/project/openstack/heat>`_.
+Please specify the reported story with `heat-tempest-plugin`.
+
+Getting Your Patch Merged
+~~~~~~~~~~~~~~~~~~~~~~~~~
+All changes proposed to the heat-tempest-plugin project require one or two +2 votes
+from heat-tempest-plugin core reviewers before one of the core reviewers can approve
+patch by giving ``Workflow +1`` vote.
+
+Project Team Lead Duties
+~~~~~~~~~~~~~~~~~~~~~~~~
+All common PTL duties are enumerated in the `PTL guide
+<https://docs.openstack.org/project-team-guide/ptl.html>`_.
diff --git a/heat_tempest_plugin/services/clients.py b/heat_tempest_plugin/services/clients.py
index d6e1dfb..ae4cbe2 100644
--- a/heat_tempest_plugin/services/clients.py
+++ b/heat_tempest_plugin/services/clients.py
@@ -62,7 +62,7 @@
     calling various OpenStack APIs.
     """
 
-    CINDERCLIENT_VERSION = '2'
+    CINDERCLIENT_VERSION = '3'
     HEATCLIENT_VERSION = '1'
     NOVA_API_VERSION = '2.1'
     GNOCCHI_VERSION = '1'
diff --git a/heat_tempest_plugin/tests/api/test_heat_api.py b/heat_tempest_plugin/tests/api/test_heat_api.py
index d256437..9720fe3 100644
--- a/heat_tempest_plugin/tests/api/test_heat_api.py
+++ b/heat_tempest_plugin/tests/api/test_heat_api.py
@@ -63,8 +63,8 @@
                 keystoneauth1.exceptions.discovery.DiscoveryFailure,
                 keystoneauth1.exceptions.connection.UnknownConnectionError,
                 keystoneauth1.exceptions.connection.ConnectFailure):
-            LOG.warn("Keystone auth exception: %s: %s" % (sys.exc_info()[0],
-                                                          sys.exc_info()[1]))
+            LOG.warning("Keystone auth exception: %s: %s" %
+                        (sys.exc_info()[0], sys.exc_info()[1]))
             # Clear the auth_url, as there is no point in tempest trying
             # to authenticate later with mis-configured or unreachable endpoint
             conf.auth_url = None
diff --git a/heat_tempest_plugin/tests/scenario/templates/id_ed25519.pub b/heat_tempest_plugin/tests/scenario/templates/id_ed25519.pub
new file mode 100644
index 0000000..621bc23
--- /dev/null
+++ b/heat_tempest_plugin/tests/scenario/templates/id_ed25519.pub
@@ -0,0 +1 @@
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFY6/FsBXBr5pe5s6jwkN3Tj0O0a6lh4XrilchQKyPRZ heat-test
diff --git a/heat_tempest_plugin/tests/scenario/templates/test_base_resources.yaml b/heat_tempest_plugin/tests/scenario/templates/test_base_resources.yaml
index bff6185..a430205 100644
--- a/heat_tempest_plugin/tests/scenario/templates/test_base_resources.yaml
+++ b/heat_tempest_plugin/tests/scenario/templates/test_base_resources.yaml
@@ -8,7 +8,7 @@
   key_name:
     type: string
     default: key-01
-    description: Name of an existing key pair to use for the server
+    description: Name of the key pair to use for the server
   flavor:
     type: string
     description: Flavor for the server to be created
@@ -75,6 +75,7 @@
     type: OS::Nova::KeyPair
     properties:
       name: { get_param: key_name }
+      public_key: { get_file: id_ed25519.pub }
 
   server:
     type: OS::Nova::Server
diff --git a/test-requirements.txt b/test-requirements.txt
index be225d8..23614af 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -8,3 +8,4 @@
 # hacking to 3.2.0 or above. hacking 3.2.0 takes
 # care of pyflakes version compatibilty.
 pyflakes>=2.1.1
+stestr>=2.0.0 # Apache-2.0
diff --git a/tox.ini b/tox.ini
index 5aa6b38..07e3180 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,6 +1,6 @@
 [tox]
-envlist = py37,pep8
-minversion = 3.1.1
+envlist = py3,pep8
+minversion = 3.18.0
 skipsdist = True
 ignore_basepython_conflict = True
 
@@ -10,8 +10,7 @@
 setenv = VIRTUAL_ENV={envdir}
 deps = -r{toxinidir}/requirements.txt
        -r{toxinidir}/test-requirements.txt
-commands = bash -c 'if [ ! -d ./.testrepository ] ; then testr init ; fi'
-           testr run {posargs}
+commands = stestr run --slowest {posargs}
 
 [testenv:pep8]
 setenv =