Merge "Add profiling support to neutronclient"

This commit is contained in:
Jenkins 2017-02-24 16:09:54 +00:00 committed by Gerrit Code Review
commit be6a1e1427
4 changed files with 28 additions and 0 deletions

View File

@ -24,12 +24,15 @@ import os
import debtcollector.renames
from keystoneauth1 import access
from keystoneauth1 import adapter
from oslo_utils import importutils
import requests
from neutronclient._i18n import _
from neutronclient.common import exceptions
from neutronclient.common import utils
osprofiler_web = importutils.try_import("osprofiler.web")
_logger = logging.getLogger(__name__)
if os.environ.get('NEUTRONCLIENT_DEBUG'):
@ -151,6 +154,10 @@ class HTTPClient(object):
headers.setdefault('Content-Type', content_type)
headers['User-Agent'] = USER_AGENT
# NOTE(dbelova): osprofiler_web.get_trace_id_headers does not add any
# headers in case if osprofiler is not initialized.
if osprofiler_web:
headers.update(osprofiler_web.get_trace_id_headers())
resp = requests.request(
method,
@ -301,6 +308,10 @@ class SessionClient(adapter.Adapter):
headers = kwargs.setdefault('headers', {})
headers.setdefault('Accept', content_type)
# NOTE(dbelova): osprofiler_web.get_trace_id_headers does not add any
# headers in case if osprofiler is not initialized.
if osprofiler_web:
headers.update(osprofiler_web.get_trace_id_headers())
try:
kwargs.setdefault('data', kwargs.pop('body'))

View File

@ -15,6 +15,8 @@
import abc
import osprofiler.profiler
import osprofiler.web
from requests_mock.contrib import fixture as mock_fixture
import six
import testtools
@ -72,6 +74,14 @@ class TestHTTPClientMixin(object):
'Content-Type': 'application/json'}
self._test_headers(headers, body=BODY, headers=headers)
def test_osprofiler_headers_are_injected(self):
osprofiler.profiler.init('SWORDFISH')
self.addCleanup(osprofiler.profiler._clean)
headers = {'Accept': 'application/json'}
headers.update(osprofiler.web.get_trace_id_headers())
self._test_headers(headers)
class TestHTTPClient(TestHTTPClientMixin, testtools.TestCase):

View File

@ -0,0 +1,6 @@
---
features:
- |
Add osprofiler support to the neutronclient python binding.
If osprofiler is initiated, neutronclient sends a special HTTP
header that contains trace info.

View File

@ -9,6 +9,7 @@ mox3!=0.19.0,>=0.7.0 # Apache-2.0
mock>=2.0 # BSD
oslosphinx>=4.7.0 # Apache-2.0
oslotest>=1.10.0 # Apache-2.0
osprofiler>=1.4.0 # Apache-2.0
python-openstackclient>=3.3.0 # Apache-2.0
python-subunit>=0.0.18 # Apache-2.0/BSD
reno>=1.8.0 # Apache-2.0