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 cce348040d)
(cherry picked from commit 54eb1624f5)
(cherry picked from commit 5c98d90133)
(cherry picked from commit 1dadaff530)
This commit is contained in:
Gregory Thiemonge 2023-09-01 11:35:34 -04:00
parent 231398ca5f
commit 9e5a634015
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)
self._populate_amphora_api_version(amphora)
self._populate_amphora_api_version(amphora,
timeout_dict=timeout_dict)
self.clients[amphora.api_version].start_vrrp(amphora,
timeout_dict=timeout_dict)

View File

@ -100,6 +100,9 @@ class TestVRRPRestDriver(base.TestCase):
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.amphora_mock, timeout_dict=None)
@ -114,6 +117,20 @@ class TestVRRPRestDriver(base.TestCase):
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):
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.