Add a volume create/delete stress test

Simply performs a create/delete operation, in a while loop for the
duration passed to run_stress.py

Change-Id: I006f3754f1fc1cabfbb90ed72704b2185dcc4e5f
Fixes: bug #1192227
diff --git a/tempest/stress/actions/volume_create_delete.py b/tempest/stress/actions/volume_create_delete.py
new file mode 100644
index 0000000..e0c95b5
--- /dev/null
+++ b/tempest/stress/actions/volume_create_delete.py
@@ -0,0 +1,30 @@
+#    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.
+
+from tempest.common.utils.data_utils import rand_name
+
+
+def create_delete(manager, logger):
+    while True:
+        name = rand_name("volume")
+        logger.info("creating %s" % name)
+        resp, volume = manager.volumes_client.create_volume(size=1,
+                                                            display_name=name)
+        assert(resp.status == 200)
+        manager.volumes_client.wait_for_volume_status(volume['id'],
+                                                      'available')
+        logger.info("created %s" % volume['id'])
+        logger.info("deleting %s" % name)
+        resp, _ = manager.volumes_client.delete_volume(volume['id'])
+        assert(resp.status == 202)
+        manager.volumes_client.wait_for_resource_deletion(volume['id'])
+        logger.info("deleted %s" % volume['id'])
diff --git a/tempest/stress/cleanup.py b/tempest/stress/cleanup.py
index b2cb70a..3b1c871 100644
--- a/tempest/stress/cleanup.py
+++ b/tempest/stress/cleanup.py
@@ -58,3 +58,16 @@
     for tenant in tenants:
         if tenant['name'].startswith("stress_tenant"):
             admin_manager.identity_client.delete_tenant(tenant['id'])
+
+    _, vols = admin_manager.volumes_client.list_volumes({"all_tenants": True})
+    for v in vols:
+        try:
+            admin_manager.volumes_client.delete_volume(v['id'])
+        except Exception:
+            pass
+
+    for v in vols:
+        try:
+            admin_manager.volumes_client.wait_for_resource_deletion(v['id'])
+        except Exception:
+            pass
diff --git a/tempest/stress/etc/volume-create-delete-test.json b/tempest/stress/etc/volume-create-delete-test.json
new file mode 100644
index 0000000..ed0aaeb
--- /dev/null
+++ b/tempest/stress/etc/volume-create-delete-test.json
@@ -0,0 +1,7 @@
+[{"action": "tempest.stress.actions.volume_create_delete.create_delete",
+  "threads": 4,
+  "use_admin": false,
+  "use_isolated_tenants": false,
+  "kwargs": {}
+  }
+]