Fix HealthMonitorToErrorOnRevertTask revert method

So far, whenever we had to revert HealthMonitorToErrorOnRevertTask,
we called mark_health_mon_prov_status_error with the wrong parameter
(health_mon[constants.POOL_ID] == the pool id).

This would set the pool's provisioning status to ERROR.

Later in the revert task we call mark_pool_prov_status_active with the
correct argument (health_mon[constants.POOL_ID] == the pool id), so we
set it back to ACTIVE, and the task continues correctly.

This means we might have missed setting the health monitor's
provisioning status to ERROR, and therefore we might have missed some
errors.

This commit changes the parameter to be the correct one in both API
v1 and v2, and it modifies the tests accordingly.

Story 2010113
Task 45690

Change-Id: I5a749c751d184ec10957a31b569419d57fe8daf6
(cherry picked from commit 96f2ca7cecfca43000ddba929fc1bc348c845b27)
This commit is contained in:
Omer 2022-06-28 15:25:03 +02:00
parent 10f037c7e5
commit 5ca3849a8f
5 changed files with 10 additions and 4 deletions

View File

@ -52,7 +52,7 @@ class HealthMonitorToErrorOnRevertTask(BaseLifecycleTask):
pass pass
def revert(self, health_mon, listeners, loadbalancer, *args, **kwargs): def revert(self, health_mon, listeners, loadbalancer, *args, **kwargs):
self.task_utils.mark_health_mon_prov_status_error(health_mon.pool_id) self.task_utils.mark_health_mon_prov_status_error(health_mon.id)
self.task_utils.mark_pool_prov_status_active(health_mon.pool_id) self.task_utils.mark_pool_prov_status_active(health_mon.pool_id)
self.task_utils.mark_loadbalancer_prov_status_active(loadbalancer.id) self.task_utils.mark_loadbalancer_prov_status_active(loadbalancer.id)
for listener in listeners: for listener in listeners:

View File

@ -55,7 +55,7 @@ class HealthMonitorToErrorOnRevertTask(BaseLifecycleTask):
def revert(self, health_mon, listeners, loadbalancer, *args, **kwargs): def revert(self, health_mon, listeners, loadbalancer, *args, **kwargs):
self.task_utils.mark_health_mon_prov_status_error( self.task_utils.mark_health_mon_prov_status_error(
health_mon[constants.POOL_ID]) health_mon[constants.HEALTHMONITOR_ID])
self.task_utils.mark_pool_prov_status_active( self.task_utils.mark_pool_prov_status_active(
health_mon[constants.POOL_ID]) health_mon[constants.POOL_ID])
self.task_utils.mark_loadbalancer_prov_status_active( self.task_utils.mark_loadbalancer_prov_status_active(

View File

@ -28,7 +28,7 @@ class TestLifecycleTasks(base.TestCase):
self.AMPHORA.id = self.AMPHORA_ID self.AMPHORA.id = self.AMPHORA_ID
self.HEALTH_MON = mock.MagicMock() self.HEALTH_MON = mock.MagicMock()
self.HEALTH_MON_ID = uuidutils.generate_uuid() self.HEALTH_MON_ID = uuidutils.generate_uuid()
self.HEALTH_MON.pool_id = self.HEALTH_MON_ID self.HEALTH_MON.id = self.HEALTH_MON_ID
self.L7POLICY = mock.MagicMock() self.L7POLICY = mock.MagicMock()
self.L7POLICY_ID = uuidutils.generate_uuid() self.L7POLICY_ID = uuidutils.generate_uuid()
self.L7POLICY.id = self.L7POLICY_ID self.L7POLICY.id = self.L7POLICY_ID

View File

@ -126,7 +126,7 @@ class TestLifecycleTasks(base.TestCase):
self.LOADBALANCER) self.LOADBALANCER)
mock_health_mon_prov_status_error.assert_called_once_with( mock_health_mon_prov_status_error.assert_called_once_with(
self.POOL_ID) self.HEALTH_MON_ID)
mock_loadbalancer_prov_status_active.assert_called_once_with( mock_loadbalancer_prov_status_active.assert_called_once_with(
self.LOADBALANCER_ID) self.LOADBALANCER_ID)
mock_listener_prov_status_active.assert_called_once_with( mock_listener_prov_status_active.assert_called_once_with(

View File

@ -0,0 +1,6 @@
---
fixes:
- |
Fix a bug that prevented the provisioning_state of a health-monitor to be
set to ERROR when an error occurred while creating, updating or deleting a
health-monitor.