Test the ability to transfer encrypted volumes

Add tempest tests that transfer an encrypted volume to a user in
another project, and one that verifies the ability to cancel (delete)
a transfer. The purpose is to test the ability to transfer the
barbican secret (i.e. the encryption key) to another user.

The tests create an encrypted volume from an image, and launch an
instance to write a timestamp. After the volume is transferred (or
the transfer is deleted), another instance is booted and the timestamp
read back. The tests also verify the process results in the volume
having a new encrytion_key_id.

Implements: blueprint transfer-encrypted-volume
Depends-On: I459f06504e90025c9c0b539981d3d56a2a9394c7
Depends-On: I11072d6d8a185037c7f4cdd52c45933b0cccaf05
Depends-On: I4ad7fe336c5193604d95fca5a72695d82adaa9f0
Depends-On: Ia3f414c4b9b0829f60841a6dd63c97a893fdde4d
Depends-On: I216f78e8a300ab3f79bbcbb38110adf2bbec2196
Change-Id: I30d02c81dd1cf8509585fe3b7a0f3256f17939b5
diff --git a/cinder_tempest_plugin/config.py b/cinder_tempest_plugin/config.py
index e15a399..9cc3573 100644
--- a/cinder_tempest_plugin/config.py
+++ b/cinder_tempest_plugin/config.py
@@ -23,3 +23,15 @@
                 default=False,
                 help='Enable to run Cinder volume revert tests'),
 ]
+
+# The barbican service is discovered by config_tempest [1], and will appear
+# in the [service_available] group in tempest.conf. However, the 'barbican'
+# option isn't registered by tempest itself, and so we do it here. This adds
+# the ability to test CONF.service_available.barbican.
+#
+# [1] I96800a95f844ce7675d266e456e01620e63e347a
+service_available_option = [
+    cfg.BoolOpt('barbican',
+                default=False,
+                help="Whether or not barbican is expected to be available"),
+]