Merge "Deleting volumes which are consumed as a basis for others"
diff --git a/cinder_tempest_plugin/api/volume/test_volume_dependency.py b/cinder_tempest_plugin/api/volume/test_volume_dependency.py
new file mode 100644
index 0000000..96a3c83
--- /dev/null
+++ b/cinder_tempest_plugin/api/volume/test_volume_dependency.py
@@ -0,0 +1,65 @@
+# Copyright 2022 Red Hat, 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.
+
+from tempest import config
+from tempest.lib import decorators
+
+from cinder_tempest_plugin.api.volume import base
+
+CONF = config.CONF
+
+
+class VolumeDependencyTests(base.BaseVolumeTest):
+ min_microversion = '3.40'
+
+ @classmethod
+ def setup_clients(cls):
+ super(VolumeDependencyTests, cls).setup_clients()
+
+ @decorators.idempotent_id('42e9df95-854b-4840-9d55-ae62f65e9b8e')
+ def test_delete_source_volume(self):
+ """Test basic dependency deletion
+
+ * Create a volume with source_volid
+ * Delete the source volume
+ """
+ source_volume = self.create_volume()
+ kwargs = {'source_volid': source_volume['id']}
+ cloned_volume = self.create_volume(**kwargs)
+ self.assertEqual(source_volume['id'], cloned_volume['source_volid'])
+ self.volumes_client.delete_volume(source_volume['id'])
+ self.volumes_client.wait_for_resource_deletion(source_volume['id'])
+
+ @decorators.idempotent_id('900d8ea5-2afd-4fe5-a0c3-fab4744f0d40')
+ def test_delete_source_snapshot(self):
+ """Test basic dependency deletion with snapshot
+
+ * Create a snapshot from source volume
+ * Create a volume from that snapshot
+ * Delete the source snapshot
+ * Delete the source volume
+ """
+ source_volume = self.create_volume()
+ snapshot_source_volume = self.create_snapshot(source_volume['id'])
+ kwargs = {'snapshot_id': snapshot_source_volume['id']}
+ volume_from_snapshot = self.create_volume(**kwargs)
+ self.assertEqual(volume_from_snapshot['snapshot_id'],
+ snapshot_source_volume['id'])
+
+ self.snapshots_client.delete_snapshot(snapshot_source_volume['id'])
+ self.snapshots_client.wait_for_resource_deletion(
+ snapshot_source_volume['id'])
+ self.volumes_client.delete_volume(source_volume['id'])
+ self.volumes_client.wait_for_resource_deletion(source_volume['id'])