Describe addresses in ec2 api broken with neutron
It attempts to retrieve the fixed ip directly, but it's not supported by neutron. After the modification, the instance uuid will be pulled without using get_fixed_ip(). Change-Id: Ia1b95d4c18aeb5012919af89148947694d80e2e7 Closes-Bug: #1273837
This commit is contained in:
parent
1657f4e64f
commit
3d0d6b7f22
|
@ -1203,10 +1203,15 @@ class CloudController(object):
|
|||
def _format_address(self, context, floating_ip):
|
||||
ec2_id = None
|
||||
if floating_ip['fixed_ip_id']:
|
||||
fixed_id = floating_ip['fixed_ip_id']
|
||||
fixed = self.network_api.get_fixed_ip(context, fixed_id)
|
||||
if fixed['instance_uuid'] is not None:
|
||||
ec2_id = ec2utils.id_to_ec2_inst_id(fixed['instance_uuid'])
|
||||
if utils.is_neutron():
|
||||
fixed_vm_uuid = floating_ip['instance']['uuid']
|
||||
if fixed_vm_uuid is not None:
|
||||
ec2_id = ec2utils.id_to_ec2_inst_id(fixed_vm_uuid)
|
||||
else:
|
||||
fixed_id = floating_ip['fixed_ip_id']
|
||||
fixed = self.network_api.get_fixed_ip(context, fixed_id)
|
||||
if fixed['instance_uuid'] is not None:
|
||||
ec2_id = ec2utils.id_to_ec2_inst_id(fixed['instance_uuid'])
|
||||
address = {'public_ip': floating_ip['address'],
|
||||
'instance_id': ec2_id}
|
||||
if context.is_admin:
|
||||
|
|
|
@ -230,6 +230,20 @@ class CloudTestCase(test.TestCase):
|
|||
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,
|
||||
'pool': 'nova'})
|
||||
self.flags(network_api_class='nova.network.api.API')
|
||||
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_describe_addresses_in_neutron(self):
|
||||
# Makes sure describe addresses runs without raising an exception.
|
||||
address = "10.10.10.10"
|
||||
self.flags(network_api_class='nova.network.neutronv2.api.API')
|
||||
db.floating_ip_create(self.context,
|
||||
{'address': address,
|
||||
'pool': 'nova'})
|
||||
|
|
Loading…
Reference in New Issue