Merge "Handle instances not being found in EC2 API responses." into stable/folsom

This commit is contained in:
Jenkins 2012-11-27 15:06:06 +00:00 committed by Gerrit Code Review
commit 7e70428477
3 changed files with 24 additions and 1 deletions

View File

@ -129,7 +129,9 @@ def id_to_ec2_id(instance_id, template='i-%08x'):
def id_to_ec2_inst_id(instance_id):
"""Get or create an ec2 instance ID (i-[base 16 number]) from uuid."""
if utils.is_uuid_like(instance_id):
if instance_id is None:
return None
elif utils.is_uuid_like(instance_id):
ctxt = context.get_admin_context()
int_id = get_int_id_from_instance_uuid(ctxt, instance_id)
return id_to_ec2_id(int_id)

View File

@ -312,6 +312,18 @@ class CloudTestCase(test.TestCase):
self.cloud.disassociate_address,
self.context, public_ip=address)
def test_disassociate_unassociated_address(self):
address = "10.10.10.10"
db.floating_ip_create(self.context,
{'address': address,
'pool': 'nova'})
self.cloud.allocate_address(self.context)
self.cloud.describe_addresses(self.context)
self.assertRaises(exception.InstanceNotFound,
self.cloud.disassociate_address,
self.context, public_ip=address)
db.floating_ip_destroy(self.context, address)
def test_describe_security_groups(self):
"""Makes sure describe_security_groups works and filters results."""
sec = db.security_group_create(self.context,

View File

@ -116,6 +116,15 @@ class ExecutorTestCase(test.TestCase):
result = self._execute(not_found)
self.assertIn('i-00000005', self._extract_message(result))
def test_instance_not_found_none(self):
def not_found(context):
raise exception.InstanceNotFound(instance_id=None)
# NOTE(mikal): we want no exception to be raised here, which was what
# was happening in bug/1080406
result = self._execute(not_found)
self.assertIn('None', self._extract_message(result))
def test_snapshot_not_found(self):
def not_found(context):
raise exception.SnapshotNotFound(snapshot_id=5)