diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-11-21 18:23:54 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-11-21 18:23:54 +0000 |
| commit | 5582d203b77741a005687a87673d9fce11b5ee09 (patch) | |
| tree | 94db2b92daae343a37298b023769e12985b7511a | |
| parent | 2622f40af702ddaa76fd6fa8519f6f2438f85da8 (diff) | |
| parent | c3639847011566f39a7bd08e29bab4a72847a333 (diff) | |
Merge "Handle instances not being found in EC2 API responses."
| -rw-r--r-- | nova/api/ec2/ec2utils.py | 4 | ||||
| -rw-r--r-- | nova/tests/api/ec2/test_cloud.py | 12 | ||||
| -rw-r--r-- | nova/tests/api/ec2/test_middleware.py | 9 |
3 files changed, 24 insertions, 1 deletions
diff --git a/nova/api/ec2/ec2utils.py b/nova/api/ec2/ec2utils.py index d5beb017f..1c2ceea6f 100644 --- a/nova/api/ec2/ec2utils.py +++ b/nova/api/ec2/ec2utils.py @@ -127,7 +127,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 uuidutils.is_uuid_like(instance_id): + if instance_id is None: + return None + elif uuidutils.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) diff --git a/nova/tests/api/ec2/test_cloud.py b/nova/tests/api/ec2/test_cloud.py index fdd8fc90d..64cdb0610 100644 --- a/nova/tests/api/ec2/test_cloud.py +++ b/nova/tests/api/ec2/test_cloud.py @@ -302,6 +302,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, diff --git a/nova/tests/api/ec2/test_middleware.py b/nova/tests/api/ec2/test_middleware.py index 77999e053..f50689028 100644 --- a/nova/tests/api/ec2/test_middleware.py +++ b/nova/tests/api/ec2/test_middleware.py @@ -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) |
