From b735c5885ff62e6f99c0786fba590d2a14c69b89 Mon Sep 17 00:00:00 2001 From: Andrew McLeod Date: Mon, 30 Sep 2019 11:40:14 +0200 Subject: [PATCH 1/4] add tenacity with backoff to configure ext dataport method --- zaza/openstack/utilities/openstack.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/zaza/openstack/utilities/openstack.py b/zaza/openstack/utilities/openstack.py index f0b7ffc..706336b 100644 --- a/zaza/openstack/utilities/openstack.py +++ b/zaza/openstack/utilities/openstack.py @@ -559,6 +559,8 @@ def add_interface_to_netplan(server_name, mac_address, dvr_mode=None): model.run_on_unit(unit_name, "sudo netplan apply") +@tenacity.retry(wait=tenacity.wait_exponential(multiplier=1, max=60), + reraise=True, stop=tenacity.stop_after_attempt(12)) def configure_gateway_ext_port(novaclient, neutronclient, dvr_mode=None, net_id=None, add_dataport_to_netplan=False): From 903b612ba9e4939497dfd6a65320cdf4c61cdd57 Mon Sep 17 00:00:00 2001 From: Andrew McLeod Date: Mon, 30 Sep 2019 12:57:17 +0200 Subject: [PATCH 2/4] move mac_address retry to smaller method --- zaza/openstack/utilities/openstack.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/zaza/openstack/utilities/openstack.py b/zaza/openstack/utilities/openstack.py index 706336b..60fb554 100644 --- a/zaza/openstack/utilities/openstack.py +++ b/zaza/openstack/utilities/openstack.py @@ -559,8 +559,6 @@ def add_interface_to_netplan(server_name, mac_address, dvr_mode=None): model.run_on_unit(unit_name, "sudo netplan apply") -@tenacity.retry(wait=tenacity.wait_exponential(multiplier=1, max=60), - reraise=True, stop=tenacity.stop_after_attempt(12)) def configure_gateway_ext_port(novaclient, neutronclient, dvr_mode=None, net_id=None, add_dataport_to_netplan=False): @@ -612,7 +610,7 @@ def configure_gateway_ext_port(novaclient, neutronclient, net_id=None, fixed_ip=None) if add_dataport_to_netplan: add_interface_to_netplan(server.name, - mac_address=port['mac_address'], + mac_address=get_mac_from_port(port), dvr_mode=dvr_mode) ext_br_macs = [] for port in neutronclient.list_ports(network_id=net_id)['ports']: @@ -642,6 +640,12 @@ def configure_gateway_ext_port(novaclient, neutronclient, juju_wait.wait(wait_for_workload=True) +@tenacity.retry(wait=tenacity.wait_exponential(multiplier=1, max=60), + reraise=True, retry=tenacity.retry_if_exception_type(KeyError)) +def get_mac_from_port(port): + return port['mac_address'] + + def create_project_network(neutron_client, project_id, net_name='private', shared=False, network_type='gre', domain=None): """Create the project network. From 443b2295c3a36aa641727ba8c9204c12e22e0724 Mon Sep 17 00:00:00 2001 From: Andrew McLeod Date: Mon, 30 Sep 2019 13:00:19 +0200 Subject: [PATCH 3/4] add doctstring --- zaza/openstack/utilities/openstack.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/zaza/openstack/utilities/openstack.py b/zaza/openstack/utilities/openstack.py index 60fb554..f6fb66e 100644 --- a/zaza/openstack/utilities/openstack.py +++ b/zaza/openstack/utilities/openstack.py @@ -643,6 +643,11 @@ def configure_gateway_ext_port(novaclient, neutronclient, @tenacity.retry(wait=tenacity.wait_exponential(multiplier=1, max=60), reraise=True, retry=tenacity.retry_if_exception_type(KeyError)) def get_mac_from_port(port): + """Get mac address from port, with tenacity due to openstack async. + + :param port: neutron port + :type port: string + """ return port['mac_address'] From e5e7d03e1fcfa996a41ed5f80147350fafcd04ca Mon Sep 17 00:00:00 2001 From: Andrew McLeod Date: Mon, 30 Sep 2019 13:04:12 +0200 Subject: [PATCH 4/4] fix doctstring --- zaza/openstack/utilities/openstack.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/zaza/openstack/utilities/openstack.py b/zaza/openstack/utilities/openstack.py index f6fb66e..1e533d4 100644 --- a/zaza/openstack/utilities/openstack.py +++ b/zaza/openstack/utilities/openstack.py @@ -646,7 +646,9 @@ def get_mac_from_port(port): """Get mac address from port, with tenacity due to openstack async. :param port: neutron port - :type port: string + :type port: neutron port + :returns: mac address + :rtype: string """ return port['mac_address']