Skip to content

Commit f0bdd3b

Browse files
committed
expose_metadata_endpoints
Signed-off-by: hwassman <[email protected]>
1 parent 0149bd9 commit f0bdd3b

File tree

4 files changed

+44
-49
lines changed

4 files changed

+44
-49
lines changed

source/metadata.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535

3636

3737
class MetadataHandler(metaclass=Singleton):
38+
exposed = True
3839

3940
def __init__(self, **kwargs):
4041
self.__qh = None
@@ -146,6 +147,33 @@ def __initializeTables(self):
146147
return
147148
raise ValueError(MSG['NoData'])
148149

150+
@cherrypy.tools.json_out() # @UndefinedVariable
151+
def GET(self, **params):
152+
""" Forward GET REST HTTP/s API incoming requests to Metadata Handler
153+
available endpoints:
154+
/metadata/update
155+
/metadata/sensorsconfig
156+
"""
157+
resp = []
158+
159+
# /metadata/update
160+
if '/metadata/update' == cherrypy.request.script_name:
161+
# cherrypy.response.headers['Content-Type'] = 'application/json'
162+
resp = self.update()
163+
# resp = json.dumps(resp)
164+
165+
# /metadata/sensorsconfig
166+
elif '/metadata/sensorsconfig' == cherrypy.request.script_name:
167+
# cherrypy.response.headers['Content-Type'] = 'application/json'
168+
resp = self.SensorsConfig
169+
# resp = json.dumps(resp)
170+
171+
del cherrypy.response.headers['Allow']
172+
cherrypy.response.headers['Access-Control-Allow-Origin'] = '*'
173+
# cherrypy.response.headers['Content-Type'] = 'application/json'
174+
# resp = json.dumps(resp)
175+
return resp
176+
149177
@execution_time()
150178
def update(self, refresh_all=False):
151179
'''Read the topology from ZIMon and update

source/opentsdb.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -293,18 +293,6 @@ def GET(self, **params):
293293
elif 'lookup' in cherrypy.request.script_name:
294294
resp = self.lookup(params)
295295

296-
# /api/update
297-
elif 'update' in cherrypy.request.script_name:
298-
# cherrypy.response.headers['Content-Type'] = 'application/json'
299-
resp = self.md.update()
300-
# resp = json.dumps(resp)
301-
302-
# /sensorsconfig
303-
elif '/sensorsconfig' == cherrypy.request.script_name:
304-
# cherrypy.response.headers['Content-Type'] = 'application/json'
305-
resp = self.md.SensorsConfig
306-
# resp = json.dumps(resp)
307-
308296
elif 'aggregators' in cherrypy.request.script_name:
309297
resp = ["noop", "sum", "avg", "max", "min", "rate"]
310298

source/prometheus.py

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -153,17 +153,7 @@ def GET(self, **params):
153153
if int(conn[1]) != int(self.port):
154154
raise cherrypy.HTTPError(400, MSG[400])
155155

156-
# /update
157-
if '/update' == cherrypy.request.script_name:
158-
# cherrypy.response.headers['Content-Type'] = 'application/json'
159-
resp = self.md.update()
160-
161-
# /sensorsconfig
162-
elif '/sensorsconfig' == cherrypy.request.script_name:
163-
# cherrypy.response.headers['Content-Type'] = 'application/json'
164-
resp = self.md.SensorsConfig
165-
166-
elif self.endpoints and self.endpoints.get(cherrypy.request.script_name,
156+
if self.endpoints and self.endpoints.get(cherrypy.request.script_name,
167157
None):
168158
sensor = self.endpoints[cherrypy.request.script_name]
169159
resp = self.metrics([sensor])

source/zimonGrafanaIntf.py

Lines changed: 15 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,19 @@ def main(argv):
258258
logger.error("ZiMon sensor configuration file not found")
259259
return
260260

261+
# query to force update of metadata (zimon)
262+
cherrypy.tree.mount(mdHandler, '/metadata/update',
263+
{'/':
264+
{'request.dispatch': cherrypy.dispatch.MethodDispatcher()}
265+
}
266+
)
267+
# query for list configured zimon sensors
268+
cherrypy.tree.mount(mdHandler, '/metadata/sensorsconfig',
269+
{'/':
270+
{'request.dispatch': cherrypy.dispatch.MethodDispatcher()}
271+
}
272+
)
273+
261274
if args.get('port', None):
262275
bind_opentsdb_server(args)
263276
api = OpenTsdbApi(logger, mdHandler, args.get('port'))
@@ -281,18 +294,6 @@ def main(argv):
281294
{'request.dispatch': cherrypy.dispatch.MethodDispatcher()}
282295
}
283296
)
284-
# query to force update of metadata (zimon feature)
285-
cherrypy.tree.mount(api, '/api/update',
286-
{'/':
287-
{'request.dispatch': cherrypy.dispatch.MethodDispatcher()}
288-
}
289-
)
290-
# query for list configured zimon sensors
291-
cherrypy.tree.mount(api, '/sensorsconfig',
292-
{'/':
293-
{'request.dispatch': cherrypy.dispatch.MethodDispatcher()}
294-
}
295-
)
296297
# query for list of aggregators (openTSDB)
297298
cherrypy.tree.mount(api, '/api/aggregators',
298299
{'/':
@@ -316,19 +317,6 @@ def main(argv):
316317
args.get('rawCounters', False))
317318
exporter.endpoints.update(ENDPOINTS.get('prometheus',
318319
{}))
319-
320-
# query to force update of metadata (zimon feature)
321-
cherrypy.tree.mount(exporter, '/update',
322-
{'/':
323-
{'request.dispatch': cherrypy.dispatch.MethodDispatcher()}
324-
}
325-
)
326-
# query for list configured zimon sensors
327-
cherrypy.tree.mount(exporter, '/sensorsconfig',
328-
{'/':
329-
{'request.dispatch': cherrypy.dispatch.MethodDispatcher()}
330-
}
331-
)
332320
# query for all metrics (PrometheusExporter)
333321
cherrypy.tree.mount(exporter, '/metrics',
334322
{'/':
@@ -343,8 +331,9 @@ def main(argv):
343331
}
344332
)
345333
registered_apps.append("Prometheus Exporter Api listening on Prometheus requests")
334+
346335
profiler = Profiler(args.get('logPath'))
347-
# query for list configured zimon sensors
336+
# query for print out profiling report
348337
cherrypy.tree.mount(profiler, '/profiling',
349338
{'/':
350339
{'request.dispatch': cherrypy.dispatch.MethodDispatcher()}

0 commit comments

Comments
 (0)