Browse Source

Merge "Fix healthmanager not update amphora health when LB disable" into stable/stein

tags/4.1.2
Zuul 4 weeks ago
committed by Gerrit Code Review
parent
commit
79e6d15df7
3 changed files with 28 additions and 3 deletions
  1. +2
    -1
      octavia/controller/healthmanager/health_drivers/update_db.py
  2. +20
    -2
      octavia/tests/unit/controller/healthmanager/health_drivers/test_update_db.py
  3. +6
    -0
      releasenotes/notes/Fix-healthmanager-not-update-amphora-health-when-LB-disabled-46a4fb295c6d0850.yaml

+ 2
- 1
octavia/controller/healthmanager/health_drivers/update_db.py View File

@@ -183,7 +183,8 @@ class UpdateHealthDb(update_base.HealthUpdateBase):

if db_lb:
expected_listener_count = 0
if 'PENDING' in db_lb['provisioning_status']:
if ('PENDING' in db_lb['provisioning_status'] or
not db_lb['enabled']):
ignore_listener_count = True
else:
for key, listener in db_lb.get('listeners', {}).items():


+ 20
- 2
octavia/tests/unit/controller/healthmanager/health_drivers/test_update_db.py View File

@@ -118,9 +118,10 @@ class TestUpdateHealthDb(base.TestCase):
def _make_fake_lb_health_dict(self, listener=True, pool=True,
health_monitor=True, members=1,
lb_prov_status=constants.ACTIVE,
listener_protocol=constants.PROTOCOL_TCP):
listener_protocol=constants.PROTOCOL_TCP,
enabled=True):

lb_ref = {'enabled': True, 'id': self.FAKE_UUID_1,
lb_ref = {'enabled': enabled, 'id': self.FAKE_UUID_1,
constants.OPERATING_STATUS: 'bogus',
constants.PROVISIONING_STATUS: lb_prov_status}

@@ -198,6 +199,23 @@ class TestUpdateHealthDb(base.TestCase):
self.assertTrue(self.loadbalancer_repo.update.called)
self.assertTrue(self.amphora_health_repo.replace.called)

def test_update_health_lb_disabled(self):

health = {
"id": self.FAKE_UUID_1,
"ver": 1,
"listeners": {},
"recv_time": time.time()
}

lb_ref = self._make_fake_lb_health_dict(
listener=True, pool=True, enabled=False)
self.hm.amphora_repo.get_lb_for_health_update.return_value = lb_ref
self.hm.update_health(health, '192.0.2.1')
self.assertTrue(self.amphora_repo.get_lb_for_health_update.called)
self.assertTrue(self.loadbalancer_repo.update.called)
self.assertTrue(self.amphora_health_repo.replace.called)

def test_update_health_lb_pending_no_listener(self):

health = {


+ 6
- 0
releasenotes/notes/Fix-healthmanager-not-update-amphora-health-when-LB-disabled-46a4fb295c6d0850.yaml View File

@@ -0,0 +1,6 @@
---
fixes:
- |
Fixed an issue when a loadbalancer is disabled, Octavia Health Manager
keeps failovering the amphorae


Loading…
Cancel
Save