Merge "[L3][HA] Retry when setting HA router GW status." into stable/train

This commit is contained in:
Zuul 2021-03-07 14:21:43 +00:00 committed by Gerrit Code Review
commit 77d6ab54e9
2 changed files with 14 additions and 5 deletions

View File

@ -547,8 +547,11 @@ class HaRouter(router.RouterInfo):
if ex_gw_port_id:
interface_name = self.get_external_device_name(ex_gw_port_id)
ns_name = self.get_gw_ns_name()
self.driver.set_link_status(interface_name, ns_name,
link_up=link_up)
if (not self.driver.set_link_status(
interface_name, namespace=ns_name, link_up=link_up) and
link_up):
LOG.error('Gateway interface for router %s was not set up; '
'router will not work properly', self.router_id)
if link_up and set_gw:
preserve_ips = self.get_router_preserve_ips()
self._external_gateway_settings(ex_gw_port, interface_name,

View File

@ -323,14 +323,20 @@ class LinuxInterfaceDriver(object):
def set_link_status(self, device_name, namespace=None, link_up=True):
ns_dev = ip_lib.IPWrapper(namespace=namespace).device(device_name)
if not ns_dev.exists():
LOG.debug("Device %s may concurrently be deleted.", device_name)
return
try:
utils.wait_until_true(ns_dev.exists, timeout=3)
except utils.WaitTimeout:
LOG.debug('Device %s may have been deleted concurrently',
device_name)
return False
if link_up:
ns_dev.link.set_up()
else:
ns_dev.link.set_down()
return True
class NullDriver(LinuxInterfaceDriver):
def plug_new(self, network_id, port_id, device_name, mac_address,