Fix timeout duration in start_vrrp_service during failovers

The timeout_dict argument was not passed to the
_populate_amphora_api_version, it could have made the failover of broken
amphora really long.

Related-Bug: #2033894

Change-Id: I497f2d8587e25eda0d169aa919cb6fbede7e9fc6
(cherry picked from commit cce348040d43b92b59146adeb15a4f1486946a64)
(cherry picked from commit 54eb1624f5762e9b848f10f712152faf02f8b84d)
(cherry picked from commit 5c98d901337cb0d6e4c575e3280cb77839720cfe)
(cherry picked from commit 1dadaff530e252e8e96ea8b4c6dcec902a797516)
(cherry picked from commit 9e5a6340156113ec3a014e64b3bad6617cd1c082)
This commit is contained in:
Gregory Thiemonge 2023-09-01 11:35:34 -04:00
parent c6dd946b99
commit b44b71fee3
3 changed files with 25 additions and 1 deletions

View File

@ -96,7 +96,8 @@ class KeepalivedAmphoraDriverMixin(driver_base.VRRPDriverMixin):
LOG.info("Start amphora %s VRRP Service.", amphora.id) LOG.info("Start amphora %s VRRP Service.", amphora.id)
self._populate_amphora_api_version(amphora) self._populate_amphora_api_version(amphora,
timeout_dict=timeout_dict)
self.clients[amphora.api_version].start_vrrp(amphora, self.clients[amphora.api_version].start_vrrp(amphora,
timeout_dict=timeout_dict) timeout_dict=timeout_dict)

View File

@ -100,6 +100,9 @@ class TestVRRPRestDriver(base.TestCase):
self.keepalived_mixin.start_vrrp_service(self.amphora_mock) self.keepalived_mixin.start_vrrp_service(self.amphora_mock)
populate_mock = self.keepalived_mixin._populate_amphora_api_version
populate_mock.assert_called_once_with(self.amphora_mock,
timeout_dict=None)
self.clients[API_VERSION].start_vrrp.assert_called_once_with( self.clients[API_VERSION].start_vrrp.assert_called_once_with(
self.amphora_mock, timeout_dict=None) self.amphora_mock, timeout_dict=None)
@ -114,6 +117,20 @@ class TestVRRPRestDriver(base.TestCase):
self.clients[API_VERSION].start_vrrp.assert_not_called() self.clients[API_VERSION].start_vrrp.assert_not_called()
# With timeout_dict
self.clients[API_VERSION].start_vrrp.reset_mock()
populate_mock.reset_mock()
timeout_dict = mock.Mock()
self.keepalived_mixin.start_vrrp_service(self.amphora_mock,
timeout_dict=timeout_dict)
populate_mock = self.keepalived_mixin._populate_amphora_api_version
populate_mock.assert_called_once_with(self.amphora_mock,
timeout_dict=timeout_dict)
self.clients[API_VERSION].start_vrrp.assert_called_once_with(
self.amphora_mock, timeout_dict=timeout_dict)
def test_reload_vrrp_service(self): def test_reload_vrrp_service(self):
self.keepalived_mixin.reload_vrrp_service(self.lb_mock) self.keepalived_mixin.reload_vrrp_service(self.lb_mock)

View File

@ -0,0 +1,6 @@
---
fixes:
- |
Fixed a too long timeout when attempting to start the VRRP service in an
unreachable amphora during a failover. A specific shorter timeout should be
used during the failovers.