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