add 'boot from ebs' scenario test
test that boots from a snapshot of a volume backed instance
(instance that was booted from bootable volume that was created from image).
Recent changes in nova and cinder broke booting from EBS instance.
For example last change in cinder is here
(that broke booting) - https://review.openstack.org/#/c/182994/
Change-Id: I3915e2f04163568f758bb9e98bd5394af80aa431
Closes-Bug: #1485424
diff --git a/tempest/scenario/manager.py b/tempest/scenario/manager.py
index 27f145b..7bc8ee8 100644
--- a/tempest/scenario/manager.py
+++ b/tempest/scenario/manager.py
@@ -18,6 +18,7 @@
import netaddr
from oslo_log import log
+from oslo_serialization import jsonutils as json
import six
from tempest_lib.common.utils import misc as misc_utils
from tempest_lib import exceptions as lib_exc
@@ -411,6 +412,19 @@
cleanup_callable=self.delete_wrapper,
cleanup_args=[_image_client.delete_image, image_id])
snapshot_image = _image_client.get_image_meta(image_id)
+
+ bdm = snapshot_image.get('properties', {}).get('block_device_mapping')
+ if bdm:
+ bdm = json.loads(bdm)
+ if bdm and 'snapshot_id' in bdm[0]:
+ snapshot_id = bdm[0]['snapshot_id']
+ self.addCleanup(
+ self.snapshots_client.wait_for_resource_deletion,
+ snapshot_id)
+ self.addCleanup(
+ self.delete_wrapper, self.snapshots_client.delete_snapshot,
+ snapshot_id)
+
image_name = snapshot_image['name']
self.assertEqual(name, image_name)
LOG.debug("Created snapshot image %s for server %s",