Fix up ec2 tests for flavors on instances

Change-Id: I5c5526a970e68bc067449cea2ac271233cf60970
This commit is contained in:
Dan Smith 2015-06-16 09:37:26 -07:00
parent db74457d90
commit 06a8518697
2 changed files with 170 additions and 160 deletions

View File

@ -21,6 +21,7 @@ import uuid
import fixtures import fixtures
from oslo_config import cfg from oslo_config import cfg
from oslo_serialization import jsonutils
from nova.api.ec2 import cloud from nova.api.ec2 import cloud
from nova.api.ec2 import ec2utils from nova.api.ec2 import ec2utils
@ -497,23 +498,29 @@ class CinderCloudTestCase(test.TestCase):
def _setUpBlockDeviceMapping(self): def _setUpBlockDeviceMapping(self):
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
sys_meta = flavors.save_flavor_info( flavorinfo = jsonutils.dumps({
{}, flavors.get_flavor(1)) 'cur': flavors.get_flavor(1).obj_to_primitive(),
'old': None,
'new': None,
})
inst0 = db.instance_create(self.context, inst0 = db.instance_create(self.context,
{'image_ref': image_uuid, {'image_ref': image_uuid,
'instance_type_id': 1, 'instance_type_id': 1,
'root_device_name': '/dev/sdb1', 'root_device_name': '/dev/sdb1',
'system_metadata': sys_meta}) 'extra': {'flavor': flavorinfo},
'system_metadata': {}})
inst1 = db.instance_create(self.context, inst1 = db.instance_create(self.context,
{'image_ref': image_uuid, {'image_ref': image_uuid,
'instance_type_id': 1, 'instance_type_id': 1,
'root_device_name': '/dev/sdc1', 'root_device_name': '/dev/sdc1',
'system_metadata': sys_meta}) 'extra': {'flavor': flavorinfo},
'system_metadata': {}})
inst2 = db.instance_create(self.context, inst2 = db.instance_create(self.context,
{'image_ref': '', {'image_ref': '',
'instance_type_id': 1, 'instance_type_id': 1,
'root_device_name': '/dev/vda', 'root_device_name': '/dev/vda',
'system_metadata': sys_meta}) 'extra': {'flavor': flavorinfo},
'system_metadata': {}})
instance0_uuid = inst0['uuid'] instance0_uuid = inst0['uuid']
mappings0 = [ mappings0 = [

View File

@ -908,26 +908,30 @@ class CloudTestCase(test.TestCase):
self._stub_instance_get_with_fixed_ips('get') self._stub_instance_get_with_fixed_ips('get')
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
sys_meta = flavors.save_flavor_info( inst1 = objects.Instance(context=self.context,
{}, flavors.get_flavor(1)) reservation_id='a',
image_ref=image_uuid,
sys_meta['EC2_client_token'] = "client-token-1" instance_type_id=1,
inst1 = db.instance_create(self.context, {'reservation_id': 'a', host='host1',
'image_ref': image_uuid, hostname='server-1234',
'instance_type_id': 1, vm_state='active',
'host': 'host1', system_metadata={
'hostname': 'server-1234', 'EC2_client_token': 'client-token-1',
'vm_state': 'active', },
'system_metadata': sys_meta}) flavor=flavors.get_flavor(1))
inst1.create()
sys_meta['EC2_client_token'] = "client-token-2" inst2 = objects.Instance(context=self.context,
inst2 = db.instance_create(self.context, {'reservation_id': 'a', reservation_id='a',
'image_ref': image_uuid, image_ref=image_uuid,
'instance_type_id': 1, instance_type_id=1,
'host': 'host2', host='host2',
'hostname': 'server-4321', hostname='server-4321',
'vm_state': 'active', vm_state='active',
'system_metadata': sys_meta}) system_metadata={
'EC2_client_token': 'client-token-2',
},
flavor=flavors.get_flavor(1))
inst2.create()
comp1 = db.service_create(self.context, {'host': 'host1', comp1 = db.service_create(self.context, {'host': 'host1',
'topic': "compute"}) 'topic': "compute"})
agg = db.aggregate_create(self.context, agg = db.aggregate_create(self.context,
@ -1019,39 +1023,37 @@ class CloudTestCase(test.TestCase):
utc = iso8601.iso8601.Utc() utc = iso8601.iso8601.Utc()
flavor = flavors.get_flavor(1) flavor = flavors.get_flavor(1)
# Create some test images # Create some test images
sys_meta = flavors.save_flavor_info(
{}, flavor)
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
inst1_kwargs = { inst1 = objects.Instance(context=self.context,
'reservation_id': 'a', reservation_id='a',
'image_ref': image_uuid, image_ref=image_uuid,
'instance_type_id': flavor.id, instance_type_id=flavor.id,
'host': 'host1', host='host1',
'vm_state': 'active', vm_state='active',
'launched_at': timeutils.utcnow(), launched_at=timeutils.utcnow(),
'hostname': 'server-1111', hostname='server-1111',
'created_at': datetime.datetime(2012, 5, 1, 1, 1, 1, created_at=datetime.datetime(
tzinfo=utc), 2012, 5, 1, 1, 1, 1,
'system_metadata': sys_meta tzinfo=utc),
} flavor=flavor,
system_metadata={})
inst1.create()
inst2 = objects.Instance(context=self.context,
reservation_id='b',
image_ref=image_uuid,
instance_type_id=flavor.id,
host='host2',
vm_state='active',
launched_at=timeutils.utcnow(),
hostname='server-1112',
created_at=datetime.datetime(
2012, 5, 1, 1, 1, 2,
tzinfo=utc),
flavor=flavor,
system_metadata={})
inst2.create()
inst2_kwargs = {
'reservation_id': 'b',
'image_ref': image_uuid,
'instance_type_id': flavor.id,
'host': 'host2',
'vm_state': 'active',
'launched_at': timeutils.utcnow(),
'hostname': 'server-1112',
'created_at': datetime.datetime(2012, 5, 1, 1, 1, 2,
tzinfo=utc),
'system_metadata': sys_meta
}
inst1 = db.instance_create(self.context, inst1_kwargs)
ec2_id1 = ec2utils.id_to_ec2_inst_id(inst1['uuid']) ec2_id1 = ec2utils.id_to_ec2_inst_id(inst1['uuid'])
inst2 = db.instance_create(self.context, inst2_kwargs)
ec2_id2 = ec2utils.id_to_ec2_inst_id(inst2['uuid']) ec2_id2 = ec2utils.id_to_ec2_inst_id(inst2['uuid'])
# Create some tags # Create some tags
@ -1218,41 +1220,36 @@ class CloudTestCase(test.TestCase):
self._stub_instance_get_with_fixed_ips('get') self._stub_instance_get_with_fixed_ips('get')
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
sys_meta = flavors.save_flavor_info( inst_base = objects.Instance(context=self.context,
{}, flavors.get_flavor(1)) reservation_id='a',
inst_base = { image_ref=image_uuid,
'reservation_id': 'a', instance_type_id=1,
'image_ref': image_uuid, vm_state='active',
'instance_type_id': 1, system_metadata={},
'vm_state': 'active', flavor=flavors.get_flavor(1))
'system_metadata': sys_meta,
}
utc = iso8601.iso8601.Utc() utc = iso8601.iso8601.Utc()
inst1_kwargs = {} inst1 = inst_base.obj_clone()
inst1_kwargs.update(inst_base) inst1.host = 'host1'
inst1_kwargs['host'] = 'host1' inst1.hostname = 'server-1111'
inst1_kwargs['hostname'] = 'server-1111' inst1.created_at = datetime.datetime(2012, 5, 1, 1, 1, 1,
inst1_kwargs['created_at'] = datetime.datetime(2012, 5, 1, 1, 1, 1, tzinfo=utc)
tzinfo=utc) inst1.create()
inst1 = db.instance_create(self.context, inst1_kwargs)
inst2_kwargs = {} inst2 = inst_base.obj_clone()
inst2_kwargs.update(inst_base) inst2.host = 'host2'
inst2_kwargs['host'] = 'host2' inst2.hostname = 'server-2222'
inst2_kwargs['hostname'] = 'server-2222' inst2.created_at = datetime.datetime(2012, 2, 1, 1, 1, 1,
inst2_kwargs['created_at'] = datetime.datetime(2012, 2, 1, 1, 1, 1, tzinfo=utc)
tzinfo=utc) inst2.create()
inst2 = db.instance_create(self.context, inst2_kwargs)
inst3_kwargs = {} inst3 = inst_base.obj_clone()
inst3_kwargs.update(inst_base) inst3.host = 'host3'
inst3_kwargs['host'] = 'host3' inst3.hostname = 'server-3333'
inst3_kwargs['hostname'] = 'server-3333' inst3.created_at = datetime.datetime(2012, 2, 5, 1, 1, 1,
inst3_kwargs['created_at'] = datetime.datetime(2012, 2, 5, 1, 1, 1, tzinfo=utc)
tzinfo=utc) inst3.create()
inst3 = db.instance_create(self.context, inst3_kwargs)
comp1 = db.service_create(self.context, {'host': 'host1', comp1 = db.service_create(self.context, {'host': 'host1',
'topic': "compute"}) 'topic': "compute"})
@ -1262,15 +1259,15 @@ class CloudTestCase(test.TestCase):
result = self.cloud.describe_instances(self.context) result = self.cloud.describe_instances(self.context)
result = result['reservationSet'][0]['instancesSet'] result = result['reservationSet'][0]['instancesSet']
self.assertEqual(result[0]['launchTime'], inst2_kwargs['created_at']) self.assertEqual(result[0]['launchTime'], inst2.created_at)
self.assertEqual(result[1]['launchTime'], inst3_kwargs['created_at']) self.assertEqual(result[1]['launchTime'], inst3.created_at)
self.assertEqual(result[2]['launchTime'], inst1_kwargs['created_at']) self.assertEqual(result[2]['launchTime'], inst1.created_at)
db.instance_destroy(self.context, inst1['uuid']) db.instance_destroy(self.context, inst1.uuid)
db.instance_destroy(self.context, inst2['uuid']) db.instance_destroy(self.context, inst2.uuid)
db.instance_destroy(self.context, inst3['uuid']) db.instance_destroy(self.context, inst3.uuid)
db.service_destroy(self.context, comp1['id']) db.service_destroy(self.context, comp1.id)
db.service_destroy(self.context, comp2['id']) db.service_destroy(self.context, comp2.id)
def test_describe_instance_state(self): def test_describe_instance_state(self):
# Makes sure describe_instances for instanceState works. # Makes sure describe_instances for instanceState works.
@ -1278,14 +1275,15 @@ class CloudTestCase(test.TestCase):
def test_instance_state(expected_code, expected_name, def test_instance_state(expected_code, expected_name,
power_state_, vm_state_, values=None): power_state_, vm_state_, values=None):
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
sys_meta = flavors.save_flavor_info( inst = objects.Instance(context=self.context,
{}, flavors.get_flavor(1)) flavor=flavors.get_flavor(1),
values = values or {} image_ref=image_uuid,
values.update({'image_ref': image_uuid, 'instance_type_id': 1, instance_type_id=1,
'power_state': power_state_, 'vm_state': vm_state_, power_state=power_state_,
'system_metadata': sys_meta}) vm_state=vm_state_,
inst = db.instance_create(self.context, values) system_metadata={},
**(values or {}))
inst.create()
instance_id = ec2utils.id_to_ec2_inst_id(inst['uuid']) instance_id = ec2utils.id_to_ec2_inst_id(inst['uuid'])
result = self.cloud.describe_instances(self.context, result = self.cloud.describe_instances(self.context,
instance_id=[instance_id]) instance_id=[instance_id])
@ -1297,7 +1295,7 @@ class CloudTestCase(test.TestCase):
self.assertEqual(code, expected_code) self.assertEqual(code, expected_code)
self.assertEqual(name, expected_name) self.assertEqual(name, expected_name)
db.instance_destroy(self.context, inst['uuid']) db.instance_destroy(self.context, inst.uuid)
test_instance_state(inst_state.RUNNING_CODE, inst_state.RUNNING, test_instance_state(inst_state.RUNNING_CODE, inst_state.RUNNING,
power_state.RUNNING, vm_states.ACTIVE) power_state.RUNNING, vm_states.ACTIVE)
@ -1313,73 +1311,78 @@ class CloudTestCase(test.TestCase):
self._stub_instance_get_with_fixed_ips('get') self._stub_instance_get_with_fixed_ips('get')
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
sys_meta = flavors.save_flavor_info( inst = objects.Instance(context=self.context,
{}, flavors.get_flavor(1)) reservation_id='a',
inst1 = db.instance_create(self.context, {'reservation_id': 'a', image_ref=image_uuid,
'image_ref': image_uuid, instance_type_id=1,
'instance_type_id': 1, hostname='server-1234',
'hostname': 'server-1234', vm_state='active',
'vm_state': 'active', system_metadata={},
'system_metadata': sys_meta}) flavor=flavors.get_flavor(1))
inst.create()
comp1 = db.service_create(self.context, {'host': 'host1', comp1 = db.service_create(self.context, {'host': 'host1',
'topic': "compute"}) 'topic': "compute"})
result = self.cloud.describe_instances(self.context) result = self.cloud.describe_instances(self.context)
result = result['reservationSet'][0] result = result['reservationSet'][0]
self.assertEqual(len(result['instancesSet']), 1) self.assertEqual(len(result['instancesSet']), 1)
instance = result['instancesSet'][0] instance = result['instancesSet'][0]
instance_id = ec2utils.id_to_ec2_inst_id(inst1['uuid']) instance_id = ec2utils.id_to_ec2_inst_id(inst.uuid)
self.assertEqual(instance['instanceId'], instance_id) self.assertEqual(instance['instanceId'], instance_id)
self.assertEqual(instance['ipAddress'], '1.2.3.4') self.assertEqual(instance['ipAddress'], '1.2.3.4')
self.assertEqual(instance['dnsName'], '1.2.3.4') self.assertEqual(instance['dnsName'], '1.2.3.4')
self.assertEqual(instance['privateDnsName'], 'server-1234') self.assertEqual(instance['privateDnsName'], 'server-1234')
self.assertEqual(instance['privateIpAddress'], '192.168.0.3') self.assertEqual(instance['privateIpAddress'], '192.168.0.3')
self.assertNotIn('dnsNameV6', instance) self.assertNotIn('dnsNameV6', instance)
db.instance_destroy(self.context, inst1['uuid']) db.instance_destroy(self.context, inst.uuid)
db.service_destroy(self.context, comp1['id']) db.service_destroy(self.context, comp1['id'])
def test_describe_instances_deleted(self): def test_describe_instances_deleted(self):
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
sys_meta = flavors.save_flavor_info( inst1 = objects.Instance(context=self.context,
{}, flavors.get_flavor(1)) reservation_id='a',
args1 = {'reservation_id': 'a', image_ref=image_uuid,
'image_ref': image_uuid, instance_type_id=1,
'instance_type_id': 1, host='host1',
'host': 'host1', vm_state='active',
'vm_state': 'active', system_metadata={},
'system_metadata': sys_meta} flavor=flavors.get_flavor(1))
inst1 = db.instance_create(self.context, args1) inst1.create()
args2 = {'reservation_id': 'b', inst2 = objects.Instance(context=self.context,
'image_ref': image_uuid, reservation_id='b',
'instance_type_id': 1, image_ref=image_uuid,
'host': 'host1', instance_type_id=1,
'vm_state': 'active', host='host2',
'system_metadata': sys_meta} vm_state='active',
inst2 = db.instance_create(self.context, args2) system_metadata={},
db.instance_destroy(self.context, inst1['uuid']) flavor=flavors.get_flavor(1))
inst2.create()
db.instance_destroy(self.context, inst1.uuid)
result = self.cloud.describe_instances(self.context) result = self.cloud.describe_instances(self.context)
self.assertEqual(len(result['reservationSet']), 1) self.assertEqual(len(result['reservationSet']), 1)
result1 = result['reservationSet'][0]['instancesSet'] result1 = result['reservationSet'][0]['instancesSet']
self.assertEqual(result1[0]['instanceId'], self.assertEqual(result1[0]['instanceId'],
ec2utils.id_to_ec2_inst_id(inst2['uuid'])) ec2utils.id_to_ec2_inst_id(inst2.uuid))
def test_describe_instances_with_image_deleted(self): def test_describe_instances_with_image_deleted(self):
image_uuid = 'aebef54a-ed67-4d10-912f-14455edce176' image_uuid = 'aebef54a-ed67-4d10-912f-14455edce176'
sys_meta = flavors.save_flavor_info( inst1 = objects.Instance(context=self.context,
{}, flavors.get_flavor(1)) reservation_id='a',
args1 = {'reservation_id': 'a', image_ref=image_uuid,
'image_ref': image_uuid, instance_type_id=1,
'instance_type_id': 1, host='host1',
'host': 'host1', vm_state='active',
'vm_state': 'active', system_metadata={},
'system_metadata': sys_meta} flavor=flavors.get_flavor(1))
db.instance_create(self.context, args1) inst1.create()
args2 = {'reservation_id': 'b', inst2 = objects.Instance(context=self.context,
'image_ref': image_uuid, reservation_id='b',
'instance_type_id': 1, image_ref=image_uuid,
'host': 'host1', instance_type_id=1,
'vm_state': 'active', host='host1',
'system_metadata': sys_meta} vm_state='active',
db.instance_create(self.context, args2) system_metadata={},
flavor=flavors.get_flavor(1))
inst2.create()
result = self.cloud.describe_instances(self.context) result = self.cloud.describe_instances(self.context)
self.assertEqual(len(result['reservationSet']), 2) self.assertEqual(len(result['reservationSet']), 2)
@ -1389,23 +1392,22 @@ class CloudTestCase(test.TestCase):
self._stub_instance_get_with_fixed_ips('get', get_floating=False) self._stub_instance_get_with_fixed_ips('get', get_floating=False)
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175' image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
sys_meta = flavors.save_flavor_info( inst = objects.Instance(context=self.context,
{}, flavors.get_flavor(1)) reservation='a',
db.instance_create(self.context, {'reservation_id': 'a', image_ref=image_uuid,
'image_ref': image_uuid, instance_type_id=1,
'instance_type_id': 1, host='host1',
'host': 'host1', hostname='server-1234',
'hostname': 'server-1234', vm_state='active',
'vm_state': 'active', system_metadata={},
'system_metadata': sys_meta}) flavor=flavors.get_flavor(1))
inst.create()
result = self.cloud.describe_instances(self.context) result = self.cloud.describe_instances(self.context)
result = result['reservationSet'][0] result = result['reservationSet'][0]
instance = result['instancesSet'][0] instance = result['instancesSet'][0]
self.assertIsNone(instance['dnsName']) self.assertIsNone(instance['dnsName'])
def test_describe_instances_booting_from_a_volume(self): def test_describe_instances_booting_from_a_volume(self):
sys_meta = flavors.save_flavor_info(
{}, flavors.get_flavor(1))
inst = objects.Instance(self.context) inst = objects.Instance(self.context)
inst.reservation_id = 'a' inst.reservation_id = 'a'
inst.image_ref = '' inst.image_ref = ''
@ -1413,7 +1415,8 @@ class CloudTestCase(test.TestCase):
inst.instance_type_id = 1 inst.instance_type_id = 1
inst.vm_state = vm_states.ACTIVE inst.vm_state = vm_states.ACTIVE
inst.host = 'host1' inst.host = 'host1'
inst.system_metadata = sys_meta inst.system_metadata = {}
inst.flavor = flavors.get_flavor(1)
inst.create() inst.create()
result = self.cloud.describe_instances(self.context) result = self.cloud.describe_instances(self.context)
result = result['reservationSet'][0] result = result['reservationSet'][0]
@ -2728,7 +2731,6 @@ class CloudTestCase(test.TestCase):
self.assertTrue(want_objects) self.assertTrue(want_objects)
inst_type = flavors.get_default_flavor() inst_type = flavors.get_default_flavor()
inst_type['name'] = 'fake_type' inst_type['name'] = 'fake_type'
sys_meta = flavors.save_flavor_info({}, inst_type)
secgroups = objects.SecurityGroupList() secgroups = objects.SecurityGroupList()
secgroups.objects.append( secgroups.objects.append(
objects.SecurityGroup(name='fake0')) objects.SecurityGroup(name='fake0'))
@ -2745,7 +2747,8 @@ class CloudTestCase(test.TestCase):
instance.user_data = 'fake-user data' instance.user_data = 'fake-user data'
instance.shutdown_terminate = False instance.shutdown_terminate = False
instance.disable_terminate = False instance.disable_terminate = False
instance.system_metadata = sys_meta instance.system_metadata = {}
instance.flavor = inst_type
return instance return instance
self.stubs.Set(self.cloud.compute_api, 'get', fake_get) self.stubs.Set(self.cloud.compute_api, 'get', fake_get)