]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
LBaaS: make haproxy stats parsing more safe
authorOleg Bondarev <obondarev@mirantis.com>
Wed, 4 Sep 2013 13:48:50 +0000 (17:48 +0400)
committerOleg Bondarev <obondarev@mirantis.com>
Wed, 4 Sep 2013 14:06:31 +0000 (18:06 +0400)
Change-Id: Ic21b310608bb98be29ea50ab7c56ca859a9ed5c0
Closes-Bug: #1220692

neutron/services/loadbalancer/drivers/haproxy/namespace_driver.py
neutron/tests/unit/services/loadbalancer/drivers/haproxy/test_namespace_driver.py

index 04d1972bf6affcf75db264835b2be78183aa5610..27ee9e2049349b840b1721713ca047389426e5e8 100644 (file)
@@ -123,7 +123,7 @@ class HaproxyNSDriver(object):
     def _get_backend_stats(self, parsed_stats):
         TYPE_BACKEND_RESPONSE = '1'
         for stats in parsed_stats:
-            if stats['type'] == TYPE_BACKEND_RESPONSE:
+            if stats.get('type') == TYPE_BACKEND_RESPONSE:
                 unified_stats = dict((k, stats.get(v, ''))
                                      for k, v in hacfg.STATS_MAP.items())
                 return unified_stats
@@ -134,7 +134,7 @@ class HaproxyNSDriver(object):
         TYPE_SERVER_RESPONSE = '2'
         res = {}
         for stats in parsed_stats:
-            if stats['type'] == TYPE_SERVER_RESPONSE:
+            if stats.get('type') == TYPE_SERVER_RESPONSE:
                 res[stats['svname']] = {
                     lb_const.STATS_STATUS: (constants.INACTIVE
                                             if stats['status'] == 'DOWN'
@@ -169,6 +169,8 @@ class HaproxyNSDriver(object):
         stat_names = [name.strip('# ') for name in stat_lines[0].split(',')]
         res_stats = []
         for raw_values in stat_lines[1:]:
+            if not raw_values:
+                continue
             stat_values = [value.strip() for value in raw_values.split(',')]
             res_stats.append(dict(zip(stat_names, stat_values)))
 
index b2a5a716004aa7291d4392abbf4efa154b9b0988..3e39b0bd22738308ebf800c3a96822e16a1c4f74 100644 (file)
@@ -141,7 +141,7 @@ class TestHaproxyNSDriver(base.BaseTestCase):
                      'req_rate,req_rate_max,req_tot,cli_abrt,srv_abrt,\n'
                      '8e271901-69ed-403e-a59b-f53cf77ef208,BACKEND,1,2,3,4,0,'
                      '10,7764,2365,0,0,,0,0,0,0,UP,1,1,0,,0,103780,0,,1,2,0,,0'
-                     ',,1,0,,0,,,,0,0,0,0,0,0,,,,,0,0,\n'
+                     ',,1,0,,0,,,,0,0,0,0,0,0,,,,,0,0,\n\n'
                      'a557019b-dc07-4688-9af4-f5cf02bb6d4b,'
                      '32a6c2a3-420a-44c3-955d-86bd2fc6871e,0,0,0,1,,7,1120,'
                      '224,,0,,0,0,0,0,UP,1,1,0,0,1,2623,303,,1,2,1,,7,,2,0,,'