x-openstack-request-id logged twice in logs

In the recent release of keystoneauth1 2.18.0 provision is made to log
x-openstack-request-id for session client. Once this new library is synced
in openstack projects, the x-openstack-request-id will be logged twice
on the console if session client is used.

For example,
$ cinder --debug list

DEBUG:keystoneauth:GET call to volumev2 for
http://10.232.48.204:8776/v2/61da9e4b59cf4920acc5e78438f93223/volumes/detail
used request id req-dcc22730-021e-468a-8b12-da7d58b573a7

DEBUG:cinderclient.client:GET call to volumev2 for
http://10.232.48.204:8776/v2/61da9e4b59cf4920acc5e78438f93223/volumes/detail
used request id req-dcc22730-021e-468a-8b12-da7d58b573a7

Above log will be logged twice on the console.

Removed logging of x-openstack-request-id in case of SessionClient as it
is already logged in keystoneauth1. x-openstack-request-id will only be
logged once on console if HTTPClient is used.

Depends-On: Id0693a9958d26162b7a2a40173ca28de2d3e4f62
Closes-Bug: #1657351

Change-Id: I0861212a38466d0e65cf3389c7d2757cff86ea0d
This commit is contained in:
Abhishek Kekane
2017-01-18 13:36:01 +05:30
committed by Dinesh Bhor
parent e04a4149f2
commit 6962056c67
2 changed files with 3 additions and 16 deletions

View File

@@ -115,10 +115,6 @@ class SessionClient(adapter.LegacyJsonAdapter):
raise_exc=False, raise_exc=False,
**kwargs) **kwargs)
# if service name is None then use service_type for logging
service = self.service_name or self.service_type
_log_request_id(self._logger, resp, service)
if raise_exc and resp.status_code >= 400: if raise_exc and resp.status_code >= 400:
raise exceptions.from_response(resp, body) raise exceptions.from_response(resp, body)

View File

@@ -101,11 +101,10 @@ class ClientTest(utils.TestCase):
cs = cinderclient.client.SessionClient(self, api_version='3.0') cs = cinderclient.client.SessionClient(self, api_version='3.0')
self.assertEqual('http://192.168.122.104:8776/', cs._get_base_url()) self.assertEqual('http://192.168.122.104:8776/', cs._get_base_url())
@mock.patch.object(cinderclient.client, '_log_request_id')
@mock.patch.object(adapter.Adapter, 'request') @mock.patch.object(adapter.Adapter, 'request')
@mock.patch.object(exceptions, 'from_response') @mock.patch.object(exceptions, 'from_response')
def test_sessionclient_request_method( def test_sessionclient_request_method(
self, mock_from_resp, mock_request, mock_log): self, mock_from_resp, mock_request):
kwargs = { kwargs = {
"body": { "body": {
"volume": { "volume": {
@@ -139,18 +138,15 @@ class ClientTest(utils.TestCase):
response, body = session_client.request(mock.sentinel.url, response, body = session_client.request(mock.sentinel.url,
'POST', **kwargs) 'POST', **kwargs)
self.assertIsNotNone(session_client._logger) self.assertIsNotNone(session_client._logger)
mock_log.assert_called_once_with(session_client._logger, mock_response,
mock.ANY)
# In this case, from_response method will not get called # In this case, from_response method will not get called
# because response status_code is < 400 # because response status_code is < 400
self.assertEqual(202, response.status_code) self.assertEqual(202, response.status_code)
self.assertFalse(mock_from_resp.called) self.assertFalse(mock_from_resp.called)
@mock.patch.object(cinderclient.client, '_log_request_id')
@mock.patch.object(adapter.Adapter, 'request') @mock.patch.object(adapter.Adapter, 'request')
def test_sessionclient_request_method_raises_badrequest( def test_sessionclient_request_method_raises_badrequest(
self, mock_request, mock_log): self, mock_request):
kwargs = { kwargs = {
"body": { "body": {
"volume": { "volume": {
@@ -185,13 +181,10 @@ class ClientTest(utils.TestCase):
self.assertRaises(exceptions.BadRequest, session_client.request, self.assertRaises(exceptions.BadRequest, session_client.request,
mock.sentinel.url, 'POST', **kwargs) mock.sentinel.url, 'POST', **kwargs)
self.assertIsNotNone(session_client._logger) self.assertIsNotNone(session_client._logger)
mock_log.assert_called_once_with(session_client._logger, mock_response,
mock.ANY)
@mock.patch.object(cinderclient.client, '_log_request_id')
@mock.patch.object(adapter.Adapter, 'request') @mock.patch.object(adapter.Adapter, 'request')
def test_sessionclient_request_method_raises_overlimit( def test_sessionclient_request_method_raises_overlimit(
self, mock_request, mock_log): self, mock_request):
resp = { resp = {
"overLimitFault": { "overLimitFault": {
"message": "This request was rate-limited.", "message": "This request was rate-limited.",
@@ -212,8 +205,6 @@ class ClientTest(utils.TestCase):
self.assertRaises(exceptions.OverLimit, session_client.request, self.assertRaises(exceptions.OverLimit, session_client.request,
mock.sentinel.url, 'GET') mock.sentinel.url, 'GET')
self.assertIsNotNone(session_client._logger) self.assertIsNotNone(session_client._logger)
mock_log.assert_called_once_with(session_client._logger, mock_response,
mock.ANY)
@mock.patch.object(exceptions, 'from_response') @mock.patch.object(exceptions, 'from_response')
def test_keystone_request_raises_auth_failure_exception( def test_keystone_request_raises_auth_failure_exception(