]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
pybind/mgr/prometheus: return 503 if MON cluster is down
authorJan Fajerski <jfajerski@suse.com>
Wed, 29 Nov 2017 11:23:55 +0000 (12:23 +0100)
committerBoris Ranto <branto@redhat.com>
Tue, 3 Apr 2018 16:35:14 +0000 (18:35 +0200)
Signed-off-by: Jan Fajerski <jfajerski@suse.com>
(cherry picked from commit eda9f15dd939de3e7205ceb0dfcc9fcfce7d89bb)

src/pybind/mgr/prometheus/module.py

index 4dcc52a80035228c42ef3584d657dbc44d4c2bcc..88cf04be2f3a8b48e22d6f3a4dcdca2577799394 100644 (file)
@@ -259,10 +259,6 @@ class Module(MgrModule):
 
         return metrics
 
-    def shutdown(self):
-        self.serving = False
-        pass
-
     def get_health(self):
         health = json.loads(self.get('health')['json'])
         self.metrics['health_status'].set(
@@ -449,10 +445,13 @@ class Module(MgrModule):
 
             @cherrypy.expose
             def metrics(self):
-                metrics = global_instance().collect()
-                cherrypy.response.headers['Content-Type'] = 'text/plain'
-                if metrics:
-                    return self.format_metrics(metrics)
+                if global_instance().have_mon_connection():
+                    metrics = global_instance().collect()
+                    cherrypy.response.headers['Content-Type'] = 'text/plain'
+                    if metrics:
+                        return self.format_metrics(metrics)
+                else:
+                    raise cherrypy.HTTPError(503, 'No MON connection')
 
         server_addr = self.get_localized_config('server_addr', DEFAULT_ADDR)
         server_port = self.get_localized_config('server_port', DEFAULT_PORT)
@@ -477,6 +476,11 @@ class Module(MgrModule):
         cherrypy.engine.start()
         cherrypy.engine.block()
 
+    def shutdown(self):
+        self.serving = False
+        pass
+
+
 class StandbyModule(MgrStandbyModule):
     def serve(self):
         server_addr = self.get_localized_config('server_addr', '::')