diff options
| author | Vishvananda Ishaya <vishvananda@gmail.com> | 2010-11-17 02:54:07 +0000 |
|---|---|---|
| committer | Tarmac <> | 2010-11-17 02:54:07 +0000 |
| commit | 551fd309fcbfedb99555a81fac6a40f003598fd6 (patch) | |
| tree | 7748a677ddd3855308116c7225101ff5e58fc945 | |
| parent | 9c3fa8b6da2a5b81c989520afa9ca5fb5b90f063 (diff) | |
| parent | db8c0a153df467c645df82b2ed6c2b282eae6850 (diff) | |
ec2_api commands for describe_addresses and associate_address are broken in trunk. This happened during the switch to ec2_id and internal_id. We clearly didn't have any unit tests for this, so I've added a couple in addition to the three line change to actually fix the bugs.
| -rw-r--r-- | nova/api/ec2/cloud.py | 6 | ||||
| -rw-r--r-- | nova/tests/cloud_unittest.py | 31 | ||||
| -rw-r--r-- | nova/tests/network_unittest.py | 2 |
3 files changed, 35 insertions, 4 deletions
diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py index fbe4caa48..e2eaa7c5c 100644 --- a/nova/api/ec2/cloud.py +++ b/nova/api/ec2/cloud.py @@ -679,7 +679,7 @@ class CloudController(object): context.project_id) for floating_ip_ref in iterator: address = floating_ip_ref['address'] - instance_id = None + ec2_id = None if (floating_ip_ref['fixed_ip'] and floating_ip_ref['fixed_ip']['instance']): internal_id = floating_ip_ref['fixed_ip']['instance']['ec2_id'] @@ -717,8 +717,8 @@ class CloudController(object): "args": {"floating_address": floating_ip_ref['address']}}) return {'releaseResponse': ["Address released."]} - def associate_address(self, context, ec2_id, public_ip, **kwargs): - internal_id = ec2_id_to_internal_id(ec2_id) + def associate_address(self, context, instance_id, public_ip, **kwargs): + internal_id = ec2_id_to_internal_id(instance_id) instance_ref = db.instance_get_by_internal_id(context, internal_id) fixed_address = db.instance_get_fixed_address(context, instance_ref['id']) diff --git a/nova/tests/cloud_unittest.py b/nova/tests/cloud_unittest.py index 2d61d2675..2c6d9959b 100644 --- a/nova/tests/cloud_unittest.py +++ b/nova/tests/cloud_unittest.py @@ -91,6 +91,37 @@ class CloudTestCase(test.TrialTestCase): # NOTE(vish): create depends on pool, so just call helper directly return cloud._gen_key(self.context, self.context.user.id, name) + def test_describe_addresses(self): + """Makes sure describe addresses runs without raising an exception""" + address = "10.10.10.10" + db.floating_ip_create(self.context, + {'address': address, + 'host': FLAGS.host}) + self.cloud.allocate_address(self.context) + self.cloud.describe_addresses(self.context) + self.cloud.release_address(self.context, + public_ip=address) + db.floating_ip_destroy(self.context, address) + + def test_associate_disassociate_address(self): + """Verifies associate runs cleanly without raising an exception""" + address = "10.10.10.10" + db.floating_ip_create(self.context, + {'address': address, + 'host': FLAGS.host}) + self.cloud.allocate_address(self.context) + inst = db.instance_create(self.context, {}) + ec2_id = cloud.internal_id_to_ec2_id(inst['internal_id']) + self.cloud.associate_address(self.context, + instance_id=ec2_id, + public_ip=address) + self.cloud.disassociate_address(self.context, + public_ip=address) + self.cloud.release_address(self.context, + public_ip=address) + db.instance_destroy(self.context, inst['id']) + db.floating_ip_destroy(self.context, address) + def test_console_output(self): image_id = FLAGS.default_image instance_type = FLAGS.default_instance_type diff --git a/nova/tests/network_unittest.py b/nova/tests/network_unittest.py index b7caed4fd..6f4705719 100644 --- a/nova/tests/network_unittest.py +++ b/nova/tests/network_unittest.py @@ -41,7 +41,6 @@ class NetworkTestCase(test.TrialTestCase): # flags in the corresponding section in nova-dhcpbridge self.flags(connection_type='fake', fake_network=True, - auth_driver='nova.auth.ldapdriver.FakeLdapDriver', network_size=16, num_networks=5) logging.getLogger().setLevel(logging.DEBUG) @@ -127,6 +126,7 @@ class NetworkTestCase(test.TrialTestCase): self.network.deallocate_floating_ip(self.context, float_addr) self.network.deallocate_fixed_ip(self.context, fix_addr) release_ip(fix_addr) + db.floating_ip_destroy(context.get_admin_context(), float_addr) def test_allocate_deallocate_fixed_ip(self): """Makes sure that we can allocate and deallocate a fixed ip""" |
