Merge "Remove ceilometer from osprofile backend"

This commit is contained in:
Zuul 2020-05-22 09:55:58 +00:00 committed by Gerrit Code Review
commit 1aba8b2471
3 changed files with 9 additions and 32 deletions

View File

@ -642,7 +642,7 @@ in that dictionary are:
feature from older versions of osprofiler when OpenStack components could use
oslo.messaging for notifications and the trace client used ceilometer as a
receiver backend. By default Horizon uses the same URL pointing to a MongoDB
cluster for both purposes, since ceilometer was too slow for using with UI.
cluster for both purposes.
Example: ``"receiver_connection_string": "mongodb://%s" % OPENSTACK_HOST``.
.. _osprofiler documentation: https://docs.openstack.org/osprofiler/latest/user/integration.html#how-to-initialize-profiler-to-get-one-trace-across-all-services

View File

@ -15,9 +15,7 @@
import contextlib
import json
from urllib.parse import urlparse
from django.conf import settings
from osprofiler import _utils as utils
from osprofiler.drivers.base import get_driver as profiler_get_driver
from osprofiler import notifier
@ -50,35 +48,14 @@ def traced(request, name, info=None):
yield
def _get_engine_kwargs(request, connection_str):
from openstack_dashboard.api import base
engines_kwargs = {
# NOTE(tsufiev): actually Horizon doesn't use ceilometer backend (too
# slow for UI), but since osprofiler still supports it (due to API
# deprecation cycle limitations), Horizon also should support this
# option
'ceilometer': lambda req: {
'endpoint': base.url_for(req, 'metering'),
'insecure': settings.OPENSTACK_SSL_NO_VERIFY,
'cacert': settings.OPENSTACK_SSL_CACERT,
'token': (lambda: req.user.token.id),
'ceilometer_api_version': '2'
}
}
engine = urlparse(connection_str).scheme
return engines_kwargs.get(engine, lambda req: {})(request)
def _get_engine(request):
def _get_engine():
connection_str = horizon_settings.get_dict_config(
'OPENSTACK_PROFILER', 'receiver_connection_string')
kwargs = _get_engine_kwargs(request, connection_str)
return profiler_get_driver(connection_str, **kwargs)
return profiler_get_driver(connection_str)
def list_traces(request):
engine = _get_engine(request)
def list_traces():
engine = _get_engine()
fields = ['base_id', 'timestamp', 'info.request.path', 'info']
traces = engine.list_traces(fields)
return [{'id': trace['base_id'],
@ -86,7 +63,7 @@ def list_traces(request):
'origin': trace['info']['request']['path']} for trace in traces]
def get_trace(request, trace_id):
def get_trace(trace_id):
def rec(_data, level=0):
_data['level'] = level
_data['is_leaf'] = not _data['children']
@ -103,7 +80,7 @@ def get_trace(request, trace_id):
finished = child_finished
return _data, finished
engine = _get_engine(request)
engine = _get_engine()
trace = engine.get_report(trace_id)
data, max_finished = rec(trace)
data['info']['max_finished'] = max_finished

View File

@ -37,7 +37,7 @@ class Traces(generic.View):
@utils.ajax()
def get(self, request):
return api.list_traces(request)
return api.list_traces()
@urls.register
@ -46,4 +46,4 @@ class Trace(generic.View):
@utils.ajax()
def get(self, request, trace_id):
return api.get_trace(request, trace_id)
return api.get_trace(trace_id)