Giuseppe Lavagetto has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/264088

Change subject: instrumentation: fixup for Ib0b3c139a
......................................................................

instrumentation: fixup for Ib0b3c139a

With the first implementation, a warning would've been issued only once
at least one server would've been down.

Change-Id: If636d7ab2ee079aa2afae3103b2d1566ce770a5d
---
M pybal/instrumentation.py
M pybal/test/fixtures.py
M pybal/test/test_instrumentation.py
3 files changed, 17 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/debs/pybal 
refs/changes/88/264088/1

diff --git a/pybal/instrumentation.py b/pybal/instrumentation.py
index 7edddc1..a2a88c0 100644
--- a/pybal/instrumentation.py
+++ b/pybal/instrumentation.py
@@ -60,10 +60,11 @@
 
         for pool, crd in PoolsRoot._pools.items():
             pooledDown = len(crd.pooledDownServers)
+            total = len(crd.servers)
             if pooledDown:
-                slist = ", ".join(crd.pooledDownServers)
+                slist = ", ".join([s.host for s in crd.pooledDownServers])
                 critPools[pool] = "Servers %s are marked down but pooled" % 
slist
-            elif not crd.canDepool():
+            elif total < (total * crd.lvsservice.getDepoolThreshold() + 1):
                 resp['status'] = 'warning'
                 resp['msg'] += "Pool %s is too small to allow depooling. " % 
crd.lvsservice.name
         if critPools != {}:
diff --git a/pybal/test/fixtures.py b/pybal/test/fixtures.py
index 606d523..8f584de 100644
--- a/pybal/test/fixtures.py
+++ b/pybal/test/fixtures.py
@@ -74,6 +74,7 @@
         self.configuration = configuration
 
 
+
 class MockClientGetPage(object):
     def __init__(self, data):
         self.return_value = data
diff --git a/pybal/test/test_instrumentation.py 
b/pybal/test/test_instrumentation.py
index df09071..da03734 100644
--- a/pybal/test/test_instrumentation.py
+++ b/pybal/test/test_instrumentation.py
@@ -84,13 +84,24 @@
         """Test case for `PoolsRoot.render_GET`"""
         self.request.requestHeaders.getRawHeaders.return_value = 'text/http'
         crd = self.coordinators[0]
+        m1 = ServerStub('mw1001')
+        m2 = ServerStub('mw1002')
+        m3 = ServerStub('mw1003')
+        crd.servers = [m1, m2, m3]
+
+        # Healthy pool
+        crd.lvsservice.getDepoolThreshold = mock.MagicMock(return_value=0)
         r = Alerts()
         self.assertEquals("OK - All pools are healthy",
                           r.render_GET(self.request))
-        crd.canDepool = mock.MagicMock(return_value=False)
+
+        # Misconfigured pool
+        crd.lvsservice.getDepoolThreshold = mock.MagicMock(return_value=1.0)
         self.assertEquals('WARNING - Pool test_pool0 is too small to allow 
depooling. ',
                           r.render_GET(self.request))
-        crd.pooledDownServers = ['mw1001', 'mw1002']
+
+        # Pool with too many servers down
+        crd.pooledDownServers = [m1, m2]
         self.assertEquals('CRITICAL - test_pool0: Servers mw1001, mw1002 are 
marked down but pooled',
                           r.render_GET(self.request))
 
@@ -198,7 +209,6 @@
         """Test case for an non-existent host"""
         hdr, _ = self._httpReq(uri='/pools/test_pool0/mw1011')
         self.assertTrue(hdr.startswith('HTTP/1.1 404 Not Found'))
-
 
     def tearDown(self):
         self.proto.connectionLost(Failure(TypeError("whatever")))

-- 
To view, visit https://gerrit.wikimedia.org/r/264088
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: If636d7ab2ee079aa2afae3103b2d1566ce770a5d
Gerrit-PatchSet: 1
Gerrit-Project: operations/debs/pybal
Gerrit-Branch: master
Gerrit-Owner: Giuseppe Lavagetto <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to