add EBS volume deletion to tests.

tests should delete EBS volume by themselves due to OpenStack bug.

Change-Id: Ic32992c54b75e2bdea196cc8073e422e868189f8
This commit is contained in:
Andrey Pavlov 2015-05-08 22:17:44 +03:00
parent 8b13458b19
commit 21e63c3309
14 changed files with 192 additions and 456 deletions

View File

@ -22,6 +22,11 @@ sudo apt-get install euca2ools -fy
export TEST_CONFIG_DIR=$(readlink -f .)
export TEST_CONFIG="functional_tests.conf"
# save original creds(admin) for later usage
OLD_OS_TENANT_NAME=$OS_TENANT_NAME
OLD_OS_USERNAME=$OS_USERNAME
OLD_OS_PASSWORD=$OS_PASSWORD
if [[ ! -f $TEST_CONFIG_DIR/$TEST_CONFIG ]]; then
openstack catalog list
@ -142,4 +147,17 @@ RETVAL=$?
# Here can be some commands for log archiving, etc...
# list resources to check what left after tests
euca-describe-instances
euca-describe-images
euca-describe-volumes
euca-describe-snapshots
export OS_TENANT_NAME=$OLD_OS_TENANT_NAME
export OS_USERNAME=$OLD_OS_USERNAME
export OS_PASSWORD=$OLD_OS_PASSWORD
nova list --all-tenants
cinder list --all-tenants
cinder snapshot-list --all-tenants
glance image-list --all-tenants
exit $RETVAL

View File

@ -17,6 +17,7 @@ import time
import botocore.exceptions
from oslo_log import log
import testtools
from ec2api.tests.functional import base
from ec2api.tests.functional import config
@ -225,12 +226,9 @@ class AddressTest(base.EC2TestCase):
self.cancelResourceCleanUp(res_clean)
@base.skip_without_vpc()
@testtools.skipUnless(CONF.aws.image_id, "image id is not defined")
def test_associate_disassociate_vpc_addresses(self):
instance_type = CONF.aws.instance_type
image_id = CONF.aws.image_id
aws_zone = CONF.aws.aws_zone
if not image_id:
raise self.skipException('aws image_id does not provided')
base_net = '10.3.0.0'
data = self.client.create_vpc(CidrBlock=base_net + '/20')
@ -246,14 +244,7 @@ class AddressTest(base.EC2TestCase):
clean_subnet = self.addResourceCleanUp(self.client.delete_subnet,
SubnetId=subnet_id)
data = self.client.run_instances(
ImageId=image_id, InstanceType=instance_type, MinCount=1,
MaxCount=1, SubnetId=subnet_id)
instance_id = data['Instances'][0]['InstanceId']
clean_i = self.addResourceCleanUp(self.client.terminate_instances,
InstanceIds=[instance_id])
self.get_instance_waiter().wait_available(instance_id,
final_set=('running'))
instance_id = self.run_instance(SubnetId=subnet_id)
data = self.client.allocate_address(Domain='vpc')
alloc_id = data['AllocationId']
@ -305,7 +296,6 @@ class AddressTest(base.EC2TestCase):
self.cancelResourceCleanUp(clean_a)
self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(clean_i)
self.get_instance_waiter().wait_delete(instance_id)
self.client.delete_subnet(SubnetId=subnet_id)
@ -316,21 +306,9 @@ class AddressTest(base.EC2TestCase):
self.cancelResourceCleanUp(clean_vpc)
self.get_vpc_waiter().wait_delete(vpc_id)
@testtools.skipUnless(CONF.aws.image_id, "image id is not defined")
def test_associate_disassociate_standard_addresses(self):
instance_type = CONF.aws.instance_type
image_id = CONF.aws.image_id
if not image_id:
raise self.skipException('aws image_id does not provided')
data = self.client.run_instances(ImageId=image_id,
InstanceType=instance_type,
MinCount=1,
MaxCount=1)
instance_id = data['Instances'][0]['InstanceId']
clean_i = self.addResourceCleanUp(self.client.terminate_instances,
InstanceIds=[instance_id])
self.get_instance_waiter().wait_available(instance_id,
final_set=('running'))
instance_id = self.run_instance()
data = self.client.allocate_address(*[], **{})
ip = data['PublicIp']
@ -359,7 +337,6 @@ class AddressTest(base.EC2TestCase):
self.cancelResourceCleanUp(clean_a)
data = self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(clean_i)
self.get_instance_waiter().wait_delete(instance_id)
@base.skip_without_vpc()

View File

@ -13,7 +13,6 @@
# License for the specific language governing permissions and limitations
# under the License.
import botocore.exceptions
from tempest_lib.common.utils import data_utils
import testtools
@ -133,16 +132,7 @@ class ImageTest(base.EC2TestCase):
if 'RootDeviceType' in image and 'ebs' in image['RootDeviceType']:
raise self.skipException('image_id should not be EBS image.')
data = self.client.run_instances(
ImageId=image_id, InstanceType=CONF.aws.instance_type,
Placement={'AvailabilityZone': CONF.aws.aws_zone},
MinCount=1, MaxCount=1)
self.assertEqual(1, len(data['Instances']))
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'))
instance_id = self.run_instance(ImageId=image_id)
def _rollback(fn_data):
self.client.deregister_image(ImageId=fn_data['ImageId'])
@ -152,7 +142,6 @@ class ImageTest(base.EC2TestCase):
InstanceId=instance_id, Name='name', Description='desc')
data = self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(res_clean)
self.get_instance_waiter().wait_delete(instance_id)
def _create_image(self, name, desc):
@ -162,16 +151,7 @@ class ImageTest(base.EC2TestCase):
self.assertTrue('RootDeviceType' in image
and 'ebs' in image['RootDeviceType'])
data = self.client.run_instances(
ImageId=image_id, InstanceType=CONF.aws.instance_type,
Placement={'AvailabilityZone': CONF.aws.aws_zone},
MinCount=1, MaxCount=1)
self.assertEqual(1, len(data['Instances']))
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'))
instance_id = self.run_instance(ImageId=image_id)
data = self.client.create_image(InstanceId=instance_id,
Name=name, Description=desc)
@ -184,20 +164,10 @@ class ImageTest(base.EC2TestCase):
for bdm in data['Images'][0].get('BlockDeviceMappings', []):
if 'Ebs' in bdm and 'SnapshotId' in bdm['Ebs']:
snapshot_id = bdm['Ebs']['SnapshotId']
kwargs = {'SnapshotIds': [snapshot_id]}
try:
data = self.client.describe_snapshots(**kwargs)
volume_id = data['Snapshots'][0].get('VolumeId')
if volume_id:
self.addResourceCleanUp(self.client.delete_volume,
VolumeId=volume_id)
except botocore.exceptions.ClientError:
pass
self.addResourceCleanUp(self.client.delete_snapshot,
SnapshotId=snapshot_id)
data = self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(res_clean)
self.get_instance_waiter().wait_delete(instance_id)
return image_id, image_clean

