functional tests: work with EBS image if needed

Some tests can't pass on non-EBS image with messages:
The instance 'i-0' does not have an 'ebs' root device type and cannot be stopped.
EBS block device mappings not supported for instance-store AMIs.

Change-Id: I034c2df65a00140c20171c5fe4212bf084d2bdfb
This commit is contained in:
Andrey Pavlov 2015-10-25 12:40:00 +03:00
parent 346cee6eed
commit 6f5f9a29dc
2 changed files with 4 additions and 39 deletions

View File

@ -311,13 +311,13 @@ class InstanceAttributeTest(base.EC2TestCase):
self.client.terminate_instances(InstanceIds=[instance_id])
self.get_instance_waiter().wait_delete(instance_id)
@testtools.skipUnless(CONF.aws.image_id, "EBS image id is not defined")
@testtools.skipUnless(CONF.aws.ebs_image_id, "EBS image id is not defined")
@testtools.skipUnless(CONF.aws.instance_type_alt,
"Alternative instance type is not defined")
@testtools.skipUnless(CONF.aws.instance_type_alt != CONF.aws.instance_type,
"Alternative instance type is not defined")
def test_instance_type_attribute(self):
instance_id = self.run_instance()
instance_id = self.run_instance(ImageId=CONF.aws.ebs_image_id)
self.client.stop_instances(InstanceIds=[instance_id])
self.get_instance_waiter().wait_available(instance_id,

View File

@ -186,9 +186,10 @@ class InstanceTest(base.EC2TestCase):
self.cancelResourceCleanUp(res_clean)
self.get_instance_waiter().wait_delete(instance_id)
@testtools.skipUnless(CONF.aws.ebs_image_id, "EBS image id is not defined")
def test_stop_instance(self):
instance_type = CONF.aws.instance_type
image_id = CONF.aws.image_id
image_id = CONF.aws.ebs_image_id
data = self.client.run_instances(
ImageId=image_id, InstanceType=instance_type,
Placement={'AvailabilityZone': self.zone}, MinCount=1, MaxCount=1)
@ -239,39 +240,3 @@ class InstanceTest(base.EC2TestCase):
self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(res_clean)
self.get_instance_waiter().wait_delete(instance_id)
def test_launch_instance_with_creating_blank_volume(self):
"""Launch instance with creating blank volume."""
data = self.client.describe_images(ImageIds=[CONF.aws.image_id])
# NOTE(ft): ec2 api doesn't report root device name if it isn't
# explicity contained in an image. So we assume it is /dev/vda,
# which is true for only qemu hypervisor though.
device_name_prefix = base.get_device_name_prefix(
data['Images'][0].get('RootDeviceName', '/dev/vda'))
device_name = device_name_prefix + 'b'
instance_type = CONF.aws.instance_type
data = self.client.run_instances(
ImageId=CONF.aws.image_id, InstanceType=instance_type,
Placement={'AvailabilityZone': self.zone}, MinCount=1, MaxCount=1,
BlockDeviceMappings=[{'DeviceName': device_name,
'Ebs': {'VolumeSize': 1}}])
instance_id = data['Instances'][0]['InstanceId']
res_clean = self.addResourceCleanUp(self.client.terminate_instances,
InstanceIds=[instance_id])
self.get_instance_waiter().wait_available(instance_id,
final_set=('running'))
bdt = self.get_instance_bdm(instance_id, device_name)
self.assertIsNotNone(bdt)
volume_id = bdt['Ebs'].get('VolumeId')
self.assertIsNotNone(volume_id)
self.assertTrue(bdt['Ebs']['DeleteOnTermination'])
data = self.client.describe_volumes(VolumeIds=[volume_id])
self.assertEqual(1, len(data['Volumes']))
volume = data['Volumes'][0]
self.assertEqual(1, volume['Size'])
self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(res_clean)
self.get_instance_waiter().wait_delete(instance_id)