From eda9f15dd939de3e7205ceb0dfcc9fcfce7d89bb Mon Sep 17 00:00:00 2001 From: Jan Fajerski Date: Wed, 29 Nov 2017 12:23:55 +0100 Subject: [PATCH] pybind/mgr/prometheus: return 503 if MON cluster is down Signed-off-by: Jan Fajerski --- src/pybind/mgr/prometheus/module.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/pybind/mgr/prometheus/module.py b/src/pybind/mgr/prometheus/module.py index 2539d8696a3..85f78a06baf 100644 --- a/src/pybind/mgr/prometheus/module.py +++ b/src/pybind/mgr/prometheus/module.py @@ -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', '::') -- 2.39.5