View File

@ -231,27 +231,19 @@ 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_describe_instance_attributes(self):
instance_type = CONF.aws.instance_type
image_id = CONF.aws.image_id
data = self.client.run_instances(
ImageId=image_id, InstanceType=instance_type,
Placement={'AvailabilityZone': self.zone}, MinCount=1, MaxCount=1)
instance_id = data['Instances'][0]['InstanceId']
res_clean = self.addResourceCleanUp(self.client.terminate_instances,
InstanceIds=[instance_id])
self.assertEqual(1, len(data['Instances']))
self.get_instance_waiter().wait_available(instance_id,
final_set=('running'))
image_id = CONF.aws.ebs_image_id
instance_id = self.run_instance(ImageId=image_id)
if CONF.aws.run_incompatible_tests:
data = self.client.describe_instance_attribute(
InstanceId=instance_id, Attribute='blockDeviceMapping')
bdms = data.get('BlockDeviceMappings', [])
self.assertNotEmpty(bdms)
self.assertEqual(1, len(bdms))
self.assertIn('DeviceName', bdms[0])
self.assertIn('Ebs', bdms[0])
data = self.client.describe_instance_attribute(
InstanceId=instance_id, Attribute='blockDeviceMapping')
bdms = data.get('BlockDeviceMappings', [])
self.assertNotEmpty(bdms)
self.assertEqual(1, len(bdms))
self.assertIn('DeviceName', bdms[0])
self.assertIn('Ebs', bdms[0])
data = self.client.describe_instance_attribute(
InstanceId=instance_id, Attribute='disableApiTermination')
@ -289,7 +281,6 @@ class InstanceTest(base.EC2TestCase):
self.assertTrue(data['RootDeviceName']['Value'])
self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(res_clean)
self.get_instance_waiter().wait_delete(instance_id)
@testtools.skipUnless(CONF.aws.run_incompatible_tests,

View File

@ -14,6 +14,7 @@
# under the License.
from oslo_log import log
import testtools
from ec2api.tests.functional import base
from ec2api.tests.functional import config
@ -23,27 +24,11 @@ LOG = log.getLogger(__name__)
class InstanceWithEBSTest(base.EC2TestCase):
@classmethod
@base.safe_setup
def setUpClass(cls):
super(InstanceWithEBSTest, cls).setUpClass()
if not CONF.aws.ebs_image_id:
raise cls.skipException('aws EBS image does not provided')
cls.image_id = CONF.aws.ebs_image_id
cls.zone = CONF.aws.aws_zone
@testtools.skipUnless(CONF.aws.ebs_image_id, "EBS image id is not defined")
def test_create_get_delete_ebs_instance(self):
"""Launch EBS-backed instance, check results, and terminate it."""
data = self.client.run_instances(
ImageId=self.image_id, InstanceType=CONF.aws.instance_type,
Placement={'AvailabilityZone': self.zone}, MinCount=1, MaxCount=1)
self.assertEqual(1, len(data['Instances']))
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'))
instance_id = self.run_instance(ImageId=CONF.aws.ebs_image_id)
instance = self.get_instance(instance_id)
self.assertEqual('ebs', instance.get('RootDeviceType'))
@ -66,27 +51,19 @@ class InstanceWithEBSTest(base.EC2TestCase):
self.assertEqual(1, len(data['Volumes']))
data = self.client.terminate_instances(InstanceIds=[instance_id])
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_create_root_volume_snapshot(self):
"""Create snapshot of root volume of EBS-backed instance."""
data = self.client.run_instances(
ImageId=self.image_id, InstanceType=CONF.aws.instance_type,
Placement={'AvailabilityZone': self.zone}, MinCount=1, MaxCount=1)
self.assertEqual(1, len(data['Instances']))
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'))
instance_id = self.run_instance(ImageId=CONF.aws.ebs_image_id)
bdt = self.get_instance_bdm(instance_id, None)
self.assertIsNotNone(bdt)
volume_id = bdt['Ebs'].get('VolumeId')
self.assertIsNotNone(volume_id)
data = self.client.stop_instances(InstanceIds=[instance_id])
self.client.stop_instances(InstanceIds=[instance_id])
self.get_instance_waiter().wait_available(instance_id,
final_set=('stopped'))
@ -105,7 +82,6 @@ class InstanceWithEBSTest(base.EC2TestCase):
final_set=('completed'))
data = self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(res_clean)
self.get_instance_waiter().wait_delete(instance_id)
data = self.client.delete_snapshot(SnapshotId=snapshot_id)

View File

