Merge "Add profiling support to neutronclient"
This commit is contained in:
commit
be6a1e1427
@ -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'))
|
||||
|
@ -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):
|
||||
|
||||
|
@ -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.
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user