File 0002-fix-for-dead-pool-members-appearing-online.patch of Package openstack-neutron-lbaas

--- a/neutron_lbaas/drivers/haproxy/namespace_driver.py	2018-01-03 14:13:15.831856878 +0000
+++ b/neutron_lbaas/drivers/haproxy/namespace_driver.py	2018-01-03 14:17:26.812310152 +0000
@@ -281,9 +281,9 @@
         for stats in parsed_stats:
             if stats.get('type') == STATS_TYPE_SERVER_RESPONSE:
                 res[stats['svname']] = {
-                    lb_const.STATS_STATUS: (constants.INACTIVE
+                    lb_const.OPERATING_STATUS: (lb_const.OFFLINE
                                             if stats['status'] == 'DOWN'
-                                            else constants.ACTIVE),
+                                            else lb_const.ONLINE),
                     lb_const.STATS_HEALTH: stats['check_status'],
                     lb_const.STATS_FAILED_CHECKS: stats['chkfail']
                 }
@@ -415,7 +415,20 @@
         self.refresh(loadbalancer)
 
     def get_stats(self, loadbalancer_id):
-        return self.driver.get_stats(loadbalancer_id)
+        stats = self.driver.get_stats(loadbalancer_id)
+
+        # NOTE(cgoncalves): haproxy stats include member status which maps to
+        # MemberV2.operating_status. Take the opportunty to update member
+        # operating status.
+        members = stats.get('members')
+        if members:
+            for member_id, value in members.items():
+                if lb_const.OPERATING_STATUS in value:
+                    self.driver.plugin_rpc.update_status(
+                        'member', member_id,
+                        operating_status=value[lb_const.OPERATING_STATUS])
+
+        return stats
 
     def update(self, old_loadbalancer, loadbalancer):
         self.refresh(loadbalancer)
openSUSE Build Service is sponsored by