@ -36,8 +36,6 @@ class InstanceInVPCTest(base.EC2TestCase):
super(InstanceInVPCTest, cls).setUpClass()
if not base.TesterStateHolder().get_vpc_enabled():
raise cls.skipException('VPC is disabled')
if not CONF.aws.image_id:
raise cls.skipException('aws image_id does not provided')
data = cls.client.create_vpc(CidrBlock=cls.VPC_CIDR)
cls.vpc_id = data['Vpc']['VpcId']
@ -53,18 +51,9 @@ class InstanceInVPCTest(base.EC2TestCase):
SubnetId=cls.subnet_id)
cls.get_subnet_waiter().wait_available(cls.subnet_id)
@testtools.skipUnless(CONF.aws.image_id, "image id is not defined")
def test_create_delete_instance(self):
instance_type = CONF.aws.instance_type
image_id = CONF.aws.image_id
data = self.client.run_instances(
ImageId=image_id, InstanceType=instance_type, MinCount=1,
MaxCount=1, SubnetId=self.subnet_id)
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'))
instance_id = self.run_instance(SubnetId=self.subnet_id)
data = self.client.describe_instances(InstanceIds=[instance_id])
reservations = data.get('Reservations', [])
@ -87,26 +76,16 @@ class InstanceInVPCTest(base.EC2TestCase):
self.assertEqual(self.vpc_id, ni['VpcId'])
self.assertEqual(self.subnet_id, ni['SubnetId'])
data = self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(res_clean)
self.client.terminate_instances(InstanceIds=[instance_id])
self.get_instance_waiter().wait_delete(instance_id)
# NOTE(andrey-mp): There is difference between Openstack and Amazon.
# Amazon returns instance in 'terminated' state some time after
# instance deletion. But Openstack doesn't return such instance.
@testtools.skipUnless(CONF.aws.image_id, "image id is not defined")
def test_describe_instances_filter(self):
instance_type = CONF.aws.instance_type
image_id = CONF.aws.image_id
data = self.client.run_instances(
ImageId=image_id, InstanceType=instance_type, MinCount=1,
MaxCount=1, SubnetId=self.subnet_id)
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'))
instance_id = self.run_instance(SubnetId=self.subnet_id)
data = self.client.describe_instances(InstanceIds=[instance_id])
self.assert_instance(data, instance_id)
@ -150,8 +129,7 @@ class InstanceInVPCTest(base.EC2TestCase):
Filters=[{'Name': 'vpc-id', 'Values': [self.vpc_id]}])
self.assert_instance(data, instance_id)
data = self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(res_clean)
self.client.terminate_instances(InstanceIds=[instance_id])
self.get_instance_waiter().wait_delete(instance_id)
def assert_instance(self, data, instance_id):
@ -167,6 +145,7 @@ class InstanceInVPCTest(base.EC2TestCase):
"one subnet. Openstack can't do it without additional configuration."
"Worked only from Juno with parameter in config - "
"nova.conf/neutron/allow_duplicate_networks = True")
@testtools.skipUnless(CONF.aws.image_id, "image id is not defined")
def test_create_instance_with_two_interfaces(self):
kwargs = {
'SubnetId': self.subnet_id,
@ -186,69 +165,46 @@ class InstanceInVPCTest(base.EC2TestCase):
self.client.delete_network_interface, NetworkInterfaceId=ni_id2)
self.get_network_interface_waiter().wait_available(ni_id2)
kwargs = {
'ImageId': CONF.aws.image_id,
'InstanceType': CONF.aws.instance_type,
'MinCount': 1,
'MaxCount': 1,
'NetworkInterfaces': [{'NetworkInterfaceId': ni_id1,
'DeviceIndex': 0},
{'NetworkInterfaceId': ni_id2,
'DeviceIndex': 2}]
}
data = self.client.run_instances(*[], **kwargs)
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'))
instance_id = self.run_instance(
NetworkInterfaces=[{'NetworkInterfaceId': ni_id1,
'DeviceIndex': 0},
{'NetworkInterfaceId': ni_id2,
'DeviceIndex': 2}])
instance = self.get_instance(instance_id)
nis = instance.get('NetworkInterfaces', [])
self.assertEqual(2, len(nis))
data = self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(res_clean)
self.client.terminate_instances(InstanceIds=[instance_id])
self.get_instance_waiter().wait_delete(instance_id)
self.get_network_interface_waiter().wait_available(ni_id1)
self.get_network_interface_waiter().wait_available(ni_id2)
data = self.client.delete_network_interface(
self.client.delete_network_interface(
NetworkInterfaceId=ni_id2)
self.cancelResourceCleanUp(clean_ni2)
self.get_network_interface_waiter().wait_delete(ni_id2)
data = self.client.delete_network_interface(
self.client.delete_network_interface(
NetworkInterfaceId=ni_id1)
self.cancelResourceCleanUp(clean_ni1)
self.get_network_interface_waiter().wait_delete(ni_id1)
@testtools.skipUnless(CONF.aws.image_id, "image id is not defined")
def test_create_instance_with_private_ip(self):
ip = '10.16.0.12'
kwargs = {
'ImageId': CONF.aws.image_id,
'InstanceType': CONF.aws.instance_type,
'MinCount': 1,
'MaxCount': 1,
'SubnetId': self.subnet_id,
'PrivateIpAddress': ip
}
data = self.client.run_instances(*[], **kwargs)
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'))
instance_id = self.run_instance(SubnetId=self.subnet_id,
PrivateIpAddress=ip)
instance = self.get_instance(instance_id)
self.assertEqual(ip, instance['PrivateIpAddress'])
data = self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(res_clean)
self.client.terminate_instances(InstanceIds=[instance_id])
self.get_instance_waiter().wait_delete(instance_id)
@testtools.skipUnless(CONF.aws.image_id, "image id is not defined")
def test_create_instance_with_invalid_params(self):
def _rollback(fn_data):
self.client.terminate_instances(

View File

@ -18,6 +18,7 @@ import time
import botocore.exceptions
from oslo_log import log
from tempest_lib.common.utils import data_utils
import testtools
from ec2api.tests.functional import base
from ec2api.tests.functional import config
@ -365,12 +366,8 @@ class NetworkInterfaceTest(base.EC2TestCase):
self.cancelResourceCleanUp(res_clean)
self.get_network_interface_waiter().wait_delete(ni_id)
@testtools.skipUnless(CONF.aws.image_id, "image id is not defined")
def test_attach_network_interface(self):
instance_type = CONF.aws.instance_type
image_id = CONF.aws.image_id
if not image_id:
raise self.skipException('aws image_id does not provided')
kwargs = {
'SubnetId': self.subnet_id,
}
@ -383,14 +380,7 @@ class NetworkInterfaceTest(base.EC2TestCase):
self.assertIsNotNone(address)
self.get_network_interface_waiter().wait_available(ni_id)
data = self.client.run_instances(
ImageId=image_id, InstanceType=instance_type, MinCount=1,
MaxCount=1, SubnetId=self.subnet_id)
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'))
instance_id = self.run_instance(SubnetId=self.subnet_id)
# NOTE(andrey-mp): Amazon can't attach to device index = 0
kwargs = {
@ -427,23 +417,11 @@ class NetworkInterfaceTest(base.EC2TestCase):
data = self.client.detach_network_interface(*[], **kwargs)
data = self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(res_clean)
self.get_instance_waiter().wait_delete(instance_id)
@testtools.skipUnless(CONF.aws.image_id, "image id is not defined")
def test_network_interfaces_are_not_deleted_on_termination(self):
instance_type = CONF.aws.instance_type
image_id = CONF.aws.image_id
if not image_id:
raise self.skipException('aws image_id does not provided')
data = self.client.run_instances(
ImageId=image_id, InstanceType=instance_type, MinCount=1,
MaxCount=1, SubnetId=self.subnet_id)
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'))
instance_id = self.run_instance(SubnetId=self.subnet_id)
instance = self.get_instance(instance_id)
nis = instance.get('NetworkInterfaces', [])
@ -459,7 +437,7 @@ class NetworkInterfaceTest(base.EC2TestCase):
'DeleteOnTermination': False,
}
}
data = self.client.modify_network_interface_attribute(*[], **kwargs)
self.client.modify_network_interface_attribute(*[], **kwargs)
clean_ni = self.addResourceCleanUp(
self.client.delete_network_interface, NetworkInterfaceId=ni_id)
@ -489,7 +467,6 @@ class NetworkInterfaceTest(base.EC2TestCase):
self.assertFalse(ni['Attachment']['DeleteOnTermination'])
data = self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(res_clean)
self.get_instance_waiter().wait_delete(instance_id)
self.get_network_interface_waiter().wait_available(ni_id)
@ -505,20 +482,9 @@ class NetworkInterfaceTest(base.EC2TestCase):
self.cancelResourceCleanUp(clean_ni2)
self.get_network_interface_waiter().wait_delete(ni_id2)
@testtools.skipUnless(CONF.aws.image_id, "image id is not defined")
def test_network_interfaces_are_deleted_on_termination(self):
instance_type = CONF.aws.instance_type
image_id = CONF.aws.image_id
if not image_id:
raise self.skipException('aws image_id does not provided')
data = self.client.run_instances(
ImageId=image_id, InstanceType=instance_type, MinCount=1,
MaxCount=1, SubnetId=self.subnet_id)
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'))
instance_id = self.run_instance(SubnetId=self.subnet_id)
instance = self.get_instance(instance_id)
nis = instance.get('NetworkInterfaces', [])
@ -552,7 +518,6 @@ class NetworkInterfaceTest(base.EC2TestCase):
data = self.client.modify_network_interface_attribute(*[], **kwargs)
data = self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(res_clean)
self.get_instance_waiter().wait_delete(instance_id)
self.get_network_interface_waiter().wait_delete(ni_id)

View File

@ -16,6 +16,7 @@
import time
from tempest_lib.common.utils import data_utils
import testtools
from ec2api.tests.functional import base
from ec2api.tests.functional import config
@ -40,7 +41,7 @@ class TagTest(base.EC2TestCase):
def test_create_get_delete_tag(self):
tag_key = data_utils.rand_name('tag-key')
data = self.client.create_tags(Resources=[self.volume_id],
self.client.create_tags(Resources=[self.volume_id],
Tags=[{'Key': tag_key, 'Value': 'fake_value'}])
self.addResourceCleanUp(self.client.delete_tags,
Resources=[self.volume_id],
@ -50,8 +51,8 @@ class TagTest(base.EC2TestCase):
Filters=[{'Name': 'resource-id', 'Values': [self.volume_id]}])
self.assertEqual(1, len(data['Tags']))
data = self.client.delete_tags(Resources=[self.volume_id],
Tags=[{'Key': tag_key}])
self.client.delete_tags(Resources=[self.volume_id],
Tags=[{'Key': tag_key}])
data = self.client.describe_tags(
Filters=[{'Name': 'resource-id', 'Values': [self.volume_id]}])
@ -59,7 +60,7 @@ class TagTest(base.EC2TestCase):
def test_describe_tags(self):
tag_key = data_utils.rand_name('tag-key')
data = self.client.create_tags(Resources=[self.volume_id],
self.client.create_tags(Resources=[self.volume_id],
Tags=[{'Key': tag_key, 'Value': 'fake_value'}])
self.addResourceCleanUp(self.client.delete_tags,
Resources=[self.volume_id],
@ -97,8 +98,8 @@ class TagTest(base.EC2TestCase):
Filters=[{'Name': 'resource-type', 'Values': ['volume']}])
self.assertIn(tag_key, [k.get('Key') for k in data['Tags']])
data = self.client.delete_tags(Resources=[self.volume_id],
Tags=[{'Key': tag_key}])
self.client.delete_tags(Resources=[self.volume_id],
Tags=[{'Key': tag_key}])
data = self.client.describe_tags(
Filters=[{'Name': 'resource-id', 'Values': [self.volume_id]}])
@ -126,8 +127,8 @@ class TagTest(base.EC2TestCase):
describe_func(Filters=[{'Name': 'tag-key', 'Values': [tag_key]}])
data = self.client.delete_tags(Resources=[resource_id],
Tags=[{'Key': tag_key}])
self.client.delete_tags(Resources=[resource_id],
Tags=[{'Key': tag_key}])
data = self.client.describe_tags(
Filters=[{'Name': 'resource-id', 'Values': [resource_id]}])
@ -192,7 +193,7 @@ class TagTest(base.EC2TestCase):
self._test_tag_resource(res_id, 'dhcp-options', describe_func)
data = self.client.delete_dhcp_options(DhcpOptionsId=res_id)
self.client.delete_dhcp_options(DhcpOptionsId=res_id)
self.cancelResourceCleanUp(res_clean)
def test_tag_volume(self):
@ -216,20 +217,12 @@ class TagTest(base.EC2TestCase):
self._test_tag_resource_negative(res_id)
data = self.client.release_address(AllocationId=res_id)
self.client.release_address(AllocationId=res_id)
self.cancelResourceCleanUp(res_clean)
@testtools.skipUnless(CONF.aws.image_id, "image id is not defined")
def test_tag_instance(self):
instance_type = CONF.aws.instance_type
image_id = CONF.aws.image_id
data = self.client.run_instances(
ImageId=image_id, InstanceType=instance_type,
Placement={'AvailabilityZone': self.zone}, MinCount=1, MaxCount=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'))
instance_id = self.run_instance()
def describe_func(*args, **kwargs):
data = self.client.describe_instances(*args, **kwargs)
@ -240,8 +233,7 @@ class TagTest(base.EC2TestCase):
self._test_tag_resource(instance_id, 'instance', describe_func)
data = self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(res_clean)
self.client.terminate_instances(InstanceIds=[instance_id])
self.get_instance_waiter().wait_delete(instance_id)
@base.skip_without_vpc()
@ -259,7 +251,7 @@ class TagTest(base.EC2TestCase):
self._test_tag_resource(gw_id, 'internet-gateway', describe_func)
data = self.client.delete_internet_gateway(InternetGatewayId=gw_id)
self.client.delete_internet_gateway(InternetGatewayId=gw_id)
self.cancelResourceCleanUp(res_clean)
@base.skip_without_vpc()
@ -292,16 +284,15 @@ class TagTest(base.EC2TestCase):
self._test_tag_resource(ni_id, 'network-interface', describe_func)
data = self.client.delete_network_interface(
NetworkInterfaceId=ni_id)
self.client.delete_network_interface(NetworkInterfaceId=ni_id)
self.cancelResourceCleanUp(res_clean)
self.get_network_interface_waiter().wait_delete(ni_id)
data = self.client.delete_subnet(SubnetId=subnet_id)
self.client.delete_subnet(SubnetId=subnet_id)
self.cancelResourceCleanUp(subnet_clean)
self.get_subnet_waiter().wait_delete(subnet_id)
data = self.client.delete_vpc(VpcId=vpc_id)
self.client.delete_vpc(VpcId=vpc_id)
self.cancelResourceCleanUp(dv_clean)
self.get_vpc_waiter().wait_delete(vpc_id)
@ -325,10 +316,10 @@ class TagTest(base.EC2TestCase):
self._test_tag_resource(rt_id, 'route-table', describe_func)
data = self.client.delete_route_table(RouteTableId=rt_id)
self.client.delete_route_table(RouteTableId=rt_id)
self.cancelResourceCleanUp(res_clean)
data = self.client.delete_vpc(VpcId=vpc_id)
self.client.delete_vpc(VpcId=vpc_id)
self.cancelResourceCleanUp(dv_clean)
self.get_vpc_waiter().wait_delete(vpc_id)
@ -358,10 +349,10 @@ class TagTest(base.EC2TestCase):
self._test_tag_resource(group_id, 'security-group', describe_func)
data = self.client.delete_security_group(GroupId=group_id)
self.client.delete_security_group(GroupId=group_id)
self.cancelResourceCleanUp(res_clean)
data = self.client.delete_vpc(VpcId=vpc_id)
self.client.delete_vpc(VpcId=vpc_id)
self.cancelResourceCleanUp(dv_clean)
self.get_vpc_waiter().wait_delete(vpc_id)
@ -380,7 +371,7 @@ class TagTest(base.EC2TestCase):
self._test_tag_resource(snapshot_id, 'snapshot', describe_func)
data = self.client.delete_snapshot(SnapshotId=snapshot_id)
self.client.delete_snapshot(SnapshotId=snapshot_id)
self.cancelResourceCleanUp(res_clean)
self.get_snapshot_waiter().wait_delete(snapshot_id)
@ -406,11 +397,11 @@ class TagTest(base.EC2TestCase):
self._test_tag_resource(subnet_id, 'subnet', describe_func)
data = self.client.delete_subnet(SubnetId=subnet_id)
self.client.delete_subnet(SubnetId=subnet_id)
self.cancelResourceCleanUp(res_clean)
self.get_subnet_waiter().wait_delete(subnet_id)
data = self.client.delete_vpc(VpcId=vpc_id)
self.client.delete_vpc(VpcId=vpc_id)
self.cancelResourceCleanUp(dv_clean)
self.get_vpc_waiter().wait_delete(vpc_id)
@ -429,6 +420,6 @@ class TagTest(base.EC2TestCase):
self._test_tag_resource(vpc_id, 'vpc', describe_func)
data = self.client.delete_vpc(VpcId=vpc_id)
self.client.delete_vpc(VpcId=vpc_id)
self.cancelResourceCleanUp(dv_clean)
self.get_vpc_waiter().wait_delete(vpc_id)

View File

@ -45,7 +45,7 @@ class VolumeTest(base.EC2TestCase):
self.assertIsNotNone(data['CreateTime'])
self.assertEqual(CONF.aws.aws_zone, data['AvailabilityZone'])
data = self.client.delete_volume(VolumeId=volume_id)
self.client.delete_volume(VolumeId=volume_id)
self.cancelResourceCleanUp(res_clean)
self.get_volume_waiter().wait_delete(volume_id)
@ -74,7 +74,7 @@ class VolumeTest(base.EC2TestCase):
self.assertTrue(data['Encrypted'])
data = self.client.delete_volume(VolumeId=volume_id)
self.client.delete_volume(VolumeId=volume_id)
self.cancelResourceCleanUp(res_clean)
self.get_volume_waiter().wait_delete(volume_id)
@ -108,11 +108,11 @@ class VolumeTest(base.EC2TestCase):
if 'SnapshotId' in volume:
self.assertIsNone(volume['SnapshotId'])
data = self.client.delete_volume(VolumeId=volume_id_ext)
self.client.delete_volume(VolumeId=volume_id_ext)
self.cancelResourceCleanUp(res_clean_ext)
self.get_volume_waiter().wait_delete(volume_id_ext)
data = self.client.delete_volume(VolumeId=volume_id)
self.client.delete_volume(VolumeId=volume_id)
self.cancelResourceCleanUp(res_clean)
self.get_volume_waiter().wait_delete(volume_id)
@ -138,29 +138,13 @@ class VolumeTest(base.EC2TestCase):
self.assertIn('Events', volume_status)
self.assertIn('VolumeStatus', volume_status)
data = self.client.delete_volume(VolumeId=volume_id)
self.client.delete_volume(VolumeId=volume_id)
self.cancelResourceCleanUp(res_clean)
self.get_volume_waiter().wait_delete(volume_id)
@testtools.skipUnless(CONF.aws.image_id, "image id is not defined")
def test_attach_detach_volume(self):
instance_type = CONF.aws.instance_type
image_id = CONF.aws.image_id
if not image_id:
raise self.skipException('aws image_id does not provided')
kwargs = {
'ImageId': image_id,
'InstanceType': instance_type,
'MinCount': 1,
'MaxCount': 1,
'Placement': {'AvailabilityZone': CONF.aws.aws_zone}
}
data = self.client.run_instances(*[], **kwargs)
instance_id = data['Instances'][0]['InstanceId']
clean_i = self.addResourceCleanUp(self.client.terminate_instances,
InstanceIds=[instance_id])
self.get_instance_waiter().wait_available(instance_id,
final_set=('running'))
instance_id = self.run_instance()
kwargs = {
'Size': 1,
@ -177,7 +161,7 @@ class VolumeTest(base.EC2TestCase):
'InstanceId': instance_id,
'VolumeId': volume_id,
}
data = self.client.attach_volume(*[], **kwargs)
self.client.attach_volume(*[], **kwargs)
clean_vi = self.addResourceCleanUp(self.client.detach_volume,
VolumeId=volume_id)
self.get_volume_attachment_waiter().wait_available(
@ -203,7 +187,7 @@ class VolumeTest(base.EC2TestCase):
self.assertIn('DeviceName', bdms[0])
self.assertIn('Ebs', bdms[0])
data = self.client.detach_volume(VolumeId=volume_id)
self.client.detach_volume(VolumeId=volume_id)
self.cancelResourceCleanUp(clean_vi)
self.get_volume_attachment_waiter().wait_delete(volume_id)
@ -213,33 +197,16 @@ class VolumeTest(base.EC2TestCase):
self.assertEqual('available', volume['State'])
self.assertEqual(0, len(volume['Attachments']))
data = self.client.delete_volume(VolumeId=volume_id)
self.client.delete_volume(VolumeId=volume_id)
self.cancelResourceCleanUp(clean_v)
self.get_volume_waiter().wait_delete(volume_id)
data = self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(clean_i)
self.client.terminate_instances(InstanceIds=[instance_id])
self.get_instance_waiter().wait_delete(instance_id)
@testtools.skipUnless(CONF.aws.image_id, "image id is not defined")
def test_attaching_stage(self):
instance_type = CONF.aws.instance_type
image_id = CONF.aws.image_id
if not image_id:
raise self.skipException('aws image_id does not provided')
kwargs = {
'ImageId': image_id,
'InstanceType': instance_type,
'MinCount': 1,
'MaxCount': 1,
'Placement': {'AvailabilityZone': CONF.aws.aws_zone}
}
data = self.client.run_instances(*[], **kwargs)
instance_id = data['Instances'][0]['InstanceId']
clean_i = self.addResourceCleanUp(self.client.terminate_instances,
InstanceIds=[instance_id])
self.get_instance_waiter().wait_available(instance_id,
final_set=('running'))
instance_id = self.run_instance()
data = self.client.create_volume(
AvailabilityZone=CONF.aws.aws_zone, Size=1)
@ -267,39 +234,22 @@ class VolumeTest(base.EC2TestCase):
self.get_volume_attachment_waiter().wait_available(
volume_id, final_set=('attached'))
data = self.client.detach_volume(VolumeId=volume_id)
self.client.detach_volume(VolumeId=volume_id)
self.cancelResourceCleanUp(clean_vi)
self.get_volume_attachment_waiter().wait_delete(volume_id)
data = self.client.delete_volume(VolumeId=volume_id)
self.client.delete_volume(VolumeId=volume_id)
self.cancelResourceCleanUp(clean_v)
self.get_volume_waiter().wait_delete(volume_id)
data = self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(clean_i)
self.client.terminate_instances(InstanceIds=[instance_id])
self.get_instance_waiter().wait_delete(instance_id)
@testtools.skipUnless(CONF.aws.run_incompatible_tests,
"Volume statuses are not implemented")
@testtools.skipUnless(CONF.aws.image_id, "image id is not defined")
def test_delete_detach_attached_volume(self):
instance_type = CONF.aws.instance_type
image_id = CONF.aws.image_id
if not image_id:
raise self.skipException('aws image_id does not provided')
kwargs = {
'ImageId': image_id,
'InstanceType': instance_type,
'MinCount': 1,
'MaxCount': 1,
'Placement': {'AvailabilityZone': CONF.aws.aws_zone}
}
data = self.client.run_instances(*[], **kwargs)
instance_id = data['Instances'][0]['InstanceId']
clean_i = self.addResourceCleanUp(self.client.terminate_instances,
InstanceIds=[instance_id])
self.get_instance_waiter().wait_available(instance_id,
final_set=('running'))
instance_id = self.run_instance()
kwargs = {
'Size': 1,
@ -316,7 +266,7 @@ class VolumeTest(base.EC2TestCase):
'InstanceId': instance_id,
'VolumeId': volume_id,
}
data = self.client.attach_volume(*[], **kwargs)
self.client.attach_volume(*[], **kwargs)
clean_vi = self.addResourceCleanUp(self.client.detach_volume,
VolumeId=volume_id)
self.get_volume_attachment_waiter().wait_available(
@ -335,7 +285,7 @@ class VolumeTest(base.EC2TestCase):
self.client.delete_volume,
VolumeId=volume_id)
data = self.client.detach_volume(VolumeId=volume_id)
self.client.detach_volume(VolumeId=volume_id)
self.cancelResourceCleanUp(clean_vi)
self.get_volume_attachment_waiter().wait_delete(volume_id)
@ -343,7 +293,7 @@ class VolumeTest(base.EC2TestCase):
self.client.detach_volume,
VolumeId=volume_id)
data = self.client.delete_volume(VolumeId=volume_id)
self.client.delete_volume(VolumeId=volume_id)
self.cancelResourceCleanUp(clean_v)
self.get_volume_waiter().wait_delete(volume_id)
@ -351,29 +301,12 @@ class VolumeTest(base.EC2TestCase):
self.client.detach_volume,
VolumeId=volume_id)
data = self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(clean_i)
self.client.terminate_instances(InstanceIds=[instance_id])
self.get_instance_waiter().wait_delete(instance_id)
@testtools.skipUnless(CONF.aws.image_id, "image id is not defined")
def test_volume_auto_termination_swithed_off(self):
instance_type = CONF.aws.instance_type
image_id = CONF.aws.image_id
if not image_id:
raise self.skipException('aws image_id does not provided')
kwargs = {
'ImageId': image_id,
'InstanceType': instance_type,
'MinCount': 1,
'MaxCount': 1,
'Placement': {'AvailabilityZone': CONF.aws.aws_zone}
}
data = self.client.run_instances(*[], **kwargs)
instance_id = data['Instances'][0]['InstanceId']
clean_i = self.addResourceCleanUp(self.client.terminate_instances,
InstanceIds=[instance_id])
self.get_instance_waiter().wait_available(instance_id,
final_set=('running'))
instance_id = self.run_instance()
kwargs = {
'Size': 1,
@ -390,13 +323,12 @@ class VolumeTest(base.EC2TestCase):
'InstanceId': instance_id,
'VolumeId': volume_id,
}
data = self.client.attach_volume(*[], **kwargs)
self.client.attach_volume(*[], **kwargs)
self.addResourceCleanUp(self.client.detach_volume, VolumeId=volume_id)
self.get_volume_attachment_waiter().wait_available(
volume_id, final_set=('attached'))
data = self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(clean_i)
self.client.terminate_instances(InstanceIds=[instance_id])
self.get_instance_waiter().wait_delete(instance_id)
data = self.client.describe_volumes(VolumeIds=[volume_id])
@ -406,31 +338,15 @@ class VolumeTest(base.EC2TestCase):
if 'Attachments' in volume:
self.assertEqual(0, len(volume['Attachments']))
data = self.client.delete_volume(VolumeId=volume_id)
self.client.delete_volume(VolumeId=volume_id)
self.cancelResourceCleanUp(clean_v)
self.get_volume_waiter().wait_delete(volume_id)
@testtools.skipUnless(CONF.aws.run_incompatible_tests,
"modify_instance_attribute is not implemented")
@testtools.skipUnless(CONF.aws.image_id, "image id is not defined")
def test_volume_auto_termination_swithed_on(self):
instance_type = CONF.aws.instance_type
image_id = CONF.aws.image_id
if not image_id:
raise self.skipException('aws image_id does not provided')
kwargs = {
'ImageId': image_id,
'InstanceType': instance_type,
'MinCount': 1,
'MaxCount': 1,
'Placement': {'AvailabilityZone': CONF.aws.aws_zone}
}
data = self.client.run_instances(*[], **kwargs)
instance_id = data['Instances'][0]['InstanceId']
clean_i = self.addResourceCleanUp(self.client.terminate_instances,
InstanceIds=[instance_id])
self.get_instance_waiter().wait_available(instance_id,
final_set=('running'))
instance_id = self.run_instance()
kwargs = {
'Size': 1,
@ -446,7 +362,7 @@ class VolumeTest(base.EC2TestCase):
'InstanceId': instance_id,
'VolumeId': volume_id,
}
data = self.client.attach_volume(*[], **kwargs)
self.client.attach_volume(*[], **kwargs)
self.addResourceCleanUp(self.client.detach_volume, VolumeId=volume_id)
self.get_volume_attachment_waiter().wait_available(
volume_id, final_set=('attached'))
@ -457,10 +373,9 @@ class VolumeTest(base.EC2TestCase):
'Ebs': {'VolumeId': volume_id,
'DeleteOnTermination': True}}],
}
data = self.client.modify_instance_attribute(*[], **kwargs)
self.client.modify_instance_attribute(*[], **kwargs)
data = self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(clean_i)
self.client.terminate_instances(InstanceIds=[instance_id])
self.get_instance_waiter().wait_delete(instance_id)
self.assertRaises('InvalidVolume.NotFound',

View File

@ -531,7 +531,51 @@ class EC2TestCase(base.BaseTestCase):
"""
instance = self.get_instance(instance_id)
if not device_name:
device_name = instance['RootDeviceName']
bdms = instance['BlockDeviceMappings']
device_name = instance.get('RootDeviceName')
if not device_name:
return None
bdms = instance.get('BlockDeviceMappings')
if bdms is None:
return None
bdt = [bdt for bdt in bdms if bdt['DeviceName'] == device_name]
return None if len(bdt) == 0 else bdt[0]
def run_instance(self, clean_dict=None, **kwargs):
kwargs.setdefault('ImageId', CONF.aws.image_id)
kwargs.setdefault('InstanceType', CONF.aws.instance_type)
kwargs.setdefault('Placement', {'AvailabilityZone': CONF.aws.aws_zone})
kwargs['MinCount'] = 1
kwargs['MaxCount'] = 1
data = self.client.run_instances(*[], **kwargs)
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'))
# NOTE(andrey-mp): openstack has a bug - it doesn't delete volume
# that is created from EBS image
volume_ids = list()
instance = self.get_instance(instance_id)
bdms = instance.get('BlockDeviceMappings')
if bdms is None:
return instance_id
for bdm in bdms:
if 'Ebs' not in bdm:
continue
if not bdm['Ebs'].get('DeleteOnTermination', False):
volume_id = bdm['Ebs'].get('VolumeId')
volume_ids.append(volume_id)
if volume_ids:
# NOTE(andrey-mp): instance must be deleted first.
self.cancelResourceCleanUp(res_clean)
for volume_id in volume_ids:
self.addResourceCleanUp(self.client.delete_volume,
VolumeId=volume_id)
res_clean = self.addResourceCleanUp(
self.client.terminate_instances, InstanceIds=[instance_id])
if clean_dict is not None:
clean_dict['instance'] = res_clean
return instance_id

View File

@ -27,20 +27,6 @@ LOG = log.getLogger(__name__)
class BaseScenarioTest(base.EC2TestCase):
def run_instance(self, **kwargs):
kwargs.setdefault('ImageId', CONF.aws.image_id)
kwargs.setdefault('InstanceType', CONF.aws.instance_type)
kwargs.setdefault('Placement', {'AvailabilityZone': CONF.aws.aws_zone})
kwargs['MinCount'] = 1
kwargs['MaxCount'] = 1
data = self.client.run_instances(*[], **kwargs)
instance_id = data['Instances'][0]['InstanceId']
self.addResourceCleanUp(self.client.terminate_instances,
InstanceIds=[instance_id])
self.get_instance_waiter().wait_available(instance_id,
final_set=('running'))
return instance_id
def get_instance_ip(self, instance_id):
instance = self.get_instance(instance_id)
public_ip = instance.get('PublicIpAddress')

View File

@ -67,17 +67,9 @@ class EC2_EBSInstanceTuneBDM(base.EC2TestCase):
Launch EBS-backed instance with left root device after termination
"""
instance_type = CONF.aws.instance_type
data = self.client.run_instances(
ImageId=self.image_id, InstanceType=instance_type,
Placement={'AvailabilityZone': self.zone}, MinCount=1, MaxCount=1,
instance_id = self.run_instance(ImageId=self.image_id,
BlockDeviceMappings=[{'DeviceName': self.root_device_name,
'Ebs': {'DeleteOnTermination': False}}])
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, self.root_device_name)
self.assertIsNotNone(bdt)
@ -92,7 +84,6 @@ class EC2_EBSInstanceTuneBDM(base.EC2TestCase):
self.assertEqual(1, len(data['Volumes']))
self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(res_clean)
self.get_instance_waiter().wait_delete(instance_id)
self.get_volume_waiter().wait_available(volume_id)
@ -109,17 +100,9 @@ class EC2_EBSInstanceTuneBDM(base.EC2TestCase):
"""Launch EBS-backed instance with resizing root device."""
new_size = int(math.ceil(self.root_device_size * 1.1))
instance_type = CONF.aws.instance_type
data = self.client.run_instances(
ImageId=self.image_id, InstanceType=instance_type,
Placement={'AvailabilityZone': self.zone}, MinCount=1, MaxCount=1,
instance_id = self.run_instance(ImageId=self.image_id,
BlockDeviceMappings=[{'DeviceName': self.root_device_name,
'Ebs': {'VolumeSize': new_size}}])
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, self.root_device_name)
self.assertIsNotNone(bdt)
@ -133,7 +116,6 @@ class EC2_EBSInstanceTuneBDM(base.EC2TestCase):
self.assertEqual(new_size, volume['Size'])
self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(res_clean)
self.get_instance_waiter().wait_delete(instance_id)
@testtools.skipUnless(
@ -145,17 +127,9 @@ class EC2_EBSInstanceTuneBDM(base.EC2TestCase):
device_name_prefix = _get_device_name_prefix(self.root_device_name)
device_name = device_name_prefix + 'd'
instance_type = CONF.aws.instance_type
data = self.client.run_instances(
ImageId=self.image_id, InstanceType=instance_type,
Placement={'AvailabilityZone': self.zone}, MinCount=1, MaxCount=1,
instance_id = self.run_instance(ImageId=self.image_id,
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)
@ -169,7 +143,6 @@ class EC2_EBSInstanceTuneBDM(base.EC2TestCase):
self.assertEqual(1, volume['Size'])
self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(res_clean)
self.get_instance_waiter().wait_delete(instance_id)
@ -347,17 +320,9 @@ class EC2_EBSInstanceSnapshot(base.EC2TestCase):
def test_create_ebs_instance_snapshot(self):
"""Create snapshot of EBS-backed instance and check it."""
instance_type = CONF.aws.instance_type
data = self.client.run_instances(
ImageId=self.image_id, InstanceType=instance_type,
Placement={'AvailabilityZone': self.zone}, MinCount=1, MaxCount=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'))
instance = self.get_instance(instance_id)
instance_id = self.run_instance(ImageId=self.image_id)
instance = self.get_instance(instance_id)
bdt = self.get_instance_bdm(instance_id, None)
self.assertIsNotNone(bdt)
volume_id = bdt['Ebs'].get('VolumeId')
@ -368,7 +333,6 @@ class EC2_EBSInstanceSnapshot(base.EC2TestCase):
final_set=('stopped'))
self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(res_clean)
self.get_instance_waiter().wait_delete(instance_id)
data = self.client.create_snapshot(VolumeId=volume_id)
@ -397,19 +361,11 @@ class EC2_EBSInstanceSnapshot(base.EC2TestCase):
ImageId=image_id)
self.get_image_waiter().wait_available(image_id)
data = self.client.run_instances(
ImageId=image_id, InstanceType=instance_type,
Placement={'AvailabilityZone': self.zone}, MinCount=1, MaxCount=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'))
instance_id = self.run_instance(ImageId=image_id)
# NOTE(andrey-mp): if instance will run then test will pass
self.client.terminate_instances(InstanceIds=[instance_id])
self.cancelResourceCleanUp(res_clean)
self.get_instance_waiter().wait_delete(instance_id)
self.client.deregister_image(ImageId=image_id)
@ -442,16 +398,11 @@ class EC2_EBSInstanceResizeRootDevice(base.EC2TestCase):
"Unexpected Forbidden raised: Can't detach root device volume")
def test_resize_root_ebs_device(self):
"""Resize root device of launched instance."""
instance_type = CONF.aws.instance_type
data = self.client.run_instances(
ImageId=self.image_id, InstanceType=instance_type,
Placement={'AvailabilityZone': self.zone}, MinCount=1, MaxCount=1)
instance = data['Instances'][0]
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'))
clean_dict = dict()
instance_id = self.run_instance(clean_dict=clean_dict,
ImageId=self.image_id)
res_clean = clean_dict['instance']
instance = self.get_instance(instance_id)
bdt = self.get_instance_bdm(instance_id, None)
self.assertIsNotNone(bdt)
@ -497,6 +448,7 @@ class EC2_EBSInstanceResizeRootDevice(base.EC2TestCase):
volume_id2, final_set=('attached'))
# NOTE(andrey-mp): move this cleanup operation to the end of trash
# (it will remove first)
self.cancelResourceCleanUp(res_clean)
res_clean = self.addResourceCleanUp(self.client.terminate_instances,
InstanceIds=[instance_id])

View File

@ -16,6 +16,7 @@
from oslo_log import log
from tempest_lib.common import ssh
from tempest_lib.common.utils import data_utils
import testtools
from ec2api.tests.functional import base
from ec2api.tests.functional import config
@ -27,14 +28,8 @@ LOG = log.getLogger(__name__)
class InstanceRestartTest(scenario_base.BaseScenarioTest):
@classmethod
@base.safe_setup
def setUpClass(cls):
super(InstanceRestartTest, cls).setUpClass()
if not CONF.aws.image_id_ubuntu:
raise cls.skipException('ubuntu image_id does not provided')
cls.zone = CONF.aws.aws_zone
@testtools.skipUnless(CONF.aws.image_id_ubuntu,
"ubuntu image id is not defined")
def test_stop_start_instance(self):
key_name = data_utils.rand_name('testkey')
pkey = self.create_key_pair(key_name)
@ -59,6 +54,8 @@ class InstanceRestartTest(scenario_base.BaseScenarioTest):
data = ssh_client.exec_command('last -x')
self.assertIn("shutdown", data)
@testtools.skipUnless(CONF.aws.image_id_ubuntu,
"ubuntu image id is not defined")
def test_reboot_instance(self):
key_name = data_utils.rand_name('testkey')
pkey = self.create_key_pair(key_name)

View File

@ -16,6 +16,7 @@
import time
from oslo_log import log
import testtools
from ec2api.tests.functional import base
from ec2api.tests.functional import config
@ -28,11 +29,8 @@ LOG = log.getLogger(__name__)
class VpcAddressTest(scenario_base.BaseScenarioTest):
@base.skip_without_vpc()
@testtools.skipUnless(CONF.aws.image_id, "image id is not defined")
def test_auto_diassociate_address(self):
image_id = CONF.aws.image_id
if not image_id:
raise self.skipException('aws image_id does not provided')
vpc_id, subnet_id = self.create_vpc_and_subnet('10.3.0.0/20')
ni_id1 = self.create_network_interface(subnet_id)
self.create_and_attach_internet_gateway(vpc_id)