Merge pull request #7687 from ryanpetrello/devel
Fix neutron floating IP allocation for networks w/ multiple subnets
This commit is contained in:
commit
c8845cdc65
1 changed files with 12 additions and 7 deletions
|
@ -144,11 +144,15 @@ def _get_server_state(module, nova):
|
||||||
def _get_port_info(neutron, module, instance_id, internal_network_name=None):
|
def _get_port_info(neutron, module, instance_id, internal_network_name=None):
|
||||||
subnet_id = None
|
subnet_id = None
|
||||||
if internal_network_name:
|
if internal_network_name:
|
||||||
kwargs = {
|
kwargs = {'name': internal_network_name}
|
||||||
'name': internal_network_name,
|
|
||||||
}
|
|
||||||
networks = neutron.list_networks(**kwargs)
|
networks = neutron.list_networks(**kwargs)
|
||||||
subnet_id = networks['networks'][0]['subnets'][0]
|
network_id = networks['networks'][0]['id']
|
||||||
|
kwargs = {
|
||||||
|
'network_id': network_id,
|
||||||
|
'ip_version': 4
|
||||||
|
}
|
||||||
|
subnets = neutron.list_subnets(**kwargs)
|
||||||
|
subnet_id = subnets['subnets'][0]['id']
|
||||||
kwargs = {
|
kwargs = {
|
||||||
'device_id': instance_id,
|
'device_id': instance_id,
|
||||||
}
|
}
|
||||||
|
@ -179,10 +183,11 @@ def _get_floating_ip(module, neutron, fixed_ip_address):
|
||||||
return None, None
|
return None, None
|
||||||
return ips['floatingips'][0]['id'], ips['floatingips'][0]['floating_ip_address']
|
return ips['floatingips'][0]['id'], ips['floatingips'][0]['floating_ip_address']
|
||||||
|
|
||||||
def _create_floating_ip(neutron, module, port_id, net_id):
|
def _create_floating_ip(neutron, module, port_id, net_id, fixed_ip):
|
||||||
kwargs = {
|
kwargs = {
|
||||||
'port_id': port_id,
|
'port_id': port_id,
|
||||||
'floating_network_id': net_id
|
'floating_network_id': net_id,
|
||||||
|
'fixed_ip_address': fixed_ip
|
||||||
}
|
}
|
||||||
try:
|
try:
|
||||||
result = neutron.create_floatingip({'floatingip': kwargs})
|
result = neutron.create_floatingip({'floatingip': kwargs})
|
||||||
|
@ -252,7 +257,7 @@ def main():
|
||||||
net_id = _get_net_id(neutron, module)
|
net_id = _get_net_id(neutron, module)
|
||||||
if not net_id:
|
if not net_id:
|
||||||
module.fail_json(msg = "cannot find the network specified, please check")
|
module.fail_json(msg = "cannot find the network specified, please check")
|
||||||
_create_floating_ip(neutron, module, port_id, net_id)
|
_create_floating_ip(neutron, module, port_id, net_id, fixed_ip)
|
||||||
|
|
||||||
if module.params['state'] == 'absent':
|
if module.params['state'] == 'absent':
|
||||||
if floating_ip:
|
if floating_ip:
|
||||||
|
|
Loading…
Reference in a new issue