From 659bcebc82d6dba2f792211d205308a4f1bb7116 Mon Sep 17 00:00:00 2001 From: ahdj007 Date: Fri, 29 Jul 2016 10:38:41 +0800 Subject: [PATCH] Delete the "self" when call "_set_degraded" function Which will raise Exception: TypeError: 'LoadBalancerPluginv2' object does not support item assignment. Change-Id: Ic3f653468c7cec8cc0434d3df9b42cc1660f9260 Closes-Bug: #1607585 (cherry picked from commit b09d4d2ee0ea71a52679f0eb2743116dbb7e5442) --- neutron_lbaas/services/loadbalancer/plugin.py | 2 +- .../db/loadbalancer/test_db_loadbalancerv2.py | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) mode change 100644 => 100755 neutron_lbaas/tests/unit/db/loadbalancer/test_db_loadbalancerv2.py diff --git a/neutron_lbaas/services/loadbalancer/plugin.py b/neutron_lbaas/services/loadbalancer/plugin.py index b115e0ca1..9e843f64d 100644 --- a/neutron_lbaas/services/loadbalancer/plugin.py +++ b/neutron_lbaas/services/loadbalancer/plugin.py @@ -1341,7 +1341,7 @@ class LoadBalancerPluginv2(loadbalancerv2.LoadBalancerPluginBaseV2): [ps["id"] for ps in lb_status["pools"]]): lb_status["pools"].append(pool_status) if self._is_degraded(curr_listener.default_pool): - self._set_degraded(self, listener_status, lb_status) + self._set_degraded(listener_status, lb_status) members = curr_listener.default_pool.members for curr_member in members: if not curr_member.admin_state_up: diff --git a/neutron_lbaas/tests/unit/db/loadbalancer/test_db_loadbalancerv2.py b/neutron_lbaas/tests/unit/db/loadbalancer/test_db_loadbalancerv2.py old mode 100644 new mode 100755 index e7cb942b0..c638251a2 --- a/neutron_lbaas/tests/unit/db/loadbalancer/test_db_loadbalancerv2.py +++ b/neutron_lbaas/tests/unit/db/loadbalancer/test_db_loadbalancerv2.py @@ -3714,6 +3714,26 @@ class LbaasStatusesTest(MemberTestBase): self._assertNotDegraded(self._traverse_statuses(statuses, listener='listener_HTTPS')) + def test_degraded_with_pool_error(self): + ctx = context.get_admin_context() + ERROR = constants.ERROR + lb_dict = self._create_new_populated_loadbalancer() + lb_id = lb_dict['id'] + statuses = self._get_loadbalancer_statuses_api(lb_id)[1] + stat = self._traverse_statuses(statuses, listener="listener_HTTP", + pool="pool_HTTP") + pool_id = stat['id'] + self.plugin.db.update_status(ctx, models.PoolV2, pool_id, + provisioning_status=ERROR) + statuses = self._get_loadbalancer_statuses_api(lb_id)[1] + #Assert the parents of the pool are degraded + self._assertDegraded(self._traverse_statuses(statuses, + listener='listener_HTTP')) + self._assertDegraded(self._traverse_statuses(statuses)) + #Verify siblings are not degraded + self._assertNotDegraded(self._traverse_statuses(statuses, + listener='listener_HTTPS')) + def _assertOnline(self, obj): OS = "operating_status" if OS in obj: