From: Jan Fajerski Date: Wed, 29 Nov 2017 11:23:18 +0000 (+0100) Subject: pybind/mgr/prometheus: add StandbyModule; return empty answer X-Git-Tag: v12.2.5~58^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f2a092eb47dfcc20b87c009e1567f8c9b3cf8586;p=ceph.git pybind/mgr/prometheus: add StandbyModule; return empty answer Signed-off-by: Jan Fajerski (cherry picked from commit 18ffd7529b0975897121d8a5c37d0d20560a1fc7) --- 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