jenkins-bot has submitted this change and it was merged.

Change subject: Add warning for badly configured pools.
......................................................................


Add warning for badly configured pools.

Change-Id: Ib0b3c139a5187f6a18ff2551f24ffa60f14b4b20
---
M pybal/instrumentation.py
M pybal/test/test_instrumentation.py
2 files changed, 22 insertions(+), 11 deletions(-)

Approvals:
  Giuseppe Lavagetto: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/pybal/instrumentation.py b/pybal/instrumentation.py
index 21b5e16..7edddc1 100644
--- a/pybal/instrumentation.py
+++ b/pybal/instrumentation.py
@@ -56,20 +56,27 @@
 
     def render_GET(self, request):
         critPools = {}
+        resp = {'status': 'ok', 'msg': ''}
+
         for pool, crd in PoolsRoot._pools.items():
             pooledDown = len(crd.pooledDownServers)
             if pooledDown:
                 slist = ", ".join(crd.pooledDownServers)
                 critPools[pool] = "Servers %s are marked down but pooled" % 
slist
-        if critPools == {}:
-            return "OK"
-        else:
-            if wantJson(request):
-                return json.dumps(critPools)
-            else:
-                return "; ".join(["%s - %s" % (k, v)
-                                  for k, v in critPools.items()])
+            elif not crd.canDepool():
+                resp['status'] = 'warning'
+                resp['msg'] += "Pool %s is too small to allow depooling. " % 
crd.lvsservice.name
+        if critPools != {}:
+            resp['status'] = 'critical'
+            resp['msg'] = "; ".join(["%s: %s" % (k, v)
+                                    for k, v in critPools.items()])
 
+        if resp['status'] == 'ok':
+            resp['msg'] = 'All pools are healthy'
+        if wantJson(request):
+            return json.dumps(resp)
+        else:
+            return "%s - %s" % (resp['status'].upper(), resp['msg'])
 
 class PoolsRoot(Resource):
     """Pools base resource.
diff --git a/pybal/test/test_instrumentation.py 
b/pybal/test/test_instrumentation.py
index 4c1d16a..df09071 100644
--- a/pybal/test/test_instrumentation.py
+++ b/pybal/test/test_instrumentation.py
@@ -82,11 +82,16 @@
 
     def test_render(self):
         """Test case for `PoolsRoot.render_GET`"""
+        self.request.requestHeaders.getRawHeaders.return_value = 'text/http'
         crd = self.coordinators[0]
         r = Alerts()
-        self.assertEquals("OK", r.render_GET(self.request))
+        self.assertEquals("OK - All pools are healthy",
+                          r.render_GET(self.request))
+        crd.canDepool = mock.MagicMock(return_value=False)
+        self.assertEquals('WARNING - Pool test_pool0 is too small to allow 
depooling. ',
+                          r.render_GET(self.request))
         crd.pooledDownServers = ['mw1001', 'mw1002']
-        self.assertEquals('{"test_pool0": "Servers mw1001, mw1002 are marked 
down but pooled"}',
+        self.assertEquals('CRITICAL - test_pool0: Servers mw1001, mw1002 are 
marked down but pooled',
                           r.render_GET(self.request))
 
 
@@ -96,7 +101,6 @@
 
     def test_getChild(self):
         """Test case for `PoolsRoot.getChild`"""
-
         r = PoolsRoot()
         self.assertEquals(r, r.getChild("", self.request))
         res = r.getChild('test_pool0', self.request)

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Ib0b3c139a5187f6a18ff2551f24ffa60f14b4b20
Gerrit-PatchSet: 2
Gerrit-Project: operations/debs/pybal
Gerrit-Branch: master
Gerrit-Owner: Giuseppe Lavagetto <[email protected]>
Gerrit-Reviewer: Giuseppe Lavagetto <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

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

Reply via email to