Use networks floatingips client to associate fips

With the deprecation of the 'associate floating IP' server action in
2.44 [1], we need to use the networks client to associate floating
IPs.

[1] https://developer.openstack.org/api-ref/compute/?expanded=add-associate-floating-ip-addfloatingip-action-deprecated-detail,list-servers-detail,list-servers-detailed-detail,show-port-interface-details-detail,list-port-interfaces-detail

Change-Id: Ib3655bed87f019c32dcff7f8ff05634398a52962
This commit is contained in:
Artom Lifshitz 2017-05-10 17:25:54 +00:00
parent c961a656cc
commit 70d7a118f3
1 changed files with 22 additions and 6 deletions

View File

@ -198,9 +198,27 @@ def create_test_server(clients, validatable=False, validation_resources=None,
body = rest_client.ResponseBody(body.response, body['server'])
servers = [body]
# The name of the method to associate a floating IP to as server is too
# long for PEP8 compliance so:
assoc = clients.compute_floating_ips_client.associate_floating_ip_to_server
def _setup_validation_fip():
if CONF.service_available.neutron:
ifaces = clients.interfaces_client.list_interfaces(server['id'])
validation_port = None
for iface in ifaces['interfaceAttachments']:
if iface['net_id'] == tenant_network['id']:
validation_port = iface['port_id']
break
if not validation_port:
# NOTE(artom) This will get caught by the catch-all clause in
# the wait_until loop below
raise ValueError('Unable to setup floating IP for validation: '
'port not found on tenant network')
clients.floating_ips_client.update_floatingip(
validation_resources['floating_ip']['id'],
port_id=validation_port)
else:
fip_client = clients.compute_floating_ips_client
fip_client.associate_floating_ip_to_server(
floating_ip=validation_resources['floating_ip']['ip'],
server_id=servers[0]['id'])
if wait_until:
for server in servers:
@ -212,9 +230,7 @@ def create_test_server(clients, validatable=False, validation_resources=None,
# creation will fail with the condition above (l.58).
if CONF.validation.run_validation and validatable:
if CONF.validation.connect_method == 'floating':
assoc(floating_ip=validation_resources[
'floating_ip']['ip'],
server_id=servers[0]['id'])
_setup_validation_fip()
except Exception:
with excutils.save_and_reraise_exception():