From f2a092eb47dfcc20b87c009e1567f8c9b3cf8586 Mon Sep 17 00:00:00 2001 From: Jan Fajerski Date: Wed, 29 Nov 2017 12:23:18 +0100 Subject: [PATCH] pybind/mgr/prometheus: add StandbyModule; return empty answer Signed-off-by: Jan Fajerski (cherry picked from commit 18ffd7529b0975897121d8a5c37d0d20560a1fc7) --- src/pybind/mgr/prometheus/module.py | 55 ++++++++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/src/pybind/mgr/prometheus/module.py b/src/pybind/mgr/prometheus/module.py index a90154bcf3be..4dcc52a80035 100644 --- a/src/pybind/mgr/prometheus/module.py +++ b/src/pybind/mgr/prometheus/module.py @@ -3,8 +3,9 @@ import json import errno import math import os +import socket from collections import OrderedDict -from mgr_module import MgrModule +from mgr_module import MgrModule, MgrStandbyModule # Defaults for the Prometheus HTTP server. Can also set in config-key # see https://github.com/prometheus/prometheus/wiki/Default-port-allocations @@ -460,6 +461,13 @@ class Module(MgrModule): (server_addr, server_port) ) + # Publish the URI that others may use to access the service we're + # about to start serving + self.set_uri('http://{0}:{1}/'.format( + socket.getfqdn() if server_addr == '::' else server_addr, + server_port + )) + cherrypy.config.update({ 'server.socket_host': server_addr, 'server.socket_port': int(server_port), @@ -468,3 +476,48 @@ class Module(MgrModule): cherrypy.tree.mount(Root(), "/") cherrypy.engine.start() cherrypy.engine.block() + +class StandbyModule(MgrStandbyModule): + def serve(self): + server_addr = self.get_localized_config('server_addr', '::') + server_port = self.get_localized_config('server_port', DEFAULT_PORT) + self.log.info("server_addr: %s server_port: %s" % (server_addr, server_port)) + cherrypy.config.update({ + 'server.socket_host': server_addr, + 'server.socket_port': int(server_port), + 'engine.autoreload.on': False + }) + + + module = self + + class Root(object): + + @cherrypy.expose + def index(self): + active_uri = module.get_active_uri() + return ''' + + Ceph Exporter + +

Ceph Exporter

+

Metrics

+ +'''.format(active_uri) + + @cherrypy.expose + def metrics(self): + cherrypy.response.headers['Content-Type'] = 'text/plain' + return '' + + cherrypy.tree.mount(Root(), '/', {}) + cherrypy.engine.wait(state=cherrypy.engine.states.STOPPED) + self.log.info('Starting engine...') + cherrypy.engine.start() + self.log.info('Engine started.') + cherrypy.engine.block() + + def shutdown(self): + self.log.info('Stopping engine...') + self.log.info('Stopped engine') + pass -- 2.47.3