]> 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)
committerJan Fajerski <jfajerski@suse.com>
Tue, 2 Jan 2018 17:18:28 +0000 (18:18 +0100)
Signed-off-by: Jan Fajerski <jfajerski@suse.com>
src/pybind/mgr/prometheus/module.py

index 2539d8696a33f8261686545e7097e3399be1b7d0..85f78a06bafb52f0e5a9ad3780f9204d3e4cc1d2 100644 (file)
@@ -231,10 +231,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(
@@ -390,10 +386,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)
@@ -418,6 +417,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', '::')